Kikomiko Admin CMS (self-hosted) Stack: Python 3 stdlib + SQLite + HTML/CSS/vanilla JS. No CDN, no npm. START cd admin python3 server.py --port 8090 First run prints a one-time admin password and writes it to data/.admin-credentials (gitignored). Override with env: ADMIN_USER=admin ADMIN_PASS='your-strong-pass' python3 server.py Open http://127.0.0.1:8090/ FEATURES - Login (PBKDF2 password hash, HttpOnly session cookie, CSRF, login rate limit) - Categories CRUD - Products CRUD (matches storefront catalog fields) - Import site category tree (seed_categories.json) - Import products from catalog.dedupe2.json / uploaded catalog JSON - Export active catalog to ../dist/data/catalog.dedupe2.json - Fetch / sync hooks via admin/fetchers/*.py (see example_json.py) LARGE CATALOG IMPORT (recommended for 100MB+ dumps) python3 import_catalog.py /path/to/catalog.json --export Docker / VPS: docker cp catalog.json kikomiko-admin-1:/tmp/catalog.json docker exec kikomiko-admin-1 python3 import_catalog.py /tmp/catalog.json --export SECURITY NOTES - Bind is 127.0.0.1 by default. Do not expose without TLS + reverse proxy. - Change the generated password after first login. - Keep data/*.db and data/.admin-credentials private.