This portfolio platform
The site you are reading. A bilingual portfolio with content served from Postgres, a small admin area, generated documents and versioned schema changes.
A portfolio that needs a developer for every content edit stops being updated. The first version also duplicated content across languages in ways that let the two drift apart, and the downloadable CV was a static file that went stale the moment the page changed.
Content lives in Postgres and is read through a public, read only path restricted to published rows, so the public site can never expose a draft. Editing happens in a small authenticated admin area rather than in code. Schema changes are applied as versioned migrations, which is what makes it safe to keep evolving the model.
Both languages come from the same records, with the active language carried through navigation so switching never drops the reader back to the default. The CV page and the downloadable document are generated from one shared data source, which means the file cannot drift from the page. Architecture diagrams for this section are generated from declarative specifications by a script, so all five stay visually identical and can be regenerated after any edit.
Stack
- Next.js
- TypeScript
- Supabase
- Postgres
- Tailwind CSS
- pdf-lib
- Vercel
Integrations
- Supabase Storage
- Vercel Analytics
Reading public content with a restricted key and a published only policy means the database enforces what is visible, not the application. A forgotten filter in a new query cannot leak an unpublished draft.
The diagrams are generated rather than drawn. Each one is a specification of nodes, lanes and connections that a script renders, which keeps a consistent visual language across every case study and makes a correction a one line change instead of a redraw.
02 — Next project
Let's map the route.
santiagovalenciavera@gmail.com · Open to senior roles and select projects