A full-stack TypeScript + React financial advisor app powered by Claude AI. Track spending, set budgets, manage goals, and get personalized AI financial advice across 15+ countries.
| Feature | Description |
|---|---|
| π€ AI Advisor | Full conversational AI (Claude Opus) with real-time access to your financial data |
| π Smart Dashboard | Income, expenses, savings rate, daily spend with 6-month trend charts |
| πΈ Transaction Manager | Add, filter, delete transactions with full category system |
| π° Budget Tracking | Visual progress rings, over-budget alerts, spending by category |
| π― Financial Goals | Emergency fund, vacation, purchases β track & contribute |
| π‘ AI Insights | 8+ insight types: spending spikes, budget alerts, savings rates, goal risks |
| π 15 Countries | US, UK, Kenya, Nigeria, India, Germany, Japan, UAE, Singapore + more |
| π± Multi-Currency | USD, KES, GBP, NGN, INR, EUR, JPY, AED, SGD, etc. |
| π± Fully Responsive | Mobile, tablet, desktop β optimized for all screen sizes |
| π¨ Luxury Dark UI | Fraunces serif + Sora sans, gold accents, smooth animations |
- Node.js 18+
- An Anthropic API Key
git clone https://github.com/yourname/finwise.git
cd finwise
# Install all dependencies
cd backend && npm install
cd ../frontend && npm installcd backend
cp .env.example .envEdit .env:
ANTHROPIC_API_KEY=sk-ant-your-key-here
PORT=3001
FRONTEND_URL=http://localhost:5173
NODE_ENV=development# Option A: Run both together from root
cd finwise
npm install # installs concurrently
npm run dev
# Option B: Run separately
# Terminal 1:
cd finwise/backend && npm run dev
# Terminal 2:
cd finwise/frontend && npm run devVisit http://localhost:5173
finwise/
βββ package.json β Root monorepo config
βββ README.md
β
βββ backend/
β βββ .env.example β Copy to .env, add API key
β βββ .env β Your local config (gitignored)
β βββ package.json
β βββ tsconfig.json
β βββ src/
β βββ index.ts β Express server + middleware
β βββ types/
β β βββ index.ts β All TypeScript interfaces
β βββ services/
β β βββ financialService.ts β Calculations, seeded demo data, insights
β β βββ aiService.ts β Claude AI integration (15 countries)
β βββ routes/
β βββ ai.ts β POST /api/ai/chat, GET /api/ai/narrative
β βββ transactions.ts β Full CRUD /api/transactions/:userId
β βββ budgets.ts β /api/budgets + /api/insights
β βββ users.ts β GET/PUT /api/users/:userId
β
βββ frontend/
βββ index.html β Google Fonts: Fraunces + Sora
βββ vite.config.ts β Vite + proxy to :3001
βββ tailwind.config.js β Custom design tokens
βββ tsconfig.json
βββ src/
βββ main.tsx β Entry point
βββ App.tsx β Root component + navigation
βββ index.css β Design system: tokens, animations, components
βββ types/
β βββ index.ts β Shared TypeScript interfaces
βββ services/
β βββ api.ts β All API calls (fetch wrapper)
βββ utils/
β βββ categories.ts β Category icons, colors, currency helpers
βββ hooks/
β βββ index.ts β useUser, useSummary, useTransactions,
β useBudgets, useGoals, useInsights, useAIChat
βββ components/
βββ Layout/
β βββ Sidebar.tsx β Desktop sidebar with health score
β βββ TopBar.tsx β TopBar + MobileNav drawer + BottomTabBar
βββ Dashboard/
β βββ DashboardPage.tsx β Full dashboard page
β βββ StatCards.tsx β 4 animated KPI metric cards
β βββ SpendingChart.tsx β Area/Bar/Donut Recharts (switchable)
β βββ Widgets.tsx β Category breakdown + Recent activity
βββ AIAdvisor/
β βββ AIAdvisor.tsx β Full chat UI with quick prompts
βββ Transactions/
β βββ TransactionsPage.tsx β Table, CRUD modal, search & filters
βββ Budget/
β βββ BudgetPage.tsx β Budget cards with SVG progress rings
β βββ GoalsPage.tsx β Goal cards with contribute flow
βββ Insights/
β βββ InsightsPage.tsx β AI narrative + prioritized insight cards
βββ Settings/
βββ SettingsPage.tsx β Country/currency/profile/notifications
All endpoints are prefixed with /api.
| Method | Endpoint | Description |
|---|---|---|
| GET | /users/:userId |
Get user profile |
| PUT | /users/:userId |
Update user profile |
| Method | Endpoint | Description |
|---|---|---|
| GET | /transactions/:userId |
List transactions (supports filters) |
| POST | /transactions/:userId |
Create transaction |
| PUT | /transactions/:userId/:id |
Update transaction |
| DELETE | /transactions/:userId/:id |
Delete transaction |
Query params: category, type, from, to, limit, offset
| Method | Endpoint | Description |
|---|---|---|
| GET | /budgets/:userId |
List budgets with current spending |
| POST | /budgets/:userId |
Create budget |
| PUT | /budgets/:userId/:id |
Update budget |
| DELETE | /budgets/:userId/:id |
Delete budget |
| GET | /budgets/:userId/goals |
List goals |
| POST | /budgets/:userId/goals |
Create goal |
| PUT | /budgets/:userId/goals/:id |
Update goal |
| Method | Endpoint | Description |
|---|---|---|
| GET | /insights/:userId |
Get AI-generated insights |
| GET | /insights/:userId/summary |
Get financial summary |
| Method | Endpoint | Description |
|---|---|---|
| POST | /ai/chat |
Send message to AI advisor |
| GET | /ai/narrative/:userId |
Generate personalized AI summary |
| GET | /ai/countries |
List supported countries |
| Code | Country | Currency | Symbol |
|---|---|---|---|
| US | United States | USD | $ |
| GB | United Kingdom | GBP | Β£ |
| KE | Kenya | KES | KSh |
| NG | Nigeria | NGN | β¦ |
| ZA | South Africa | ZAR | R |
| IN | India | INR | βΉ |
| DE | Germany | EUR | β¬ |
| CA | Canada | CAD | C$ |
| AU | Australia | AUD | A$ |
| BR | Brazil | BRL | R$ |
| GH | Ghana | GHS | GHβ΅ |
| JP | Japan | JPY | Β₯ |
| SG | Singapore | SGD | S$ |
| AE | UAE | AED | AED |
| EG | Egypt | EGP | EΒ£ |
- Display: Fraunces (editorial serif for headings and values)
- Body: Sora (clean geometric sans for all UI text)
- Mono: JetBrains Mono (code and data values)
| Token | Value | Use |
|---|---|---|
--bg-primary |
#0A0A15 |
Main background |
--bg-card |
#16162A |
Card surfaces |
--gold |
#C9A84C |
Primary brand accent |
--success |
#34D399 |
Positive/income |
--danger |
#F87171 |
Negative/expense/alert |
--warning |
#FBBF24 |
Caution states |
--info |
#60A5FA |
Informational |
.card /* Base card with border and hover */
.btn-gold /* Primary CTA button with gradient */
.btn-ghost /* Secondary outlined button */
.input-field /* Form inputs with gold focus ring */
.badge-* /* Status badges (success, danger, warning) */
.gold-text /* Gradient text effect */
.progress-bar /* Base progress track */
.progress-fill /* Animated progress fill */cd backend
npm run build
npm startSet environment variables:
ANTHROPIC_API_KEYβ your Claude API keyFRONTEND_URLβ your deployed frontend URLPORTβ typically 3001 or set by platformNODE_ENV=production
cd frontend
npm run build
# Deploy the `dist/` folderUpdate vite.config.ts proxy target to your production API URL, or use an environment variable:
server: {
proxy: {
'/api': {
target: process.env.VITE_API_URL || 'http://localhost:3001',
}
}
}- Real database (PostgreSQL with Prisma)
- JWT authentication + multi-user support
- Bank account sync (Plaid / Open Banking)
- Real-time currency conversion
- PDF export for financial reports
- Mobile app (React Native)
- Recurring transaction detection
- Tax estimation by country
- Investment portfolio tracking
- SMS / email alerts
MIT License β free to use, modify, and distribute.
Built with β€οΈ using TypeScript, React, Express, and Claude AI by Anthropic.