1.3 KiB
1.3 KiB
Ten31Portal — v1 Issue Specs
Internal system of record for Ten31 entities, holdings, positions, and quarterly valuation sign-off. Replaces Carta for internal use. Self-hosted on StartOS.
Stack (baked in, override if you disagree)
- Backend: FastAPI, SQLModel, SQLite, Alembic migrations
- Frontend: React, Vite, Tailwind
- Auth: session cookies, server-side sessions, bcrypt or argon2 password hashing
- Money: stored as integer cents. Never float in the DB. Format to dollars only at the view layer.
- Dates:
investment_dateis a date. Valuation quarter is stored as a quarter-end date (e.g. 2026-06-30). - Packaging: StartOS 0.4.0 service, single data volume, platform backups cover the DB.
Conventions (every issue)
- One concern per commit. YAGNI. No speculative abstraction.
- Type hints everywhere. Pydantic/SQLModel for all shapes crossing a boundary.
- No PRs. Build directly.
- House style in any user-facing copy: short sentences, no hype, no em-dashes.
Scope guard for all of v1
In: entities, holdings, positions, valuation rounds, sign-off workflow, audit log, four roles, CSV import, three read views, one workflow view, StartOS packaging.
Out (phase 2, do not build): LP access and per-LP isolation, the partner / capital-account side (capital calls, allocations, K-1s), IRR / TVPI / DPI / RVPI computation, BTC or sats denomination, charts.