Files
ad/README.md
T

1.8 KiB

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.