StudentBudget is a full-stack budgeting web application designed to help students manage their income, expenses, and available budget. Users can register, log in, set a budget, add income and expenses, view transaction history, and contact the app owner through a contact form.
- User registration and login
- Set a personal budget
- Add income entries
- Add expense entries
- View remaining budget
- View transaction history
- Contact form with email sending
- Responsive dashboard interface
- REST API for user, budget, income, and expense management
- Vue 3
- Quasar Framework
- Vue Router
- Axios
- Bootstrap Icons
- SCSS
- Node.js
- Express.js
- MySQL
- Nodemailer
- dotenv
- Jest
- Supertest
StudentBudget-webapp/
├── backend/
│ ├── indeks.js
│ ├── init.sql
│ ├── env.example
│ ├── package.json
│ └── budzet.test.js
│
├── frontend/
│ ├── src/
│ │ ├── pages/
│ │ ├── layouts/
│ │ ├── router/
│ │ └── css/
│ ├── package.json
│ ├── index.html
│ └── quasar.config.js
│
├── install.bat
└── README.md
/ Home page
/dash Budget dashboard
/trans Transaction history
/onama About page
/kontakt Contact page
/prijava Login and registration page
POST /api/login
POST /api/register
GET /api/budget/:userId
POST /api/set-budget
POST /api/add-rashod
POST /api/add-prihod
GET /api/transactions/user/:userId
POST /send-email
Before running the project, install:
- Node.js 18 or 20
- npm
- MySQL
Create a .env file inside the backend folder.
DB_HOST=localhost
DB_USER=your_mysql_user
DB_PASSWORD=your_mysql_password
DB_NAME=studentbudget
SMTP_USER=your_email@gmail.com
SMTP_PASS=your_app_password
PORT=3000Do not commit the .env file to GitHub.
The project includes an env.example file that can be used as a template:
DB_HOST=
DB_USER=
DB_PASSWORD=
DB_NAME=
SMTP_USER=
SMTP_PASS=
PORT=Create the database and tables using the SQL script:
cd backend
mysql -u root -p < init.sqlThe script creates the required tables:
korisnicibudzetiprihodirashodi
cd backend
npm install
node indeks.jsBackend runs on:
http://localhost:3000
Open a new terminal:
cd frontend
npm install
npm run devFrontend runs on:
http://localhost:9000
Backend tests:
cd backend
npm testFrontend linting:
cd frontend
npm run lintCreated by kbazon.