{"id":28436645,"url":"https://github.com/vishalku03/cash-flow-minmiser","last_synced_at":"2026-04-30T16:31:30.420Z","repository":{"id":295393214,"uuid":"867647155","full_name":"vishalku03/Cash-Flow-Minmiser","owner":"vishalku03","description":"This is a program that allows users to split expenses with friends or colleagues. If a group needs to share the cost of a particular bill, the Cash Flow Minimiser will make sure that each person who paid money, gets reimbursed with the correct amount. This is also done using the minimum number of transactions.","archived":false,"fork":false,"pushed_at":"2025-09-16T09:13:48.000Z","size":177,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-16T11:43:34.157Z","etag":null,"topics":["css","dsa","graph","html","javascript","multiset","react"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vishalku03.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-04T13:05:21.000Z","updated_at":"2025-09-16T09:13:53.000Z","dependencies_parsed_at":"2025-05-25T10:33:20.579Z","dependency_job_id":"54e3f1ac-f087-4eb7-b315-44f0ade99cf9","html_url":"https://github.com/vishalku03/Cash-Flow-Minmiser","commit_stats":null,"previous_names":["vishalku03/cash-flow-minmiser"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vishalku03/Cash-Flow-Minmiser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalku03%2FCash-Flow-Minmiser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalku03%2FCash-Flow-Minmiser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalku03%2FCash-Flow-Minmiser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalku03%2FCash-Flow-Minmiser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vishalku03","download_url":"https://codeload.github.com/vishalku03/Cash-Flow-Minmiser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vishalku03%2FCash-Flow-Minmiser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32470879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["css","dsa","graph","html","javascript","multiset","react"],"created_at":"2025-06-05T22:39:54.333Z","updated_at":"2026-04-30T16:31:30.409Z","avatar_url":"https://github.com/vishalku03.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cash Flow Minimiser\r\n\r\n[![Live App](https://img.shields.io/badge/Live-App-00bfff)](https://cash-flow-minmiser.vercel.app)\r\n\r\nThis project allows users to **split expenses with friends or colleagues**.  \r\nIf a group needs to share the cost of a particular bill, the Cash Flow Minimiser ensures that **everyone who paid gets reimbursed correctly**.  \r\nIt also calculates the **minimum number of transactions** required to settle debts.\r\n\r\n---\r\n\r\n## Demo\r\n\r\nCheck the live app here: [https://cash-flow-minmiser.vercel.app](https://cash-flow-minmiser.vercel.app)\r\n\r\n\r\n\r\n## Installation\r\n\r\nClone the repository:  \r\n```bash\r\ngit clone https://github.com/vishalku03/Cash-Flow-Minmiser.git\r\ncd Cash-Flow-Minmiser\r\n\r\n\r\nCheck package.json file and ensure scripts are notated as below:\r\n\r\n```\r\n\"scripts\": {\r\n    \"start\": \"react-scripts start\",\r\n    \"build\": \"react-scripts build\",\r\n    \"test\": \"react-scripts test\",\r\n    \"eject\": \"react-scripts eject\"\r\n  },\r\n```\r\n\r\n\r\nDelete the node_modules folder and any 'lock' files such as \r\nyarn.lock or package-lock.json if present.\r\n\r\nInstall required packages\u003cbr/\u003e\r\n`npm install`\r\n\r\nRun the server\u003cbr/\u003e\r\n`npm start`\r\n\r\n## How does it work?\r\nApproach to solving this problem:\r\nFirst, we take in all the transactions and exchanges that have happened among the group of people. We use a function which is used to calculate every individual's net balance. \r\n\r\nBased on their net balances, we can segregate the people into 2 categories - \r\n\u003cul\u003e\r\n\u003cli\u003ethose under credit \u003c/li\u003e\r\n\u003cli\u003ethose under debit\u003c/li\u003e\r\n\u003c/ul\u003e\r\n\r\n\r\nHow Cash Flow Minimiser Works\r\n\r\nA person is classified under credit if their net balance is greater than 0, meaning they are owed money.\r\nSimilarly, a person falls under debit if their net balance is less than 0, meaning they owe money to others.\r\n\r\nIf a person’s net balance is 0, they are considered settled and do not participate in further transactions.\r\n\r\nExample\r\n--------\r\n\r\nSuppose Tarun pays ₹100 to Yash:\r\n\r\nTarun’s net balance becomes +100 → he is under credit and is to be reimbursed.\r\n\r\nYash’s net balance becomes -100 → he is under debit and needs to repay Tarun.\r\n\r\nOnce the transaction is completed, both their balances return to 0, meaning they are settled.\r\n\r\nSettlement Algorithm---\r\n---------------------\r\n\r\nFrom the list of debtors, select the person with the largest debit.\r\n\r\nFrom the list of creditors, select the person with the largest credit.\r\n\r\nSettle these two amounts against each other.\r\n\r\nRepeat this process for the next largest credit and debit until all individuals are fully settled.\r\n\r\nImplementation:\r\n-------------\r\n\r\nThis process is efficiently implemented using a Max Heap, which allows the algorithm to always pick the largest credit and largest debit at each step.\r\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c HEAD\r\nThis is the approach followed in the Cash F\r\n=======\r\nThis is the approach followed in the Cash Flow Minimiser to minimize the number of transactions needed to settle all balances.\r\n\u003e\u003e\u003e\u003e\u003e\u003e\u003e f7d83ee40df4abb4e0fd6fc006a983f30c8624a1\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalku03%2Fcash-flow-minmiser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvishalku03%2Fcash-flow-minmiser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalku03%2Fcash-flow-minmiser/lists"}