Complexity: Medium
Scope: Build a portfolio page with positions table, yield summary cards, and a repayment timeline chart.
Implementation guidance: Use recharts for yield chart. Positions table shows asset name, funded amount, expected yield, due date, status.
Acceptance criteria: Portfolio page loads live data. Chart renders correctly. Empty state shown for new investors.
Files to create:
frontend/src/app/(dashboard)/portfolio/page.tsx
frontend/src/components/portfolio/PositionsTable.tsx
frontend/src/components/portfolio/YieldSummary.tsx
frontend/src/components/portfolio/RepaymentTimeline.tsx
frontend/src/hooks/usePortfolio.ts
Complexity: Medium
Scope: Build a portfolio page with positions table, yield summary cards, and a repayment timeline chart.
Implementation guidance: Use recharts for yield chart. Positions table shows asset name, funded amount, expected yield, due date, status.
Acceptance criteria: Portfolio page loads live data. Chart renders correctly. Empty state shown for new investors.
Files to create:
frontend/src/app/(dashboard)/portfolio/page.tsx
frontend/src/components/portfolio/PositionsTable.tsx
frontend/src/components/portfolio/YieldSummary.tsx
frontend/src/components/portfolio/RepaymentTimeline.tsx
frontend/src/hooks/usePortfolio.ts