Skip to content

Daviegaza/Finwise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° FinWise β€” AI-Powered Global Financial Advisor

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.

FinWise Dashboard


✨ Features

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

πŸš€ Quick Start

Prerequisites

1. Clone & Install

git clone https://github.com/yourname/finwise.git
cd finwise

# Install all dependencies
cd backend && npm install
cd ../frontend && npm install

2. Configure Backend

cd backend
cp .env.example .env

Edit .env:

ANTHROPIC_API_KEY=sk-ant-your-key-here
PORT=3001
FRONTEND_URL=http://localhost:5173
NODE_ENV=development

3. Run Development Servers

# 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 dev

4. Open the App

Visit http://localhost:5173


πŸ“ Full Project Structure

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

🌐 API Reference

All endpoints are prefixed with /api.

Users

Method Endpoint Description
GET /users/:userId Get user profile
PUT /users/:userId Update user profile

Transactions

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

Budgets & Goals

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

Insights

Method Endpoint Description
GET /insights/:userId Get AI-generated insights
GET /insights/:userId/summary Get financial summary

AI

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

🌍 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Β£

🎨 Design System

Fonts

  • Display: Fraunces (editorial serif for headings and values)
  • Body: Sora (clean geometric sans for all UI text)
  • Mono: JetBrains Mono (code and data values)

Color Palette

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

Key Component Classes

.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 */

πŸ”§ Production Deployment

Backend (Railway / Render / Heroku)

cd backend
npm run build
npm start

Set environment variables:

  • ANTHROPIC_API_KEY β€” your Claude API key
  • FRONTEND_URL β€” your deployed frontend URL
  • PORT β€” typically 3001 or set by platform
  • NODE_ENV=production

Frontend (Vercel / Netlify)

cd frontend
npm run build
# Deploy the `dist/` folder

Update 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',
    }
  }
}

πŸ“ˆ Roadmap

  • 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

πŸ“„ License

MIT License β€” free to use, modify, and distribute.


Built with ❀️ using TypeScript, React, Express, and Claude AI by Anthropic.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages