A simple to use budgeting app.
Budgeting app which is as simple to use as possible and which shows users how to keep track of their finances and save a percentage of their monthly income.
App must be easy and simple to use, requiring as few clicks, decisions and inputs as possible.
Scope to add tips/suggestions for improvements & social/game-ified content once MVP is achieved to high standard.
MVP:
-
Landing page with pitch (simple infographic) and Call to Action (get started)
-
User can input income
-
User can input expenses
-
User can choose from several savings rate options, each with associated weekly spend amounts:
10% savings rate = £X Weekly Spend | 15% = £Y Weekly Spend | 20% = £Z Weekly Spend
-
User sign up - this will come after the tool to allow them to save their work.
To provide an extremely simple framework to help users create a budget so they can control their finances, build long-term financial resilience and save towards their goals.
Users who are inexperienced in personal financial matters, lacking information/education. Specifically younger people: teens, students, early 20s, etc.
Dev team:
Logo Design:
Joe Carter -->
Function | Tech |
---|---|
Database Dev | PostgresSQL Local |
Database Prod | PostgresSQL AWS |
Server framework | Express.js |
Server engine | NodeJS |
Client framework | React SPA |
App format | Docker container |
App host | AWS Kubernetes |
CI/CD | TravisCI |
No# | Section | Requirement | Status | Priority | Comments | Owner |
---|---|---|---|---|---|---|
1 | General Design | Designed mobile first | Signed off | MVP | ||
2 | General Design | Site design/layout should be visually appealing and clear/easy to understand. | Signed off | MVP | ||
3 | Landing Page | Landing Page should have succinct, appealing summary of service. | Signed off | MVP | ||
4 | Landing Page | Landing page should have CTA linking to Calc. | Signed off | MVP | ||
5 | User Accounts | Users can sign up for account with name, username, DOB, email & password. | Signed off | MVP | ||
6 | User Accounts | Users can amend account details (name, password, email address) | Signed off | MVP | ||
7 | User Accounts | Users can log in and out. | Signed off | MVP | ||
8 | Budget Calc | User able to input expenses | Signed off | MVP | ||
9 | Budget Calc | User able to input income | Signed off | MVP | ||
10 | Budget Calc | Calc should determine multiple savings rates & associated surplus cash for weekly spend for each. | Signed off | MVP | ||
11 | Budget Calc | Process of inputting data should be split into stages. | Signed off | MVP | ||
12 | Budget Calc | Each stage of data input should have a clear & succinct explanation/instructions. | Signed off | MVP | 13 | |
cd projects
git clone <repo-tag>
Create a .env
file in the server root directory based off the .env.template
file included. Ensure the new .env
file is not checked into any version control system.**
Run yarn install
in both the server and client directories to install dependencies, use the appropirate flags for the environment you are install the application for.
Unit tests can be run for both the client and server sides of the project by running yarn test
in each directory.
When running the application server in a development environemnt, nodemon is used to refresh the server when changes are made. Additionally, the client assets are also hosted on their own server to allow for quick refreshing. Therefore, to start the application servers run yarn start:dev
in both the server and client directories.
To run the application server in a production environment, move the server directory and build the static assets by running yarn build:prod
. Then, also in the server directory, start the application server by running yarn start:prod
. The application server will then listen for requests on port 5000 and a reverse proxy can be setup to pass requests.
Note: In non-containerised depolyments, a process controller (such as systemd) should be used manage the application server and prevent downtime from errors being raised.
Users resource
GET - return user profile, requires current user authentication
POST - create new user
- username (required, string)
- email (required, string)
- password (required, string)
- spendingPlan (optional, format outline below)
Create and update a users spending plan
POST - create new spending plan, overwrites old
- income (required, number, currency)
- savingPercentage (required, number, integer)
- savingGoal (required, object)
- name - name of savingGoal (required, string)
- value - value of savingGoal (required, number, currency)
- expenses (required, array)
- object (optional)
- name - name of expense (required, string)
- value - value of expense (required, number, currency)
- object (optional)
Create, update, delete a users spending plan expenses
POST - create new expense in spendingPlan
- name (required, string)
- value (required, number, currency)
PUT - update expense by id in spendingPlan
- name (required, string)
- value (required, number, currency)
DELETE - delete expense by id in spendingPlan
- id (required, string)
Create, update, delete a users spending plan saving goal
POST - create new saving goal in spendingPlan
- name (required, string)
- value (required, number, currency)
PUT - update saving goal in spendingPlan
- name (required, string)
- value (required, number, currency)
DELETE - delete saving goal in spendingPlan