← Back to Projects

Paisa Split

Money Manger in React Native

TypeScript Python JavaScript

PaisaSplit

The Smart Way to Split Expenses

A modern, full-stack expense tracking and bill splitting application built with React Native, Expo, and FastAPI.

Live Demo
Download App
PWA

React Native
Expo
FastAPI
MongoDB
TypeScript

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: tashif.codes/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 balances
  • POST /api/v1/transactions - Create new transaction
  • GET /api/v1/groups - Get user groups
  • GET /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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Tashif Ahmad Khan

Support