A comprehensive financial tracking monorepo built with TypeScript, featuring a robust API backend and a cross-platform mobile application.
This monorepo contains four main packages:
- API (
apps/api): TypeScript Express.js server with MongoDB integration and external MI service connectivity - Web (
apps/web): Next.js dashboard application with internationalization support - Mobile (
apps/mobile): React Native Expo application for portfolio management - Types (
packages/types): Shared TypeScript types across all apps
- Node.js (v18 or higher)
- pnpm
- MongoDB
- Expo CLI (for mobile development)
# Clone the repository
git clone <repository-url>
cd fintrak
# Install dependencies
pnpm install
# Build shared packages
pnpm buildCreate .env files in apps/api:
MONGODB_URI=mongodb://localhost:27017/fintrak
JWT_SECRET=your-secret-key
MI_AUTH_UI=your-mi-auth-url
MI_API=your-mi-api-url
MI_USER=your-mi-username
MI_PASS=your-mi-password
PORT=3000
# AWS S3 Configuration (for media uploads)
AWS_REGION=eu-west-1
S3_BUCKET_NAME=fintrak-media-prod
AWS_ACCESS_KEY_ID=your-aws-access-key-id
AWS_SECRET_ACCESS_KEY=your-aws-secret-access-key# Start API development server
pnpm dev-api
# Start web dashboard
pnpm dev-web
# Start mobile app with Expo
pnpm dev-mobile
# Build all packages
pnpm build# Run linting across all packages
pnpm lint
# Fix linting issues
pnpm lint-fix
# Check formatting
pnpm format
# Auto-format code
pnpm format-fix- Framework: Express.js with TypeScript
- Database: MongoDB with Mongoose ODM
- Authentication: JWT-based auth middleware
- Documentation: Swagger/OpenAPI 3.0 at
/api/docs - External Integration: MI service client with retry logic
- Framework: Next.js 14 with App Router
- Internationalization: next-intl with English/Spanish support
- Styling: CSS Modules with design tokens
- Charts: Recharts for data visualization
- Features: Dashboard overview, budget tracking, banking, investments, reports
- Framework: React Native with Expo SDK
- Platforms: iOS, Android, Web
- State Management: React Context (Navigation, Portfolio, Theme)
- Architecture: Feature-based component organization
fintrak/
├── apps/
│ ├── api/ # Express.js API server
│ ├── web/ # Next.js dashboard app
│ └── mobile/ # React Native Expo app
├── packages/
│ └── types/ # Shared TypeScript definitions
└── biome.json # Code quality configuration
- Runtime: Node.js
- Language: TypeScript
- Package Manager: pnpm
- Monorepo: pnpm workspaces
- Code Quality: Biome (linting & formatting)
- Backend: Express.js, MongoDB, JWT
- Web: Next.js, React, next-intl, Recharts
- Mobile: React Native, Expo
- Documentation: Swagger/OpenAPI
- Swagger UI: https://pabloibanezcom.github.io/fintrak/
- View the complete API documentation without running the server locally
Once the API server is running, visit:
- Swagger UI: http://localhost:3000/api/docs
- OpenAPI Spec: http://localhost:3000/api/docs.json
To regenerate the OpenAPI specification after making changes to API routes:
cd apps/api
pnpm run generate-openapiThis will update the docs/openapi.json file used by GitHub Pages.
- Follow the established code style (Biome configuration)
- Use the monorepo scripts for consistency
- Ensure all packages build successfully
- Run linting and formatting before commits
ISC License - see package.json for details
Author: Pablo Ibanez