758fac3ab5eef74aa9e65db893dc2c413d084661
Build Service / build (push) Canceled after 0s
- Disambiguate duplicate (company, security) pairs in Carta exports: e.g. two 'Warrants' under BIP21 become 'Warrants' and 'Warrants (2)' - Tested against Fund II: 33 holdings, 41 positions (3 companies with duplicate tranches), zero errors - Frontend: graceful handling of 500 responses (shows status code instead of JSON parse crash)
Ten31Portal
Internal system of record for Ten31 entities, holdings, positions, and quarterly valuation sign-off.
Prerequisites
- Python 3.11+
- Node.js 20+
Backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e .
uvicorn ten31portal.main:app --reload --port 8000
Health check: GET http://localhost:8000/api/health
Frontend
cd frontend
npm install
npm run dev
Opens at http://localhost:5173. Proxies /api to the backend on port 8000.
Project structure
ten31portal/
backend/
ten31portal/ # FastAPI application
main.py # App object and health endpoint
config.py # Env-based configuration
pyproject.toml
frontend/
src/
App.tsx # Main component
main.tsx # Entry point
vite.config.ts
deploy/ # StartOS packaging (Issue 17)
SPEC.md # v1 issue specs
Languages
TypeScript
49.6%
Python
48.2%
Makefile
0.9%
Shell
0.4%
JavaScript
0.4%
Other
0.5%