PaisaSplit#
The Smart Way to Split Expenses
A modern, full-stack expense tracking and bill splitting application built with React Native, Expo, and FastAPI.
Features#
Smart Expense Management#
- Real-time expense tracking with multiple currency support
- OCR receipt scanning for automatic expense entry
- Group expense splitting with automatic balance calculation
- Detailed spending reports with visual analytics
Group Collaboration#
- Create and manage expense groups
- Add/remove group members seamlessly
- Real-time balance updates across all participants
- Group activity feed and notifications
Analytics & Insights#
- Monthly and yearly spending reports
- Category-wise expense breakdown
- Visual charts and trends
- Export capabilities for accounting
Security & Privacy#
- Secure user authentication
- Data encryption and privacy protection
- Offline-first architecture with sync
- GDPR compliant data handling
Multi-Platform Support#
- Native Mobile Apps (iOS & Android)
- Progressive Web App (PWA) for all devices
- Cross-platform synchronization
- Offline functionality
Quick Start#
Try It Now#
Web/PWA: paisa-split.tashif.codes
Download Apps: download/PaisaSplit
Local Development#
Prerequisites#
- Node.js 18+ and npm/yarn
- Python 3.11+
- MongoDB (local or cloud)
- Expo CLI
1. Clone the Repository#
git clone https://github.com/tashifkhan/PaisaSplit.git
cd PaisaSplit
2. Setup Frontend (React Native/Expo)#
cd app
npm install
# Start development server
npm run dev
# For web development
npm run build:web
3. Setup Backend (FastAPI)#
cd backend
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Setup environment variables
cp .env.example .env
# Edit .env with your MongoDB connection string
# Start the server
python run.py
4. Environment Configuration#
Create .env file in the backend directory:
MONGODB_URL=mongodb://localhost:27017/paisasplit
SECRET_KEY=your-secret-key-here
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
ALLOWED_HOSTS=["http://localhost:3000", "http://localhost:8081"]
Architecture#
Frontend (React Native + Expo)#
app/
├── (auth)/ # Authentication screens
├── (tabs)/ # Main app navigation
│ ├── (balance-page)/ # Balance management
│ ├── (groups-page)/ # Group management
│ ├── (activity-page)/ # Activity feed
│ └── (profile-page)/ # User profile & settings
├── components/ # Reusable UI components
├── constants/ # App constants & configuration
├── data/ # JSON data for demo/development
├── services/ # API services & data layer
├── types/ # TypeScript type definitions
└── utils/ # Utility functions
Backend (FastAPI + MongoDB)#
backend/
├── app/
│ ├── core/ # Core configuration & database
│ ├── models/ # Pydantic models & schemas
│ ├── routers/ # API route handlers
│ ├── services/ # Business logic layer
│ └── main.py # FastAPI application
├── requirements.txt # Python dependencies
└── run.py # Application runner
Tech Stack#
Frontend#
- Framework: React Native with Expo
- Language: TypeScript
- Navigation: Expo Router
- State Management: React Context + JSON data services
- UI Components: Custom components with React Native
- Charts: React Native Chart Kit
- Camera/OCR: Expo Camera + Tesseract.js
Backend#
- Framework: FastAPI
- Language: Python 3.11+
- Database: MongoDB with Motor (async driver)
- Authentication: JWT with python-jose
- API Documentation: Auto-generated with Swagger/OpenAPI
- Validation: Pydantic v2
Infrastructure#
- Database: MongoDB Atlas/Local
- Web Hosting: Vercel/Netlify (PWA)
- API Hosting: Railway/Heroku
- Mobile Distribution: App Store & Google Play
API Documentation#
Once the backend is running, visit:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
Key Endpoints#
GET /api/v1/balances- Get user balancesPOST /api/v1/transactions- Create new transactionGET /api/v1/groups- Get user groupsGET /api/v1/activities- Get activity feed
Testing#
Frontend Testing#
cd app
npm test
Backend Testing#
cd backend
pytest
Deployment#
Frontend (PWA)#
cd app
npm run build:web
# Deploy to Vercel, Netlify, or similar
Backend (API)#
cd backend
# Deploy to Railway, Heroku, or similar
# Ensure MongoDB connection is configured
Contributing#
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License#
This project is licensed under the MIT License - see the LICENSE file for details.
Author#
Tashif Ahmad Khan
- Website: tashif.codes
- GitHub: tashifkhan
- LinkedIn: in/tashif-ahmad-khan-982304244
Support#
- Issues: tashifkhan/PaisaSplit
- Email: [email protected]