Coder Social home page Coder Social logo

mihir09 / splitit Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 1.0 2.05 MB

SplitIt: A finance companion powered by Angular and Node.js. Effortlessly manage bills, streamline expense splitting, and settle balances within groups. With enhanced features like expense search and pagination, it's the ultimate tool for shared financial ease.

Home Page: https://splititapp.netlify.app/

License: Other

JavaScript 24.08% TypeScript 46.88% HTML 28.41% CSS 0.63%
angular expressjs jwt mongodb netlify nodejs bill-split-app bill-splitting expense-sharing expense-splitter

splitit's Introduction

SplitIt - Finance Management Application

SplitIt is a finance management application that simplifies the process of adding bills and splitting expenses among group members. Expense management including features for adding, updating, deleting expenses, and settling balances. With advanced functionalities for splitting Equally, Unequally, by Shares and by Percentages. SplitIt emerges as an ideal tool for efficient management of shared finances within a group.

Latest Feature: Invitation to join group

Overview

In this latest update, SplitIt introduces a new feature for sending invitations to existing users, providing them with the option to either accept or decline the invitation.

How it Works

  1. Invitation System: Users can send invitations to existing users to join their group.

  2. Accept or Decline Invitations: Receiving users have the option to either accept or decline the invitation.

Implementation in Action

  1. Invitation Sent

Invitation Sent

  1. Invitation Received

Invitation Received

Features

  • User Authentication: SplitIt provides user registration and login functionalities to ensure secure access to your finance management account.

  • Bill Management: Users can easily add, edit, and delete bills. Each bill can be associated with a description, amount, and the members involved in the expense.

  • Expense Splitting: SplitIt calculates how much each member owes or is owed based on the bills and the members involved. It simplifies the process of dividing expenses evenly with a participant-based splitting mechanism for spliting exclusively among involved members, guaranteeing a tailored and accurate financial management experience without impacting others. Introducing an advanced option for expense splitting – "Unequal Splitting." This feature allows users to customize the contribution of each participant individually, providing a more personalized and flexible approach to expense sharing. Users can specify the exact amount each member should contribute to the expense, enhancing the granularity and customization of financial arrangements within the group. Additionally, features like "Shares Split" and "Percentage Split" provide alternatives to determine contribution shares and percentages instead of exact amounts, further diversifying the options for users in managing shared expenses.

  • Balance Settlement: Users can settle balances among group members, making it easy to track who owes money and who is owed.

  • Validation: SplitIt incorporates validation mechanisms to ensure that the bills and expenses are correctly input and that calculations are accurate.

  • Expense Filter: Effortlessly locate expenses by utilizing our intuitive search bar and refine results further with a selectable date range, providing a seamless and tailored filtering experience.

  • Expense Pagination: Users can take control of thier expense list with our Pagination feature, allowing to view and manage expenses at thier own pace.

Technologies Used

  • Frontend (Angular): The frontend of SplitIt is built using Angular, a popular web application framework. Angular provides a robust structure for building dynamic and responsive user interfaces.

  • Backend (Node.js with Express): The backend of SplitIt is powered by Node.js, a server-side JavaScript runtime, and Express, a web application framework for Node.js. Together, they handle the server-side logic and API endpoints for the application.

  • MongoDB: SplitIt uses MongoDB, a NoSQL database, to store and manage data. MongoDB's flexibility and scalability make it a suitable choice for handling financial data.

  • JWT (JSON Web Tokens): JWT is used for user authentication and authorization in SplitIt. It provides secure and efficient access control to the application.

Setup Instructions

Frontend (Angular)

  • Navigate to the frontend directory:
    cd splitIt-app
  • Install dependencies:
    npm install
  • Start the Angular development server:
    ng serve

Open your browser and go to http://localhost:4200 to access the SplitIt frontend.

Backend (Node.js with Express)

  • Navigate to the backend directory:
    cd server
  • Install dependencies:
    npm install
  • Add .env file and paste following content in it:
    ACCESS_TOKEN_SECRET='123'
    REFRESH_TOKEN_SECRET='123'
  • Configure the MongoDB connection in server.js file in following code:
    mongoose.connect('mongodb://127.0.0.1:27017/SplitIt', {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    });
  • Start server:
    node server.js
    

Test the server's API by making requests to http://localhost:3000 using Postman or any other suitable endpoint testing platform.

For checking out without signup user either of following details to login:

Email: [email protected] Password: testuser1

or

Email: [email protected] Password: testuser2

Deployment

Launched website at https://splititapp.netlify.app/

Shifted to Cyclic.sh for hosting Backend server and Netlify for Frontend.

Future Steps and Improvements

SplitIt is an ongoing project, and there are several potential improvements and future steps:

  • Unequal Split: Implement backend logic and frontend options to enable unequal distribution of expenses.

  • Participants-based Split: Implement backend logic and frontend options to select members involved in participants.

  • Shares and Percentages Split: Implement backend logic and frontend options to enable unequal distribution of expenses by mentioning shares or percentages of involved participants.

  • Notifications: Add email or in-app notifications to keep users informed about their financial activities.

  • Expense Categories: Allow users to categorize expenses for better tracking.

  • Expense Modifications: Allow users to modify expenses and resolve balances based on that.

  • Reports and Analytics: Create visual reports and analytics for a better understanding of spending patterns.

  • Logs: Introduce activity logs to monitor all changes within the group.

Please feel free to contribute to the project or provide feedback to help us make SplitIt even better!

Thank you for using SplitIt!

Snap Shots

  1. Register Page

Register

  1. Register Validations

Register Validations

  1. Register Validations Ok

Register Validations Ok

  1. Login Page

Login

  1. Login Validations

Login Validations

  1. Login Validations Ok

Login Validations Ok

  1. Home

Home

  1. Create Group

Create Group

  1. Group

Group

  1. Group

Group

  1. Member Validations

Member Validations

  1. Member Added

Member Added

  1. Expense

Expense

  1. Member Splits

Member Splits

  1. Group Balance

Group Balance

  1. Expense Multiple User

Expense Multiple User

  1. Group Balance Multiple User

Group Balance Multiple User

  1. Settle Balance

Settle Balance

  1. Settle Balance Confirmation

Settle Balance Confirmation

  1. Settled Balance

Settled Balance

  1. Member Settled Balance

Member Settled Balance

  1. Home Group List

Home Group List

splitit's People

Contributors

mihir09 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

kunalmamgain

splitit's Issues

Expense Categories

Enhance expense tracking by introducing a categorized schema, empowering users to organize expenses more efficiently.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.