A full-stack web application for managing personal expenses. Users can register, log in, track purchases, generate simple financial reports, and recover their accounts through a secure password reset system.
-
Add items with product name, value, and date.
-
View and delete listed products.
-
Access a Reports page to compare spending against saved amount and spending goals.
-
Login uses JWT tokens.
-
Reset password uses a JWT link sent by email.
-
Passwords are securely hashed using argon2.
-
nodemailer sends the user a reset-password link containing a short-lived JWT.
-
Users access the link to set a new password.
- MySQL
- NodeJS
-
argon2 – password hashing
-
dotenv – environment variables
-
jsonwebtoken – JWT authentication
-
mysql2 – database connection
-
nodemailer – email sending
-
HTML
-
CSS
-
JavaScript
-
Tailwind CSS
- Clone the repository:
git clone https://github.com/michaelprocha/expense-control-
Download MySQL
-
Create a connection in Workbench.
-
Execute the commands in databaseSchema.sql in
./backend/database/
-
Run it through a local server NodeJS.
-
In the
backendfolder install dependencies:
- npm install
- Configure environment variables. Create a .env file:
DB_HOST=localhost
DB_USER=root
DB_PASS=password
DB_NAME=yourdatabase- npm start
- In the
frontendfolder install dependencies:
- npm install
- Run it through a local server (for example, using VS Code Live Server extension).
Made by Michael Rocha
This project is licensed under the MIT License. See the LICENSE file for more details.