https://github.com/cskwrd/atm-machine
Web app for spliting expenses between friends... and enemies! 😲
https://github.com/cskwrd/atm-machine
Last synced: 3 months ago
JSON representation
Web app for spliting expenses between friends... and enemies! 😲
- Host: GitHub
- URL: https://github.com/cskwrd/atm-machine
- Owner: cskwrd
- License: agpl-3.0
- Created: 2022-12-22T02:09:39.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-16T22:58:31.000Z (over 2 years ago)
- Last Synced: 2025-01-19T15:34:00.979Z (5 months ago)
- Language: JavaScript
- Homepage:
- Size: 15.7 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
ATM Machine
Build with the MERN stack (MongoDB, Express, React and NodeJS).
Explore the docs »
View Demo
·
Report Bug
·
Request Feature

## MERN Stack Group Expense Splitting Application
* [Introduction](#introduction)
* [Key Features](#key-features)
* [Technologies used](#technologies-used)
- [Frontend](#frontend)
- [Backend](#backend)
- [Database](#database)
* [Configuration and Setup](#configuration-and-setup)
* [License](#license)## Introduction
Self-hosted expense splitting application for splitting expenses with friends... or enemies!
## Key Features
- Create user groups and track group expense
- Keep track of shared expenses and settle your corresponding balances in a convenient and personalized way.
- Get Analytical graphs to understand your expenditure trend
- Multiple user registration.
- Authentication using JSON web token (JWT)## Technologies used
This project was created using the following technologies.#### Frontend
- React JS
- Redux (for managing and centralizing application state)
- Axios (for making api calls)
- Material UI (for User Interface)
- Chart.js (To display various analytics graphs)
- React-chartjs-2
- Gravitar (for user profile picture)#### Backend
- Express
- Mongoose
- JWT (For authentication)
- bcryptjs (for data encryption)#### Database
MongoDB## Self-hosted Setup
To host this application yourself, the only supported option at this time is via `docker compose`.1. Clone this repo your docker host.
1. In a terminal window, navigate to the cloned repo.
1. Create `.env` file, by running: `echo "ATM_MACHINE_TOKEN_SECRET=$(head --bytes=256 /dev/urandom | base64 --wrap=0)" > .env`
1. Run: `docker compose -f docker-compose.yml up -d`
1. If successful, app will be available at: `http://:8090`## Dev Setup
In order to run this project locally, simply fork and clone the repository or download as zip and unzip on your machine.
- Open the project in your prefered code editor.
- Go to terminal -> New terminal (If you are using VS code)
- Split your terminal into two (run the client on one terminal and the server on the other terminal)In the first terminal
```
$ cd client
$ npm install (to install client-side dependencies)
$ npm start (to start the client)
```In the second terminal (*in the project root directory (back-end))
```
$ cd server
$ npm install (to install server-side dependencies)
```- Create a file named `.env`, in the `server` directory.
- Supply the following credentials
```
PORT=3001
MONGODB_URI=
ACCESS_TOKEN_SECRET=
```You can generate a secret key using node. Enter the below command in the terminal to genrate a random secret key:
```
node -e "console.log(require('crypto').randomBytes(256).toString('base64'));"
```Save the `.env` file and run:
```
$ npm start
```## Comment
I intend to keep adding more features to this application, so if you like it, please give it a star, that will encourage me to
to keep improving the project.## License
Licensed under the terms of the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html) as published by
the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
See [LICENSE](LICENSE) for more details.