Files
ANDREW HOSFORD 0e8978f48c Update project files
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:59:48 -05:00

85 lines
3.6 KiB
Markdown

# req-planner
## What This Is
A standalone requirements management tool with interactive graph visualization, hierarchical decomposition, TMCS quality gates, and code traceability. Built as a general-purpose planning tool that connects to any repository. Used by a single developer to decompose project goals into traceable, testable requirements organized as a DAG.
## Core Value
Every requirement is traceable from abstract goal to code-level leaf with quality validation at every level — the requirements graph IS the code graph.
## Current Milestone: v2.0 Multi-Tenancy & User Accounts
**Goal:** Replace single shared password with individual user accounts, per-user workspaces, role-based access control, and project sharing.
**Target features:**
- User registration and login (individual accounts)
- Per-user project ownership and workspaces
- Role-based access control (owner, editor, viewer)
- Project sharing and collaboration
## Requirements
### Validated
<!-- Shipped in v1.0 and confirmed working -->
- ✓ Hierarchical requirement decomposition (pillars → requirements → sub-requirements → leaves) — v1.0
- ✓ Interactive DAG graph with Cytoscape.js + dagre layout — v1.0
- ✓ Semantic zoom (4 detail levels) — v1.0
- ✓ TMCS quality gates with auto/manual validation — v1.0
- ✓ Measurable gate enforcement (forced false without test spec) — v1.0
- ✓ Cross-pillar satisfaction links — v1.0
- ✓ Password-based authentication with JWT — v1.0
- ✓ Full CRUD for requirements, projects, links, layouts — v1.0
- ✓ Edit history with version snapshots and restore — v1.0
- ✓ Named graph layouts (save/load/default) — v1.0
- ✓ Canvas undo (Ctrl+Z, 20-state stack) — v1.0
- ✓ Dashboard with statistics — v1.0
- ✓ Gitea issue integration fields — v1.0
- ✓ Focus mode (shallow + deep) with state preservation — v1.0
- ✓ Multi-shortcut graph interactions (Click, Shift, Alt, Ctrl, Right-click) — v1.0
- ✓ Gitea badge on graph nodes — v1.0
- ✓ Detail panel with inline editing, history, links — v1.0
### Active
<!-- Current scope — v2.0 Multi-Tenancy & User Accounts -->
(Defining requirements)
### Out of Scope
- Real-time collaborative editing — complexity too high for v2, consider v3
- OAuth/SSO providers — email/password sufficient initially
- Mobile app — web-first
## Context
- Backend: Python 3.12+, FastAPI, SQLAlchemy 2.0, SQLite
- Frontend: Angular 17, Cytoscape.js, RxJS, SCSS dark theme
- Database: SQLite at data/planner.db with 5 tables (requirement_nodes, cross_pillar_links, projects, requirement_history, graph_layouts)
- Current auth: single shared password with JWT tokens (24h expiry)
- Gitea instance at theres-a-git-in-this-tea.andrewawesomo.net for issue tracking
- Currently single-user — all data shared, no user isolation
## Constraints
- **Tech stack**: Must stay FastAPI + Angular + SQLite — no database migration
- **Backwards compatible**: Existing data must survive the migration
- **Self-hosted**: Runs on user's own infrastructure, no cloud dependencies
## Key Decisions
| Decision | Rationale | Outcome |
|----------|-----------|---------|
| SQLite over PostgreSQL | Single-user simplicity, zero config | ✓ Good |
| JWT over sessions | Stateless, works with SPA | ✓ Good |
| Cytoscape.js for graph | Mature, supports semantic zoom | ✓ Good |
| localStorage for transient state | Fast, no backend round-trips | ✓ Good |
| Backend DB for durable state | Survives cache clear, device-independent | ✓ Good |
| Single password auth | Quick to implement for v1 | ⚠️ Revisit — replacing in v2 |
---
*Last updated: 2026-03-18 after v1.0 release*