A Multi-Currency Expense Management Platform for International Communities
Features โข Tech Stack โข Getting Started โข API Documentation โข Contributing
- Overview
- Problem Statement
- Features
- Tech Stack
- Architecture
- Getting Started
- API Documentation
- Testing
- Project Structure
- Contributing
- License
FinterHub is a comprehensive expense management platform designed specifically for international students, foreign interns, and multicultural communities who share expenses across different currencies. The platform provides intelligent expense tracking, automatic currency conversion, and optimized debt settlement algorithms to simplify financial management in diverse groups.
Managing shared expenses becomes complex when participants use different currencies. FinterHub eliminates this complexity by:
- Automatic Currency Conversion: Real-time conversion to a base currency
- Smart Debt Simplification: Minimizes the number of transactions needed for settlement
- Flexible Split Options: Equal, percentage-based, or custom splits
- Comprehensive Reporting: Detailed expense tracking and settlement reports
- Secure & Scalable: Built with enterprise-grade security and scalability in mind
When people from multiple countries live or work together, expense management becomes complicated:
๐ช๐บ Person A pays rent in EUR
๐จ๐ฆ Person B pays groceries in CAD
๐ฎ๐ณ Person C pays utilities in INR
๐บ๐ธ Person D pays transportation in USD
Traditional Problems:
- Manual currency conversion is error-prone
- Unclear who owes whom and how much
- Multiple unnecessary transactions
- Timezone and exchange rate confusion
- Lack of transparent audit trails
FinterHub automates the entire process:
- Record expenses in any supported currency
- Convert automatically to base currency
- Calculate accurate balances for all members
- Simplify debts using graph algorithms
- Settle with minimum transfers
- Report with detailed PDF summaries
-
Multi-Currency Support
- Add expenses in INR, EUR, CAD, USD, and more
- Automatic conversion to group's base currency
- Historical exchange rate tracking
-
Flexible Expense Splitting
- Equal split among all members
- Percentage-based distribution
- Custom amount allocation
- Exclude specific members
-
Smart Debt Management
- Automatic balance calculation
- Debt simplification algorithm
- Minimum transfer optimization
- Settlement history tracking
-
Group Management
- Create and manage expense groups
- Invite members via email
- Role-based permissions
- Group activity logs
-
Authentication & Security
- JWT-based authentication
- Secure password hashing with bcrypt
- Role-based access control
- API rate limiting
-
Reporting & Analytics
- Monthly settlement reports
- Expense categorization
- Group spending analytics
- Export to PDF
-
Real-time Updates
- Socket.io integration (optional)
- Live balance updates
- Instant notifications
-
Developer-Friendly
- RESTful API design
- Comprehensive API documentation
- Docker containerization
- Extensive test coverage
| Technology | Purpose | Version |
|---|---|---|
| Node.js | Runtime Environment | 20.x |
| Express.js | Web Framework | 4.x |
| MongoDB | Database | 7.x |
| Mongoose | ODM | Latest |
| Redis | Caching & Sessions | 7.x |
| Technology | Purpose |
|---|---|
| JWT | Token-based Authentication |
| bcrypt | Password Hashing |
| express-rate-limit | API Rate Limiting |
| helmet | Security Headers |
| cors | Cross-Origin Resource Sharing |
| Technology | Purpose |
|---|---|
| Jest | Testing Framework |
| Supertest | HTTP Testing |
| ESLint | Code Linting |
| Technology | Purpose |
|---|---|
| Docker | Containerization |
| Docker Compose | Multi-container Orchestration |
| PM2 | Process Management |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Client Layer โ
โ (Client App / Mobile App / API) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ API Gateway Layer โ
โ (Express.js + Middleware + Rate Limiting) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ Auth โ โ Expense โ โ Group โ
โ Controller โ โ Controller โ โ Controller โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Business Logic Layer โ
โ (Currency Conversion + Debt Simplification) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โผ โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
โ MongoDB โ โ Redis โ โ File System โ
โ Database โ โ Cache โ โ (Logs) โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ
- MVC Architecture: Separation of concerns
- Repository Pattern: Data access abstraction
- Middleware Pattern: Request/response processing
- Factory Pattern: Object creation
- Singleton Pattern: Database connections
Before you begin, ensure you have the following installed:
- Node.js (v20.x or higher) - Download
- MongoDB (v7.x or higher) - Download
- Redis (v7.x or higher) - Download
- Git - Download
- Docker (optional) - Download
FinterHub/
โโโ backend/
โ โโโ config/
โ โ โโโ db.js # Database configuration
โ โโโ controllers/
โ โ โโโ auth.controller.js # Authentication logic
โ โ โโโ group.controller.js # Group management
โ โ โโโ expense.controller.js # Expense handling
โ โ โโโ settlement.controller.js # Settlement calculations
โ โโโ middleware/
โ โ โโโ auth.js # JWT authentication
โ โ โโโ errorHandler.js # Error handling
โ โ โโโ validator.js # Request validation
โ โโโ models/
โ โ โโโ user.model.js # User schema
โ โ โโโ group.model.js # Group schema
โ โ โโโ expense.model.js # Expense schema
โ โ โโโ settlement.model.js # Settlement schema
โ โโโ routes/
โ โ โโโ auth.route.js # Auth routes
โ โ โโโ group.route.js # Group routes
โ โ โโโ expense.route.js # Expense routes
โ โ โโโ settlement.route.js # Settlement routes
โ โโโ tests/
โ โ โโโ *.test.js # Test files
โ โโโ utils/
โ โ โโโ currency.js # Currency utilities
โ โ โโโ debtSimplification.js # Debt algorithm
โ โ โโโ logger.js # Logging utility
โ โโโ .env # Environment variables
โ โโโ .env.docker # Docker environment
โ โโโ Dockerfile # Docker configuration
โ โโโ package.json # Dependencies
โ โโโ server.js # Entry point
โโโ docker-compose.yml # Docker Compose config
โโโ .gitignore # Git ignore rules
โโโ LICENSE # MIT License
โโโ README.md # This file
We welcome contributions from the community! Here's how you can help:
-
Fork the Repository
git clone https://github.com/yourusername/FinterHub.git
-
Create a Feature Branch
git checkout -b feature/amazing-feature
-
Make Your Changes
- Write clean, documented code
- Follow existing code style
- Add tests for new features
-
Commit Your Changes
git commit -m "feat: add amazing feature" -
Push to Your Fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Describe your changes
- Reference any related issues
- Wait for review
We follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changestest:Adding testsrefactor:Code refactoringstyle:Code style changeschore:Maintenance tasks
- Use ESLint for JavaScript
- Follow Airbnb style guide
- Write meaningful variable names
- Add comments for complex logic
- Keep functions small and focused
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Splitwise and Tricount
- Built for international students and interns
- Special thanks to all contributors
- Email: support@finterhub.com
- GitHub Issues: Report a bug
- Documentation: Full API Docs
- โ Multi-currency expense tracking
- โ Group management
- โ Debt simplification
- โ JWT authentication
- โ Docker support
- ๐ Real-time exchange rate API integration
- ๐ Email/SMS notifications
- ๐ PDF report generation
- ๐ Advanced analytics dashboard
- ๐ Recurring expenses
- ๐ Budget limits and alerts
- ๐ Escrow payment integration
- ๐ Multi-language support
Made with โค๏ธ for the global community
โญ Star this repo if you find it helpful!
Report Bug โข Request Feature โข Documentation