What this admin can do
A working demo of the editing workflow, built without a backend.
- Edit every project's case study, tags, category, image and featured flag with a live card + case-study preview.
- Edit services, the hero headline, positioning copy, stats and the about text.
- Save states are explicit: No changes, Unsaved changes, Saved. Unsaved edits warn before you leave.
- Open the public site in this browser to preview your saved edits; a banner marks them as unpublished.
- Export the full content as JSON for the rebuild step, or import JSON from a colleague.
Limits (please read)
Honest boundaries of a static-site admin.
- No authentication. This page is a demo; anyone with the URL can open it. Nothing here can change the live site for other visitors.
- No persistent storage. Edits live in this browser's localStorage only. To publish: Export → replace
content.json→ runtools/build.py→ redeploy. - New projects appear in the explorer preview but their case-study page exists only after the rebuild.
- Images are chosen from the dashboards already in
assets/img/portfolio/; uploading needs a host. - To make this real: Netlify Identity + Decap CMS, or a small API (Supabase/Firebase) behind a login. Both plug into the same JSON.
Projects
Live preview
Featured on the home page
Tick up to six. Order follows the project order; use the arrows to move a project up or down in the explorer.
Home page · featured grid preview
Services
Edit in place. Tags are comma separated.
Services grid preview
Export content.json
This is the single source the site is generated from. Replace content.json in the project folder with this, run python3 tools/build.py content.json site, and redeploy.
Download content.jsonDownload may be blocked in some embedded viewers; copy works everywhere.
Import
Paste JSON exported from this admin (or the repo's content.json). It is validated before anything is replaced.
Reset
Remove the browser-local draft and go back to the published content.
Sure?