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.