Build with assetsDir: '_/assets' so hashed assets land under frontend-build/_/assets/ and favicon.ico (from frontend/public) at the build root, then serve the whole build directory at the site root again (frontend.route(app, "/"), cached="/_/assets/"). The explicit favicon route is dropped — the Frontend serves it as an ordinary unhashed (no-cache) file. Manifest paths now carry the _/assets/ prefix, so views.py only prepends a slash.
Pagerite
A single-user CMS/blog. FastAPI serves HTML rendered in Python with html5tagger, content is persisted in a kanta database and rendered on the fly per request. Vue is used only for interactive bits (the editing tools), not for the public pages.
Running
uv run pagerite # serves the built frontend
uv run scripts/devserver.py # dev mode with auto reloads (no build needed)
The database lives in pagerite.kanta in the working directory
(PAGERITE_DB overrides). On startup, demo pages from pagerite/seed.py
are added only if missing.
Editing
Click the 🖊️ pen on any page: the article pen opens the page editor (Markdown with live server-rendered preview over a WebSocket), the banner pen opens the site editor (site brand, banner HTML, and the page structure tree). Everything saves immediately — no save buttons.
See docs/design-principles.md for the design and AGENTS.md for the
development conventions.