A modern, feature-rich Finance Dashboard UI built with React 19, TypeScript, and a carefully crafted design system tailored for financial data. Powered by mock apis.
- Dashboard Overview — Get a high-level snapshot of your financial health with stat cards, charts, and recent transactions
- Wallet Management — Track your wallet balance and transaction history
- Accounts & Cards — Manage linked bank accounts and payment cards
- Settings — Customize preferences and account configuration
- Dark Mode — Full light/dark theme support
- Internationalization (i18n) — Multi-language support (English, Hindi, Kannada, Korean) powered by
i18next - Notifications — In-app notification panel
- Responsive Layout — Mobile-first, adapts seamlessly across screen sizes
- Accessible Components — Built on Radix UI primitives for WAI-ARIA compliance
| Category | Technology |
|---|---|
| Framework | React 19 |
| Language | TypeScript |
| Build Tool | Vite 7 |
| Routing | TanStack Router (file-based) |
| Data Fetching | TanStack Query |
| Styling | Tailwind CSS v4 |
| UI Primitives | Radix UI |
| Forms | React Hook Form + Zod |
| State Management | Zustand |
| Animations | Motion |
| API Client | Axios |
| Mocking | MSW (Mock Service Worker) |
| Testing | Vitest + Testing Library + Playwright |
| Storybook | Storybook 10 |
| Linting | ESLint 9 + TypeScript ESLint |
| i18n | i18next + react-i18next |
fin-mate/
├── public/
│ └── locales/ # i18n translation files (en, hi, kn, ko)
├── src/
│ ├── assets/ # Static assets (images, icons, fonts)
│ ├── components/ # Reusable UI components
│ │ ├── ui/ # Base shadcn-style components
│ │ ├── forms/ # Form components (Login, Signup)
│ │ ├── views/ # Page-level view components
│ │ └── ... # Feature components (Navigation, Header, etc.)
│ ├── configs/ # Axios client, React Query client config
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility libraries
│ ├── mocks/ # MSW API mock handlers
│ ├── queries/ # TanStack Query query definitions
│ ├── routes/ # File-based routes (TanStack Router)
│ │ ├── (auth)/ # Auth routes: Login, Signup
│ │ ├── (dashboard)/ # Protected app routes
│ │ │ └── app/
│ │ │ ├── dashboard/
│ │ │ ├── wallet/
│ │ │ ├── cards/
│ │ │ └── settings/
│ │ └── (public)/ # Public landing/home page
│ ├── schemas/ # Zod validation schemas
│ ├── store/ # Zustand global state
│ ├── stories/ # Storybook stories
│ ├── test/ # Test setup and utilities
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Helper utilities
├── design-system.md # Design system documentation
├── vite.config.ts
└── vitest.config.ts
# Clone the repository
git clone https://github.com/GouravNG/fin-mate.git
cd fin-mate
# Install dependencies
pnpm installCreate a .env file in the root directory:
VITE_API_BASE_URL="https://api.example.com"
VITE_ENABLE_MOCK=true# Start development server (runs on port 3000)
pnpm dev
# Build for production
pnpm build
# Preview production build
pnpm preview# Run all tests
pnpm test
# Run tests with UI
pnpm test:ui
# Watch mode
pnpm test:watch
# Generate coverage report
pnpm coverageComponent documentation and interactive playground:
# Start Storybook dev server (port 6006)
pnpm storybook
# Build static Storybook
pnpm build:storybookFin-Mate uses a custom design system optimized for financial UIs. See design-system.md for the full reference.
| Token | Font | Usage |
|---|---|---|
font-sans |
Geist | Body text, labels, navigation |
font-heading |
Prata | Page titles, section headers |
font-mono |
JetBrains Mono | All monetary values, numbers, IDs |
text-primary— Positive trends, CTAs (brand green)text-destructive— Negative values, errors, refundstext-foreground— Primary texttext-muted-foreground— Secondary labels and descriptions
Toggle the dark class on <html> — all color variables adapt automatically via CSS custom properties.
Supported languages out of the box:
| Code | Language |
|---|---|
en |
English |
hi |
Hindi |
kn |
Kannada |
ko |
Korean |
Translation files live in public/locales/{lang}/translation.json. The language switcher is available in the app UI.
| Script | Description |
|---|---|
pnpm dev |
Start dev server on port 3000 |
pnpm build |
TypeScript check + Vite production build |
pnpm preview |
Preview the production build locally |
pnpm lint |
Run ESLint |
pnpm test |
Run unit/integration tests with Vitest |
pnpm test:ui |
Run tests with Vitest UI |
pnpm coverage |
Generate test coverage report |
pnpm storybook |
Launch Storybook dev server |
pnpm build:storybook |
Build static Storybook |
This project is licensed under the terms of the LICENSE file.
Made with ❤️ by GouravNG