Gianella Bejar.
Software EngineeringIn progressDraft copy · confirm everything

This website, in the open

A static-first, accessible, open-source portfolio with a human-reviewed publishing workflow.

My role
Design and build
Timeline
Nov 2026
Stack
Next.jsReactTypeScriptTailwind CSSMDXVercel
Links
GitHub ↗

Overview

The site you are reading is a project in its own right. It is built to be fast, accessible and easy to update, and its source is open so others can read or reuse it.

The problem

A portfolio goes stale. Updating it should take minutes, content should not be locked in a database or a web editor, and anything an AI helps draft should never publish without a person approving it.

Context and motivation

I wanted a site I could keep current while studying, and one that shows how I build, not only what I have built.

My role

Design, front end, content model, security review and deployment.

Approach

Content lives in Markdown and JSON files in the repository, validated by schemas at build time. A change goes through a pull request, so every update is reviewed and every change is in the history.

Technical architecture

Next.js with TypeScript and Tailwind, rendered ahead of time. Content is read from files. The only server code is a small contact-form endpoint. Notion drafts are pulled in by a script that writes proposed files for review; nothing is published automatically.

Implementation

See the repository's docs/ folder for the architecture, security model and publishing guide.

Trade-offs and decisions

OptionTrade-offChosen
Files in GitNo admin UI, but simple, reviewable and portableYes
Headless CMSFriendlier editing, but more moving parts and a new attack surfaceNo
Auto-publish from NotionFaster, but removes the human approval stepNo

Results and impact

In progress.

Lessons learned

To write.

What's next

Connect the Notion workflow, add real projects and writing, and launch on a custom domain.

Source code on GitHub (link to confirm).