Initial Daybook MVP

This commit is contained in:
peter 2026-06-10 15:48:19 +01:00
commit 3974276c9b
25 changed files with 1647 additions and 0 deletions

52
AGENTS.md Normal file
View file

@ -0,0 +1,52 @@
# AGENTS.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.
## Commands
- Install dependencies: `pip install -r requirements.txt`
- Run migrations: `python manage.py migrate`
- Start dev server: `python manage.py runserver`
- 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`
## OpenCode
This project is initialized with `opencode.json`, which loads this file as project instructions. After changing `opencode.json`, `.opencode/`, or this file, restart OpenCode so the updated instructions are loaded.