Investment Portfolio
Finance · React + Node (Express) · 21 @molecule/* packages
Robinhood-like portfolio dashboard with holdings, performance tracking, news, and watchlist — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (14)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Dashboard
/dashboard(signed in) - Holdings
/holdings(signed in) - AssetDetail
/assets/:symbol(signed in) - Watchlist
/watchlist(signed in) - Transactions
/transactions(signed in) - News
/news(signed in) - Settings
/settings(signed in) - Rebalance
/rebalance(signed in) - Reports
/reports(signed in)
Data model (11 tables)
- assets — id, symbol, name, asset_class, description, last_price_cents, market_price_cents, fifty_two_week_high_cents, …
- bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- holdings — id, user_id, account_id, symbol, name, asset_class, shares, avg_cost_cents, …
- investment_transactions — id, user_id, account, symbol, asset_name, kind, type, shares, …
- news_articles — id, title, source, summary, content, url, symbol, related_symbols, …
- notifications — id, createdAt, updatedAt, user_id, type, title, body, href, …
- target_allocations — id, user_id, asset_class, target_pct, created_at, updatedAt
- watchlist — id, user_id, symbol, name, asset_class, last_price_cents, day_change_pct, alert_direction, …
- notification_preferences — id, user_id, price_alerts, rebalance_drift, dividends_paid, tax_docs_ready, created_at, updated_at
- user_settings — id, user_id, advisor_email, tax_method, created_at, updated_at
API (8 handlers)
- holdings
api/src/handlers/holdings.ts - news
api/src/handlers/news.ts - notification-preferences
api/src/handlers/notification-preferences.ts - notifications
api/src/handlers/notifications.ts - reports
api/src/handlers/reports.ts - transactions
api/src/handlers/transactions.ts - user-settings
api/src/handlers/user-settings.ts - watchlist
api/src/handlers/watchlist.ts
Subscription tiers
free / pro / team — gated by: maxHoldings, maxNews, maxPerformance, maxTransactions, maxWatchlist, advancedFeatures, canExport, retentionDays
Built from 21 @molecule/* packages
@molecule/api-ai-anthropic@molecule/api-ai-summarization@molecule/api-ai-summarization-llm@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-payments-stripe@molecule/api-reporting-database@molecule/api-resource-bookmark@molecule/api-resource-notification@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-data-table@molecule/app-date-range-picker@molecule/app-notification-feed-react@molecule/app-sidebar-layout-react@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeilisearch API key
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing