Skip to content

madboy482/RoomiePay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

213 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏠 RoomiePay 🏠

RoomiePay Dashboard

Split expenses, not friendships!

FeaturesScreenshotsTechnologiesInstallationProject StructureDatabase SchemaAPI EndpointsContributorsLicense


🌟 Overview

RoomiePay is a modern expense management and settlement application designed specifically for roommates, friends, and groups who share expenses. Stop worrying about who owes whom and how much - let RoomiePay handle the math!

"Living together is already complicated enough. Splitting the bills shouldn't be."

— RoomiePay Team


✨ Features

💰 Easy Expense Tracking

  • Add expenses quickly
  • Categorize and describe each expense
  • View transaction history

👫 Group Management

  • Create groups for different living arrangements
  • Invite roommates with a unique code
  • Track shared expenses within each group

⚖️ Smart Settlement System

  • Automatic calculation of who owes what
  • Optimize transactions to minimize payment count
  • Configurable settlement periods

💸 Seamless Payments

  • Integrated payment processing
  • Payment confirmation system
  • Complete payment history

🔔 Real-time Notifications

  • Get alerts when you need to pay someone
  • Receive notifications when you get paid
  • Stay updated on group activity

📸 Screenshots

Login Screen
Login Screen
Registration Screen
Registration Screen
User 1 Dashboard
User 1 Dashboard
User 2 Dashboard
User 2 Dashboard
Create Group
Creating a New Group
Join Group
Joining an Existing Group
User Settlements
Settlement Summary
Payment Success
Successful Payment

🛠️ Technologies Used

Frontend Backend Database
  • React
  • Tailwind CSS
  • Framer Motion
  • Axios
  • FastAPI
  • SQLAlchemy ORM
  • Pydantic
  • JWT Authentication
  • MySQL
  • Relational Schema
  • Transaction-safe

🚀 Installation

Backend Setup

# Navigate to backend directory
cd backend

# Install required packages
pip install -r requirements.txt

# Set up environment variables for database connection
# Edit .env file with your database credentials

# Run the FastAPI server
uvicorn backend:app --reload

Frontend Setup

# Navigate to frontend directory
cd frontend

# Install dependencies
npm install

# Start development server
npm start

📂 Project Structure

RoomiePay/
├── backend/
│   ├── backend.py                # Main FastAPI server implementation
│   ├── database.py               # Database connection configuration
│   ├── models.py                 # SQLAlchemy ORM models
│   ├── schemas.py                # Pydantic validation schemas
│   └── security.py               # Auth and security functions
│
├── frontend/
│   ├── public/                   # Static assets
│   │   └── index.html            # HTML entry point
│   │
│   └── src/                      # React application source
│       ├── App.js                # Main React application component
│       ├── index.js              # JavaScript entry point
│       ├── index.css             # Global styles
│       │
│       ├── components/           # React UI components
│       │   ├── Dashboard.js      # Dashboard view
│       │   ├── Group.js          # Group management 
│       │   ├── Login.js          # Authentication
│       │   ├── Notifications.js  # User notifications
│       │   ├── PaymentPortal.js  # Payment processing
│       │   ├── Settlements.js    # Settlements management
│       │   └── SettlementConfig.js # Settlement settings
│       │
│       └── services/
│           └── api.js            # API client for backend communication

📊 Database Schema

Entity Relationship Diagram

Key Tables

Users Table

Group Members Table

Settlements Table

Notifications Table


📡 API Endpoints

Endpoint Method Description
/register POST Register a new user
/token POST Get authentication token
/groups POST Create a new group
/groups GET Get user's groups
/groups/{group_id}/expenses GET Get group expenses
/expenses POST Create an expense
/groups/{group_id}/balances GET Get group member balances
/groups/{group_id}/finalize-splits POST Calculate and create settlements
/settlements/{settlement_id}/process-payment POST Process settlement payment
/notifications GET Get user notifications

💡 Smart Settlement Algorithm

RoomiePay uses an optimized debt-simplification algorithm to minimize the number of transactions needed to settle all debts within a group.


🔒 Authentication Flow

  1. Registration: Users create accounts with email and password
  2. Login: Users receive JWT token for authentication
  3. Protected Resources: All API endpoints (except registration and login) require valid JWT token
  4. Token Expiry: Tokens expire after a set period for security

🌈 UI/UX Features

  • Responsive Design: Works on mobile, tablet, and desktop
  • Intuitive Interface: Easy-to-understand expense tracking
  • Real-time Feedback: Instant notification of actions
  • Gradient Animations: Smooth color transitions for visual appeal
  • Modern Components: Clean, intuitive form elements and cards

📱 Mobile View

RoomiePay is fully responsive and works perfectly on mobile devices!


👨‍💻 Contributors


📄 License

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

MIT License

Copyright (c) 2025 RoomiePay Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

RoomiePay — Making shared living expenses simpler since 2025

© 2025 • RoomiePay Team

Releases

No releases published

Packages

 
 
 

Contributors