Split bills, track expenses, and settle up with friends effortlessly.
Splitaa is a comprehensive expense splitting platform designed to help groups manage shared expenses efficiently. Whether it's a trip with friends, shared household bills, or group dining, Splitaa makes it simple to track who paid what and who owes whom.
- ๐ Secure Authentication - Email/password and Google OAuth via Clerk
- ๐ฅ Group Management - Create groups for trips, households, or events
- ๐ธ Expense Tracking - Add expenses with custom splits and categories
- ๐งฎ Smart Settlements - Optimized balance calculation and payment tracking
- ๐ Admin Dashboard - Comprehensive analytics and user management
- ๐ฑ Responsive Design - Works seamlessly on desktop and mobile
- ๐ซ QR Code Support - Generate and scan codes for quick group joining
The project consists of three main applications:
๐ฆ Splitaa
โโโ ๐จ Client (React + Vite) # User-facing web application
โโโ ๐ง Admin (Angular 20) # Admin dashboard and analytics
โโโ โ๏ธ Server (PHP + MySQL) # RESTful API backend
- Node.js 18+ and npm
- PHP 7.4+ with MySQL
- Apache/XAMPP or any PHP server
- Clerk Account (for authentication)
# 1. Clone the repository
git clone https://github.com/SN7k/Splitaa.git
cd Splitaa
# 2. Setup Backend
cd server
# Import database/schema.sql into MySQL
# Configure config/database.php with your credentials
# 3. Setup Client
cd ../client
npm install
# Create .env file with your Clerk key:
# VITE_CLERK_PUBLISHABLE_KEY=pk_test_your_key_here
# VITE_API_URL=http://localhost:8000/api
# 4. Setup Admin (Optional)
cd ../admin
npm install# Terminal 1 - Start Backend
cd server/public
php -S localhost:8000
# Terminal 2 - Start Client
cd client
npm run dev
# Access at http://localhost:5173
# Terminal 3 - Start Admin (Optional)
cd admin
npm start
# Access at http://localhost:4200Detailed guides available in the /doc folder:
- ๐ Quick Start Guide
- ๐ Clerk Authentication Setup
- ๐ Deployment Guide
- ๐ API Documentation
- ๐๏ธ Database Models
- ๐จโ๐ผ Admin Panel Guide
- React 18.3 - UI library
- Vite - Build tool and dev server
- React Router - Navigation
- Bootstrap 5 - UI framework
- Clerk - Authentication
- QR Code - Generate and scan QR codes
- PHP 7.4+ - Server-side language
- MySQL 5.7+ - Database
- JWT - Token-based authentication
- RESTful API - Clean architecture with MVC pattern
- Angular 20 - Progressive web framework
- TypeScript - Type-safe development
- Bootstrap - Responsive UI components
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/expenses- List all expensesPOST /api/expenses- Create expenseGET /api/expenses/{id}- Get expense detailsDELETE /api/expenses/{id}- Delete expense
GET /api/groups- List user groupsPOST /api/groups- Create new groupPOST /api/groups/{id}/add-member- Add member to group
GET /api/settlements- List settlementsPOST /api/settlements- Record paymentGET /api/settlements/calculate- Calculate balances
Full API documentation available in server/README.md
- โ Email/password and social login
- โ Add friends and manage friend list
- โ Create and join expense groups
- โ Track individual and group expenses
- โ Split expenses equally or custom amounts
- โ View balance with friends
- โ Record and track settlements
- โ Generate group invite QR codes
- โ User management dashboard
- โ Expense analytics and reports
- โ Group activity monitoring
- โ System health metrics
- โ Data export capabilities
- JWT-based authentication with secure token handling
- Password hashing using bcrypt
- CORS protection
- SQL injection prevention with prepared statements
- Environment-based configuration
- Secure OAuth implementation via Clerk
Splitaa can be deployed to various platforms:
- Client: Netlify, Vercel, or any static hosting
- Server: Traditional hosting (cPanel), Google Cloud, or Docker
- Database: MySQL, Aiven, or any MySQL-compatible service
Deployment guides available:
# Test backend API
curl http://localhost:8000/health
# Test authentication
# See doc/POSTMAN_TESTING_GUIDE.md for detailed API testingThis project is licensed under the MIT License.
Crafted with passion by a dedicated team:
- @SN7k - Team Lead | Full-Stack Developer (Frontend & Backend)
- @RAHUL - Frontend Developer
- @SAPTARSHI - Testing, Documentation & Research
Contributions, issues, and feature requests are welcome!
Made with passion for making expense splitting simple and stress-free! ๐
