Skip to content

CodeTirtho97/SplitEase_frontend

Repository files navigation

🌟 SplitEase - Split Bills With Friends Easily 🌟

Next.js TypeScript Tailwind CSS MongoDB Node.js

SplitEase Logo

πŸ”₯ Effortlessly Split Bills, Track Expenses & Settle Payments with Friends πŸ”₯

Never have another awkward "who owes what" conversation again!

Live Demo

🎬 Demo & Screenshots

πŸ“± Mobile View
Mobile View
πŸ’» Desktop Dashboard
Desktop Dashboard

✨ Why SplitEase?

Have you ever found yourself stuck with a calculator trying to figure out who owes what after a dinner? Or chasing roommates for utility bills month after month? SplitEase solves all of that!

  • 🧠 Smart Splitting - Equal, percentage, or custom splits with just a few taps
  • πŸ” Crystal Clear - See who owes what at a glance
  • 🎯 Stay on Target - Track group expenses and settlement ratios
  • πŸ“± Anywhere, Anytime - Fully responsive across all devices

βœ… Feature Highlights

πŸ’Έ Expense Management

  • Multiple split methods (Equal, %, Custom)
  • Expense categorization
  • Receipt photo uploads
  • Recurring expense support

πŸ‘₯ Group Management

  • Create themed groups (Travel, Household, etc.)
  • Invite via email or in-app
  • Group statistics & insights
  • Activity tracking & history

πŸ“Š Visual Analytics

  • Category-based pie charts
  • Monthly spending trends
  • Settlement progress tracking
  • Customizable date ranges

πŸ’° Payment System

  • Multiple payment methods
  • Settlement verification
  • Payment request notifications
  • Transaction history

πŸ” Secure Authentication

  • JWT with HTTP-only cookies
  • Google OAuth integration
  • Password reset functionality
  • Account management

✨ User Experience

  • Smooth animations with Framer Motion
  • Intuitive UI/UX design
  • Dark/light theme support
  • Responsive across all devices

πŸ”¨ Technology Stack & Architecture

πŸ—οΈ Architecture Overview

graph TD
    User[User] --> Frontend[Frontend: Next.js]
    Frontend --> API[Backend API: Express.js]
    API --> MongoDB[(MongoDB Database)]
    API --> Auth[Authentication Service]
    API --> CloudStorage[Cloud Storage: Cloudinary]

    subgraph "Frontend Components"
        Frontend --> Components[UI Components]
        Frontend --> ContextAPI[React Context API]
        Frontend --> Hooks[Custom Hooks]
    end

    subgraph "Backend Services"
        API --> ExpenseService[Expense Service]
        API --> GroupService[Group Service]
        API --> UserService[User Service]
        API --> PaymentService[Payment Service]
    end
Loading

🎭 Frontend (This Repository)

View detailed tech stack
Category Technologies
Framework Next.js 15 with App Router
Language TypeScript
Styling TailwindCSS with custom animations
State Management React Context API
Authentication JWT with HTTP-only cookies
Data Visualization Chart.js with react-chartjs-2
Animations Framer Motion
Icons FontAwesome
HTTP Client Axios
Form Management React Hook Form

🧠 Backend

View backend tech stack
Category Technologies
Runtime Node.js
Framework Express.js
Database MongoDB with Mongoose
Authentication JWT, Google OAuth
Cloud Storage Cloudinary (for profile images)
API Documentation Swagger/OpenAPI

πŸ‘‰ View Backend Repository

πŸš€ Getting Started

Requirements

  • Node.js 18+ installed
  • npm or yarn package manager
  • MongoDB instance (local or Atlas)

Quick Start

  1. Clone & Install

    # Clone the repository
    git clone https://github.com/your-username/splitease-frontend.git
    cd splitease-frontend
    
    # Install dependencies
    npm install
  2. Configure Environment

    # Create .env.local file
    cp .env.example .env.local
    
    # Edit your environment variables
    nano .env.local
  3. Start Development Server

    npm run dev
  4. Open Browser

    http://localhost:3000
    

πŸ—οΈ Project Structure

View folder structure
πŸ“‚ SplitEase-Frontend
β”œβ”€β”€ πŸ“‚ app/                      # Next.js App Router pages
β”‚   β”œβ”€β”€ πŸ“‚ auth/                 # Authentication-related pages
β”‚   β”œβ”€β”€ πŸ“‚ dashboard/            # User dashboard
β”‚   β”œβ”€β”€ πŸ“‚ expenses/             # Expense management
β”‚   β”œβ”€β”€ πŸ“‚ groups/               # Group management
β”‚   β”œβ”€β”€ πŸ“‚ payments/             # Payment processing
β”‚   β”œβ”€β”€ πŸ“‚ profile/              # User profile
β”‚   └── πŸ“„ layout.tsx            # Root layout component
β”œβ”€β”€ πŸ“‚ components/               # Reusable UI components
β”‚   β”œβ”€β”€ πŸ“„ Button.tsx            # Custom button component
β”‚   β”œβ”€β”€ πŸ“„ ExpenseModal.tsx      # Expense creation modal
β”‚   β”œβ”€β”€ πŸ“„ Navbar.tsx            # Navigation component
β”‚   └── ... (20+ components)
β”œβ”€β”€ πŸ“‚ context/                  # React Context providers
β”‚   β”œβ”€β”€ πŸ“„ authContext.tsx       # Authentication context
β”‚   β”œβ”€β”€ πŸ“„ groupContext.tsx      # Group management context
β”‚   └── ... (4 contexts)
β”œβ”€β”€ πŸ“‚ public/                   # Static assets
β”œβ”€β”€ πŸ“‚ utils/                    # Utility functions
β”‚   └── πŸ“‚ api/                  # API client functions
└── πŸ“‚ types/                    # TypeScript type definitions

πŸ§ͺ Testing & CI

Running Tests

npm test                  # run all tests
npm run test:watch        # watch mode
npm run test:coverage     # with coverage report
npm run type-check        # TypeScript check

Test files live under __tests__/ and use Jest + React Testing Library:

Suite Coverage
utils/formatCurrency all currencies, string/NaN input, unknown codes
utils/constants every exported array and object
components/ErrorBoundary render, error fallback, custom fallback, refresh button

CI Pipeline (GitHub Actions)

Every push and pull request to master runs four jobs in sequence:

Lint β†’ Type Check β†’ Tests (+ coverage artifact) β†’ Build

Set the NEXT_PUBLIC_API_URL repository secret for the Build step.

Vercel Deployment

No build command changes needed β€” Vercel auto-detects Next.js and runs next build.
Add NEXT_PUBLIC_API_URL under Vercel β†’ Settings β†’ Environment Variables.


🀝 Contributing

Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

How to contribute
  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

🎨 UI/UX Highlights

  • Intuitive Interfaces with minimal learning curve
  • Micro-interactions for user engagement
  • Animated transitions for seamless navigation
  • Mobile-first approach with responsive layouts
  • Consistent design language across all components

πŸ›£οΈ Roadmap

  • Native Mobile App using React Native
  • Push Notifications for real-time updates
  • Currency conversion based on real-time exchange rates
  • Expense scanning with OCR technology
  • Budget planning and expense forecasting
  • Group expense suggestions with AI

πŸ“« Contact & Support

LinkedIn GitHub Twitter

πŸ“„ License

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

Made with ❀️ by CodeTirtho97

Happy Bill Splitting!

About

🌟 SplitEase Frontend - React/Next.js expense splitting app with real-time updates, smart bill splitting, group management & beautiful UI. Split bills effortlessly with friends! πŸ’Έβœ¨

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages