Molodetz

Blog roll of the Molodetz community. Quiet, serif, slightly provocative. Posts are markdown in SQLite, written by retoor through an admin area. Flyers and memes are galleries. Join is a real sign-up form ("I'm in"). The whole site is in English; the old Dutch paths (/rol, /standaard, /mensen, /binnen, /voorwaarden) redirect with 301.

Built to the frozen DPP template (/workspace/dpp/dptemplate.md). See SELECTION.md for the module choice and COMPLIANCE.md for the review.

Running

make install          # venv in .venv, pip install -e ".[dev]", Chromium, git hooks
cp .env.example .env  # only when there is no .env yet; chmod 600 .env
make dev              # http://127.0.0.1:8088, reload
make prod             # workers, pinned static version

Without make:

.venv/bin/python -m uvicorn molodetz.main:app --host 127.0.0.1 --port 8088

The first start creates the administrator from MOLODETZ_ADMIN_USERNAME / MOLODETZ_ADMIN_EMAIL / MOLODETZ_ADMIN_PASSWORD in .env, seeds the placeholder posts once and syncs the gallery. A one-time migration (system.migrate.english) translates content seeded by older Dutch versions. Log in at /auth/login, admin at /admin.

Testing

make test         # unit + api + e2e (Playwright, headless)
make test-headed  # visible with slow motion
make check-ui     # six static gates + em-dash + json_error order
make preflight    # import, pyflakes, JS syntax, sqlglot lint, check-ui
make coverage
make locust-headless

CLI

molodetz --help: roles, API keys, posts list/import (.md and .pdf via pypdf), join requests, backups, prunes, sql-lint, emoji regenerate.

Data

Everything lives under data/ (database molodetz.db, uploads, backups, keys, locks). .env and data/ are in .gitignore.

S
Description
Molodetz (Absurd Development) community blog roll, FastAPI on the DPP template
Readme
9.6 MiB
Languages
Python 74.7%
HTML 10.5%
JavaScript 7.7%
CSS 5.5%
Makefile 1%
Other 0.5%