Files
projax/CLAUDE.md
mAi 2df9e1b13f docs: refresh project CLAUDE.md for post-Phase-1 state
- Drop the "Open design questions (Phase 1)" section — answered in
  docs/design.md.
- Replace "Tech stack: TBD by inventor" with the actual stack
  (Go + pgx + html/template + HTMX, msupabase schema projax, Dokploy).
- Replace "Worker preferences: inventor / coder shifts" with the
  current state (PRD landed, Phase 1 implementation underway, Phase 2
  and 3 deferred per docs/design.md).
- Point readers at docs/design.md as the live spec, and add a layout
  map so a fresh agent knows where each concern lives.

No code touched; this is the last commit in the Phase 1 branch before
merge to main per head's review (msg #1775).
2026-05-15 13:27:32 +02:00

3.2 KiB

projax — Project Instructions

Purpose

Data backbone for m's complete self-management — projects (digital + physical + strategic + life themes), tasks, lifecycle, milestones. Multiple interfaces consume it. No interface is canonical; each is a view.

Memory group_id: projax Live spec: docs/design.md (PRD, schema, migration plan, deferred phases)

Architecture principles

  1. Model first, interfaces second. The data model is the asset; UIs are replaceable.
  2. First-class non-code projects. Greenhouse construction, household chores, career positioning, sport goals — same model as code projects.
  3. No CLI required. m has explicitly opted out of CLI-first. Interfaces are visual / API / Otto-mediated.
  4. Subsumes existing scattered state. mai.projects (adapter view today), Gitea issues, CalDAV tasks, mBrian topics. Migration not greenfield isolation.
  5. Otto is a consumer, not an owner. Otto-PWA renders projax data; otto coordinates work based on projax; otto does not define projax.

Tech stack (Phase 1)

  • Backend: Go single binary. pgx for Postgres. html/template + HTMX (CDN), no JS build step. Static assets and migrations bundled with embed.
  • Database: msupabase, schema projax (new). View projax.items_unified reads across projax.* + mai.projects. RLS off for v1 (single-user, Tailscale-only).
  • Hosting: Dokploy on mlake, domain projax.msbls.de, Tailscale-only.
  • Tests: go test ./... against SUPABASE_DATABASE_URL (skips when unset).

Layout

cmd/projax/        main entrypoint (pool, migrate, serve)
db/                migrations (embedded) + runner + integration tests
store/             pgx-backed data access
web/               handlers, templates, static
deploy/dokploy.yaml reference manifest for projax.msbls.de
docs/design.md     PRD — the source of truth for behaviour

Branch strategy

  • main = production-deployable
  • feat/* / fix/* — short-lived
  • No dev branch initially (small project)
  • --no-ff merges to main

Status

  • PRD landed (docs/design.md, 2026-05-15) — schema, lifecycle, interface contracts settled.
  • Phase 1 underway: schema + path trigger + adapter view + Go server + tree/detail/new/classify pages + Docker/Dokploy + README all on a feature branch.
  • Phase 2 (CalDAV + Gitea ingest) and Phase 3 (Excalidraw / MCP / Otto-PWA) are scoped in docs/design.md but not started.

When a phase-1 follow-up surfaces (auth, hiding mai.projects test rows, mBrian topic-hub auto-link, …), file it against docs/design.md §8 first, then split into commits.

Out of scope (still)

  • Multi-user
  • Mobile-first / responsive (desktop browser + Otto-PWA cover)
  • Public exposure
  • Generic SaaS-product instincts
  • CLI surface (m has explicitly opted out)

Refs

  • docs/design.md — live spec (this is the source of truth)
  • mai.projects schema (msupabase) — primary current state (read-only adapted via projax.items_unified)
  • mBrian conventions (topic-hub pattern) — relevant for non-code project tracking, deferred to Phase 3
  • otto session 2026-05-15 — inventory of where project data lives today, justifying this project's existence
  • ~/.claude/CLAUDE.md § Git Strategy, Channel Routing, Memory Protocol