Files
..

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.