mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.6 KiB
3.6 KiB
Quickstart: Family Office UI Redesign
Feature: 008-fo-ui-redesign
Branch: 008-fo-ui-redesign
Prerequisites
- Node.js ≥22.18.0
- Docker (for PostgreSQL and Redis)
- At least one parsed K1 document in the database (for testing portfolio analysis integration)
Setup
# 1. Start dev infrastructure
docker compose -f docker/docker-compose.dev.yml up -d
# 2. Install dependencies
npm install
# 3. Run database migrations
npx prisma migrate dev
# 4. Seed the database (if fresh)
npx prisma db seed
# 5. Start the API (terminal 1)
npx nx serve api
# 6. Start the client (terminal 2)
npx nx serve client
The client runs at http://localhost:4200 and the API at http://localhost:3333.
Auth Token
Use this token for API testing:
3a99343a9f099119cf2c297fe082de12e656e6291cd6a45b4b128f775e0898af4e5141e1c032b1ff64d12efde3c0a31d4c9c1cc1022f64ec9dc4e88dbcc8f318
Verification Workflow
P1: Portfolio Analysis + K1 Data
- Navigate to http://localhost:4200/portfolio
- Verify the analysis page shows family office performance metrics (IRR, TVPI, DPI, RVPI)
- Verify K1 income summary card shows income categories
- Verify entity-level breakdown table appears
- If no K1 data exists, verify the empty state guides to K-1 Import
P2: Navigation Restructure
- After login, verify the header shows 5 top-level items: Dashboard, Partnerships, K-1 Center, Analysis, Admin
- Click "Partnerships" — verify dropdown shows Entities, Partnerships, Distributions, Portfolio Views
- Click "K-1 Center" — verify dropdown shows K-1 Import, K-1 Documents, Cell Mapping
- Navigate to a legacy page via URL (e.g., /home/holdings) — verify it still loads
P3: Dashboard Landing
- Navigate to http://localhost:4200/ — verify redirect to /family-office
- Verify dashboard shows AUM, allocations, portfolio metrics, K1 income summary, recent distributions
- If no data, verify onboarding guide appears
P4: Legacy Pages
- Navigate to Admin > Legacy section
- Verify Overview, Holdings, Summary, Markets, Watchlist, FIRE, X-Ray are all accessible
API Endpoints for Testing
# Dashboard data
curl -H "Authorization: Bearer $TOKEN" http://localhost:3333/api/v1/family-office/dashboard
# Portfolio summary (entity-level performance)
curl -H "Authorization: Bearer $TOKEN" http://localhost:3333/api/v1/family-office/portfolio-summary
# Asset class summary
curl -H "Authorization: Bearer $TOKEN" http://localhost:3333/api/v1/family-office/asset-class-summary
# Activity (K1 income ledger)
curl -H "Authorization: Bearer $TOKEN" http://localhost:3333/api/v1/family-office/activity
# Report
curl -H "Authorization: Bearer $TOKEN" "http://localhost:3333/api/v1/family-office/report?period=quarterly&year=2025"
Key Files to Modify
| File | Change |
|---|---|
apps/client/src/app/components/header/header.component.html |
Restructure nav to 5 grouped items |
apps/client/src/app/components/header/header.component.ts |
Add mat-menu properties for nav groups |
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts |
Inject FamilyOfficeDataService, fetch K1 data |
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.html |
Add FO metrics sections |
apps/client/src/app/pages/family-dashboard/dashboard-page.component.ts |
Add portfolio summary + K1 income sections |
apps/client/src/app/app.routes.ts |
Change wildcard redirect to family-office |
libs/ui/src/lib/k1-income-summary/ |
NEW: K1 income breakdown card component |
libs/ui/src/lib/nav-menu-group/ |
NEW: Grouped nav item with mat-menu dropdown |