Feature tracking organized by sprint. Each sprint groups related functionality into a focused deliverable.
- pnpm monorepo with workspace config
- Vite + React 19 + Tailwind CSS v4 + shadcn/ui
- TanStack Router (file-based routing)
- TanStack Query
- Convex with full schema
- Shared strict TypeScript config
- Ultracite linting + Lefthook git hooks
- Feature-based project structure with scoped TypeScript aliases
- Shared UI layer (
@shared/ui/,@shared/lib/)
- Install and configure
@convex-dev/auth - Email/password authentication (sign up, sign in, sign out)
- Auth-protected routes (redirect unauthenticated users to login)
- Login / Sign-up pages
- User menu in header (name, email, sign out)
- Link Convex
userstable to auth identity (auto-create user on first login) - Row-level security: scope all queries/mutations to authenticated user
- Auto-create default portfolio on first sign-up
- Portfolio CRUD (create, rename, delete)
- Portfolio switcher in sidebar/header
- Seed preset assets in Convex (EUR, USD, BTC, ETH, main ETFs/stocks)
- Base layout (sidebar, header, navigation)
- Toast notification system (success/error feedback on actions)
- Confirmation dialogs for destructive actions (delete)
- Platform CRUD (add/edit/delete financial institutions)
- Account CRUD (manage accounts within platforms)
- Position CRUD (manage asset holdings in accounts)
- Asset catalog with preset assets (EUR, USD, BTC, ETH, main ETFs/stocks)
- Custom asset creation (manual price)
- Asset list with columns: name, platform, category, type, quantity, average cost, total invested, current price, value, absolute perf, relative perf
- Loan management CRUD (name, initial amount, remaining principal, currency)
- Loan transaction system (payments, adjustments) with automatic remaining amount recalculation
- Linked loan payments — optionally debit a checking/savings account when recording a payment
- Cascade delete of loan transactions (including linked asset transactions)
- Transaction system (buy/sell/transfer/dividend/interest/fee)
- Transaction history per asset
- Automatic average cost calculation based on transactions
- Price API integration: Crypto (CoinGecko API)
- Price API integration: Stocks/ETF (Yahoo Finance or Alpha Vantage)
- Price API integration: Currencies (ExchangeRate-API or Frankfurter)
- Configurable reference currency (EUR by default)
- Automatic conversion of foreign currency assets
- Display value in reference currency
- Expanded preset asset catalog (~40 assets: crypto, US/EU stocks, ETFs, currencies, commodities)
- Live external asset search (CoinGecko + Yahoo Finance) with import-on-select
- Linked transactions between positions — optionally create counterpart transaction on a destination position (SELL→cash TRANSFER_IN, BUY→cash TRANSFER_OUT, transfers between same-asset positions, DIVIDEND/INTEREST→cash)
- Portfolio-wide transactions tab — all transactions across all positions in a single table (enriched with asset, platform, account metadata)
- Dedicated
/transactionspage with unified asset + loan transaction view, collapsible linked groups, and creation flow - Optional time field (HH:mm) on transactions for precise ordering within the same date
- Shared type models (
shared/model/) for cross-feature type reuse
- Main dashboard with gross wealth (total assets)
- Main dashboard with net wealth (assets - liabilities)
- Detailed view (full asset list)
- Aggregated view by category (Stocks, Crypto, Cash, etc.)
- Settings page with display currency preference
- Position-level currency for cost-basis (distinct from asset market-price currency)
- Aggregated view by platform
- Aggregated view by asset type
- Aggregated view by account type
- Total wealth evolution over time (line chart)
- Distribution by category (pie chart)
- Distribution by platform (pie chart)
- Performance by asset (bar chart)
- Stablecoin toggle on crypto positions — reclassifies stablecoins as cash in category allocation
- Automatic daily portfolio snapshots
- Sub-daily periodic snapshots (every 30 min, also triggered by price updates) with extended timeframes (5m/15m/1h/4h/12h/1D/1W–ALL)
- Snapshot data retention (cleanup after 30 days, preserve daily granularity)
- Recurring income tracking (salary, rent, dividends)
- Recurring expense tracking (rent, subscriptions, loans)
- Cash flow projection over X months
- Monthly cash flow visualization
- Define financial goals (e.g., "100k€ net worth")
- Progress tracking towards each goal
- Intermediate milestones
- Estimated achievement date based on trend
- Estimated property value (manual update)
- Rent received (if rental)
- Charges (property tax, condo fees, insurance)
- Gross and net yield calculation
- Link to associated loan
- Responsive design (overflow-x-auto tables, touch targets, flex-wrap pills)
- Dark mode (persisted to Convex, light/dark/system toggle)
- Empty states with onboarding CTAs (e.g., "Add your first platform")
- UI polish: premium color palette, KPI card icons, dropdown menus replacing red delete buttons
- Settings page restructured into card-based sections (Appearance + Display + Data Status)
- Settings page: Account section (profile info), Portfolio Overview (stats), Data Retention (policies), Danger Zone (portfolio deletion)
- Data status timestamps: per-source last price refresh and last snapshot in Settings + sidebar
- Currency conversion fix in hierarchy view
- Chart date bug fix (same-day snapshots use time labels)
- Chart tooltip labels and legend color fix
- Wealth Evolution view selector harmonized with Tabs component
- Removed redundant Performance by Asset chart from dashboard
- Redesigned aggregation views in Assets page (colored dots, thin bars, cleaner layout)
- Dropdown menu sizing and icon button touch targets improved
- Sidebar separator overflow fix
- Dedicated /analytics page with allocation (pie/treemap toggle) and performance treemap
- Consolidated analytics into /analytics page (removed Assets Analytics tab)
- Position creation UX: filter assets by account type (Brokerage → stocks only, CryptoWallet → crypto only, etc.)
- Position creation UX: delete saved/custom assets from combobox (with referential integrity checks)
- Position creation UX: price/currency mismatch warnings and reset controls
- Position creation UX: dynamic combobox group ordering (search results first when searching)
- Security hardening: auth on all endpoints, input validation on all mutations, cookie security flags, no console leaks
- TypeScript strict mode hardening:
exactOptionalPropertyTypes,noUncheckedIndexedAccess,noPropertyAccessFromIndexSignature— 0 errors across frontend + Convex backend - Dockerfile type checking:
tsc --noEmitfor frontend and Convex in Docker build stage - Landing page marketing (alpha testers recruitment, Astro static site)
- Landing page SEO optimization (meta tags, JSON-LD, sitemap, robots.txt, FAQ, keyword optimization)
- Legal pages: Privacy Policy (
/privacy) and Terms of Service (/terms) - CSV import — generic platform-agnostic importer with smart column auto-detection (EN/FR/NL/DE), ISIN resolution via Yahoo Finance, batch backend mutations, and entity resolution wizard
- Add Privacy Policy and Terms of Service links in the dashboard (Settings or footer) — needed before monetization
- Tests
- Documentation
- Custom date range zoom: allow selecting a custom period (start/end date) to zoom into on the Wealth Evolution chart
- Category filter toggle: enable/disable specific categories (e.g., show only Crypto) to filter what is displayed on the Wealth Evolution chart
- Edit/delete actions on unified
/transactionspage (asset + loan, with linked transaction cascade) - Column sorting on Asset List table
- Column sorting on Transactions table
- Filter bar for Asset List (by platform, category, currency)
- Date range filter for Transactions
- Column visibility toggle for Asset List (hide/show columns)
- Monthly P&L bar chart (performance by month)
- Historical allocation evolution (stacked area chart)
- Currency exposure breakdown
- Dividend/Interest income summary
- KPI cards — trend indicators (24h/7d change arrows or sparklines)
- Wealth Evolution chart — legend click to toggle series visibility
- Show total value per platform in the accordion header (next to account count)
- Show total value per account in the account card header
- Global search / command palette (Cmd+K)
- React Error Boundary at root level (catches render crashes, full-screen fallback)
- Position drill-down page/dialog (P&L chart + transaction history)
Future features to consider after MVP:
- Transitive currency conversion in
buildRateMap(e.g., USD→CHF via USD→EUR + EUR→CHF when no direct pair exists) CSV import from platforms→ Moved to Sprint 6 (done)- PDF/Excel report export
- Price alerts
- Rebalancing suggestions
- Benchmarking vs indices (S&P500, etc.)
- Tax reporting (capital gains calculation)
- Shared portfolios (invite other users to view/edit a portfolio)
- Multi-user mode (for commercialization)
- Mobile application (PWA or native)
- Dividend/Interest income dashboard and calendar
- Target allocation with deviation visualization and rebalancing suggestions
- Pagination / infinite scroll for large transaction lists
- AI-powered portfolio assistant — integrated AI agent that provides:
- Portfolio recap & summary (natural language overview of holdings, allocation, recent changes)
- Monitoring & alerts (anomaly detection, significant moves, drift from target allocation)
- Advisory insights (risk assessment, diversification suggestions, optimization tips)
- Projections & simulations (wealth trajectory forecasting, "what-if" scenario modeling)