Skip to content

Repository files navigation

Portfoli-YOU

A portfolio builder that runs in your browser. Assemble a personal site from drag-and-drop widgets, style it with a theme you can override, and publish it — or export a plain static site and host it yourself. No code required, and no lock-in if you want to write some.

Status: early development. Nothing here is usable yet.


What this repo is

The web builder, rebuilt. It supersedes PortfoliYOU-APP, which was an Electron desktop app.

That first version is a working prototype and the reference for the target shape — its data model, widget contract and theme system all carry forward. What does not carry forward is an architecture built around a desktop shell. See PLAN.md for the audit of what survives and why.

Why web, not desktop

A portfolio is a public artefact. Its whole purpose is to be seen, which makes "local-first, your data never leaves your machine" a weak pitch for this product specifically. The ownership promise that actually matters is the static export, and that works identically in a browser.

Against that, desktop costs signed installers on three platforms, an update channel, platform-specific bug reports and a second QA pass on every release. Distribution argues the same way: a URL converts a curious visitor immediately; an installer asks them to commit before they have seen anything.


The idea in one paragraph

A project is stored as data, not code. Widgets emit a normalised node tree, and each framework target renders that tree once. Nine widgets across four targets is thirteen implementations rather than thirty-six, adding a widget does not tax every target, and the editor canvas becomes another consumer of the same tree — so what you see while editing cannot drift from what gets emitted.

It also makes changing a project's framework re-emission rather than translation: lossless for anything the builder generated, lossy only for code you hand-edited, which is exactly what the conversion warning can name.


The five stages

  1. Create — name it, set site metadata, favicon pack, security contact, theme and target framework.
  2. Organise — add, rename, reorder and delete pages, each with its own route, metadata and breakpoints.
  3. Compose — drag widgets onto a canvas; move, resize and snap them.
  4. Edit — three depths per widget: a generated settings form, the widget as copyable JSON, or the real emitted source (with eject and un-eject).
  5. Deploy — download a zip free with no account, or publish to GitHub Pages, Vercel, Netlify or a Portfoli-YOU subdomain.

Framework targets

Target Output Phase
static HTML + CSS + a small vanilla JS bundle 1 — the default
react-ts Vite + React + TypeScript 2
next Next.js App Router, SSG 3
go html/template + net/http 4

Status

Nothing is implemented in this repo yet. PLAN.md carries the full architecture, the data-model deltas, the build order and the open questions — chiefly whether the Behaviour abstraction generalises, which the carousel and contact-form widgets are the stress tests for.

Contributing

Issues and pull requests are welcome once there is code to change. Until then, the most useful contribution is disagreement with PLAN.md — the node-tree decision is load-bearing and worth arguing about before it is built.

Licence

MIT.

Author

Ethan Townsend (@snxethan) — started as a semester project at Neumont College of Computer Science, grew into a capstone.

About

Portfoli-YOU: a portfolio builder that runs in your browser. Drag-and-drop widgets, framework targets, full code access.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages