Splitzy is a modern expense sharing platform that simplifies splitting bills and managing shared expenses with friends, roommates, and groups. Whether you're sharing dinner costs, splitting rent, or managing group travel expenses, Splitzy makes it easy to track who owes what and settle up seamlessly.
- π₯ Group Management: Create and manage expense groups with multiple participants
- πΈ Easy Expense Tracking: Add expenses with customizable splitting options
- π Smart Calculations: Automatic calculation of who owes whom and how much
- π Multiple Split Types:
- Equal splits
- Custom amounts
- Percentage-based splits
- Share-based splits
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- π³ Settlement Tracking: Keep track of payments and settle debts
- π Expense Analytics: Visual insights into spending patterns
- π Secure Authentication: Safe and secure user authentication
- π§ Notifications: Email reminders for pending expenses and settlements
- Frontend: [Add your frontend tech - e.g., React, Vue.js, Angular]
- Backend: [Add your backend tech - e.g., Node.js, Python, Java]
- Database: [Add your database - e.g., MongoDB, PostgreSQL, MySQL]
- Authentication: [Add auth method - e.g., JWT, OAuth]
- Deployment: [Add deployment platform - e.g., Vercel, Heroku, AWS]
- Node.js (v14 or higher)
- npm or yarn
- [Database system] installed and running
-
Clone the repository
git clone https://github.com/shubhamashish33/Splitzy.git cd Splitzy -
Install dependencies
# Install backend dependencies npm install # Install frontend dependencies (if separate) cd client npm install cd ..
-
Environment Setup
# Copy environment template cp .env.example .env # Edit .env with your configuration nano .env
-
Database Setup
# Run database migrations npm run migrate # Seed initial data (optional) npm run seed
-
Start the application
# Development mode npm run dev # Production mode npm run start
The application will be available at http://localhost:3000
- Sign up or log in to your account
- Click "Create Group" on the dashboard
- Add group members by email
- Start adding expenses!
- Select your group
- Click "Add Expense"
- Enter expense details (amount, description, date)
- Choose how to split the expense
- Save and notify group members
- View your balance in any group
- Click "Settle Up" to record payments
- Choose payment method and amount
- Confirm settlement
POST /api/auth/register - Register new user
POST /api/auth/login - User login
POST /api/auth/logout - User logout
GET /api/auth/me - Get current user
GET /api/groups - Get user's groups
POST /api/groups - Create new group
GET /api/groups/:id - Get group details
PUT /api/groups/:id - Update group
DELETE /api/groups/:id - Delete group
POST /api/groups/:id/members - Add member to group
GET /api/groups/:id/expenses - Get group expenses
POST /api/groups/:id/expenses - Create new expense
PUT /api/expenses/:id - Update expense
DELETE /api/expenses/:id - Delete expense
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Write clean, documented code
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage# Build the image
docker build -t splitzy .
# Run the container
docker run -p 3000:3000 splitzy- Set production environment variables
- Build the application:
npm run build - Start the production server:
npm run start
Create a .env file in the root directory:
# Database
DATABASE_URL=your_database_url
DB_HOST=localhost
DB_PORT=5432
DB_NAME=splitzy
DB_USER=your_username
DB_PASSWORD=your_password
# Authentication
JWT_SECRET=your_jwt_secret
SESSION_SECRET=your_session_secret
# Email (for notifications)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password
# Application
NODE_ENV=development
PORT=3000
CLIENT_URL=http://localhost:3000- Mobile app (React Native/Flutter)
- Receipt scanning with OCR
- Multiple currency support
- Expense categories and budgeting
- Integration with banking APIs
- Advanced analytics and reporting
- Recurring expenses
- Expense approval workflows
Q: How are expenses calculated? A: Splitzy automatically calculates the optimal way to settle debts, minimizing the number of transactions needed.
Q: Can I use Splitzy offline? A: Currently, Splitzy requires an internet connection. Offline support is planned for future releases.
Q: Is my financial data secure? A: Yes, we use industry-standard encryption and security practices to protect your data.
- π Issues: GitHub Issues
- π Documentation: Wiki
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Splitwise and similar expense sharing apps
- Thanks to all contributors who have helped improve Splitzy
β If you find Splitzy helpful, please give it a star on GitHub!