A fictional finance dashboard built with React and TypeScript. Used as a training/demo project for financial dashboard development patterns.
- React 19 + TypeScript 5 (strict mode)
- Vite 6 — dev server and build
- Tailwind CSS 4 — styling
- Vitest 3 + React Testing Library — unit and component tests
- MSW 2 — API mocking in tests
Requires Node.js >= 20. Use nvm to match the pinned version:
nvm use
npm install
npm run dev| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Type check + production build |
npm run preview |
Preview production build |
npm run test |
Run tests in watch mode |
npm run test:run |
Run tests once (CI) |
npm run typecheck |
TypeScript type check |
npm run lint |
ESLint (warnings as errors) |
src/
├── components/ # React components
├── hooks/ # Custom hooks
├── types/ # TypeScript types (generated from OpenAPI)
├── utils/ # Utility functions (e.g. currency formatting)
└── test/ # MSW handlers and server setup
docs/
└── api/
└── openapi.yaml # FinEdge Accounts API spec
The app consumes the FinEdge Accounts API (mocked in tests via MSW). See docs/api/openapi.yaml for the full spec.
Key endpoints:
GET /v1/accounts/{accountId}— account balance and metadataGET /v1/accounts/{accountId}/transactions— paginated transaction list
Amounts are in minor units (pence/cents). Supported currencies: GBP, USD, EUR.
GitHub Actions runs on every push and PR to main:
- TypeScript type check
- Vitest test suite