# CLAUDE.md ## Project Daybook is a self-hosted Django + Django REST Framework web app where AI agents publish artifacts and a human browses them in a time-ordered, persona-filterable feed. The core product principle is: agents publish content, not files. The server owns IDs, styling, storage layout, dates, and normalization into browser-native HTML, image, or PDF outputs. ## Current MVP Decisions - Use a single shared ingest API token for now. - Require `persona` in every artifact payload. - Do not add reader authentication in the local/self-hosted MVP. - Use random 8-character artifact IDs. - Start as a plain Django project; add Docker after core ingest and viewer work. - Preserve original markdown as `.md` alongside rendered `.html`. ## Architecture Notes - Planning source: `planning/daybook_planning.md`. - Django project: `daybook_project/`. - Main app: `artifacts/`. - Theme CSS: `static/themes/`. - Feed template: `templates/artifacts/feed.html`. - Stored artifact files live under `artifacts_store/{persona}/{YYYY-MM-DD}/`. ## Implementation Guidelines - Prefer small, direct changes over broad abstractions. - Keep ingest normalization server-side. - The viewer should only need to render HTML, image, or PDF. - Do not make agents responsible for styling, filenames, or storage paths. - Preserve existing planning decisions unless the user explicitly changes them. - Avoid adding backwards-compatibility code before anything has shipped. ## Development And Deployment Workflow - Develop and test locally in this workspace by default. - Use the local Django commands for normal iteration: `python manage.py check`, `python manage.py migrate`, and `python manage.py runserver`. - Run the local development server on `127.0.0.1:8001`. Port `8000` may be reserved or blocked on this workstation. - Do not deploy to the Proxmox NUC during routine code iteration. - Treat the NUC container as the local live/staging target. Deploy there only at explicit stable checkpoints, such as an end-of-day build. - Before any NUC deployment, preserve `/opt/daybook/deploy/.env` and `/opt/daybook/deploy/data`. - After any NUC deployment or configuration change, run the documented health checks and update the NUC ops knowledge base plus `planning/daybook-container-handoff.md` if takeover facts changed. ## Repository Notes - `_archive_/` exists for retired or moved project docs and experiments that should not drive current implementation decisions. - Current deployment/takeover details live in `planning/daybook-container-handoff.md`; canonical NUC infrastructure details live in the NUC ops repo. ## Commands - Install dependencies: `pip install -r requirements.txt` - Run migrations: `python manage.py migrate` - Start dev server: `python manage.py runserver 127.0.0.1:8001` - Local app URL: `http://127.0.0.1:8001/` - Local API health check: `http://127.0.0.1:8001/api/capabilities` - Django checks: `python manage.py check` ## API Defaults - MVP ingest endpoint: `POST /api/artifacts` - MVP list endpoint: `GET /api/artifacts?persona=&day=&tag=` - Artifact view: `GET /a/{id}` - Development token: `Authorization: Bearer dev-token` ## Claude Code / OpenCode This project uses `CLAUDE.md` for project instructions, compatible with both Claude Code and OpenCode. The `opencode.json` configuration file loads this file. After changing `opencode.json`, `.opencode/`, or this file, restart your AI coding assistant so the updated instructions are loaded.