j1z4-org

j1z4.org

A keyboard-first portfolio presented as a terminal workspace. It follows the supplied desktop and mobile mockups while keeping native browser semantics underneath the command-line interaction layer.

The entire UI is set in Departure Mono from the font/ folder. Spacing is one line (1lh) or one column (1ch), the same discrete grid a terminal uses.

Run locally

npm install
npm run dev

Copy .env.example to .env and set ADMIN_TOKEN before using the editor.

Interaction map

Every destination also remains reachable using links, Tab, Shift+Tab, Enter, and standard browser navigation. Color themes and code syntax colors share the same CSS token set.

Backend

Content lives in a document store (Cloudflare D1 when bound, otherwise an in-memory store seeded from lib/content/seed.ts). Add articles, projects, pages, or a new collection without changing the layout.

Method Path Auth Purpose
GET /api/site public Assembled public site
GET /api/docs/:collection/:slug public One published document
GET /api/docs?collection= admin List documents, including drafts
POST /api/docs admin Create a document
PUT /api/docs/:collection/:slug admin Create or update
DELETE /api/docs/:collection/:slug admin Delete
POST /api/subscribe public Newsletter signup
POST /api/messages public Contact form
GET /api/messages admin Inbox

Admin console: /admin. Send Authorization: Bearer <ADMIN_TOKEN>.

To add a new section, create documents in any collection and a nav document whose data.path points at it, for example /photos. Numbers 19 follow nav sort order.