financeapp/
├── backend/ ← Spring Boot (Java) — the server/API
└── frontend/ ← React + Vite — the website you see
You need to install these tools once. Follow each link:
- Go to: https://adoptium.net/
- Download Eclipse Temurin 21 (LTS)
- Install it (click Next → Next → Finish)
- ✅ Verify: Open Terminal/Command Prompt, type:
Should say
java -versionopenjdk 21...
- Go to: https://maven.apache.org/download.cgi
- Download the Binary zip archive (e.g.
apache-maven-3.9.x-bin.zip) - Extract it to
C:\Program Files\Maven(Windows) or/opt/maven(Mac/Linux) - Add to PATH:
- Windows: Search "Environment Variables" → Edit PATH → Add
C:\Program Files\Maven\bin - Mac: Add
export PATH=/opt/maven/bin:$PATHto~/.zshrc
- Windows: Search "Environment Variables" → Edit PATH → Add
- ✅ Verify:
mvn -version
- Go to: https://nodejs.org/
- Download LTS version (e.g. 20.x)
- Install it (click Next → Next → Finish)
- ✅ Verify:
node -versionandnpm -version
- Go to: https://www.postgresql.org/download/
- Download for your OS and install
- During install, set password for
postgresuser — remember this password! - Default port:
5432(leave as-is) - ✅ Verify: pgAdmin 4 opens (installed automatically)
- Free Community Edition: https://www.jetbrains.com/idea/download/
- Or use VS Code with the Java Extension Pack
- Open pgAdmin 4 from your Start menu
- Login with your
postgrespassword - Right-click Databases → Create → Database
- Name it:
financedb - Click Save
psql -U postgres
CREATE DATABASE financedb;
\qOpen this file in any text editor (Notepad is fine):
backend/src/main/resources/application.properties
Change these two lines to match your PostgreSQL password:
spring.datasource.password=yourpassword ← PUT YOUR ACTUAL PASSWORD HEREAlso update the JWT secret — you can use any long random string:
app.jwt.secret=3cfa76ef14937c1c0ea519f8fc057a80fcd04a7420f8e8bcd0a7567c272e007bThat's the only configuration change needed! The app will auto-create all database tables on first run.
Open Terminal (Mac/Linux) or Command Prompt / PowerShell (Windows).
Navigate to the backend folder:
cd path/to/financeapp/backend(Example: cd C:\Users\YourName\Downloads\financeapp\backend)
Run the app:
mvn spring-boot:runFirst run takes 2–5 minutes (downloads dependencies). You'll see lots of text scrolling.
✅ Success looks like:
Started SmartFinanceApplication in 3.5 seconds
🔴 If you see an error about the database:
- Make sure PostgreSQL is running
- Double-check your password in
application.properties - Make sure the
financedbdatabase exists
Leave this terminal open. The backend runs on http://localhost:8080
Open a NEW Terminal window (keep the backend one open).
Navigate to the frontend folder:
cd path/to/financeapp/frontendInstall dependencies (first time only):
npm installStart the development server:
npm run dev✅ You'll see:
VITE v5.x ready in 500 ms
➜ Local: http://localhost:5173/
Open your browser and go to: http://localhost:5173
You'll see the FinanceIQ login page. Click "Create one" to register your first account!
- Register with your name, email, and password
- You'll be taken to the Dashboard automatically
- Start by adding your Income (left sidebar → Income)
- Add your Expenses
- Create Budgets to set spending limits
- Set Savings Goals for things you're saving toward
- Add Bill Reminders so you never miss a payment
- Check Analytics for beautiful charts of your spending
| Method | URL | What it does |
|---|---|---|
| POST | /api/auth/register | Create account |
| POST | /api/auth/login | Login |
| GET | /api/auth/me | Get current user |
| GET | /api/dashboard/summary | Dashboard data |
| GET | /api/incomes | List all income |
| POST | /api/incomes | Add income |
| PUT | /api/incomes/{id} | Edit income |
| DELETE | /api/incomes/{id} | Delete income |
| GET | /api/expenses | List all expenses |
| POST | /api/expenses | Add expense |
| PUT | /api/expenses/{id} | Edit expense |
| DELETE | /api/expenses/{id} | Delete expense |
| GET | /api/budgets/monthly | Get month budgets |
| POST | /api/budgets | Create budget |
| GET | /api/savings-goals | List savings goals |
| POST | /api/savings-goals | Create goal |
| POST | /api/savings-goals/{id}/contribute | Add money to goal |
| GET | /api/bills | List bill reminders |
| POST | /api/bills | Create bill reminder |
| PATCH | /api/bills/{id}/pay | Mark bill as paid |
users— user accountsincomes— income entriesexpenses— expense entriesbudgets— monthly budgets per categorysavings_goals— savings targetsbill_reminders— upcoming bills
Another app is using that port. Either close it, or change the backend port:
In application.properties: server.port=8081
Then update vite.config.js: change 8080 to 8081
- Make sure PostgreSQL service is running
- Windows: Search "Services" → find "postgresql" → Start it
- Mac:
brew services start postgresql
Maven isn't in your PATH. Re-read Step 1.2.
- Make sure backend is running on port 8080
- Check browser console (F12 → Console tab) for errors
Backend is not running. Start it first (Step 4).
cd backend
mvn clean package -DskipTests
java -jar target/smart-finance-backend-1.0.0.jarcd frontend
npm run build
# Files are in the /dist folder — upload these to any web host| Layer | Technology | Purpose |
|---|---|---|
| Backend | Java 21 | Programming language |
| Backend | Spring Boot 3.2 | Web framework |
| Backend | Spring Security | Authentication & authorization |
| Backend | JWT | Stateless token-based auth |
| Backend | Spring Data JPA | Database ORM |
| Backend | PostgreSQL | Relational database |
| Backend | Maven | Build tool & dependency manager |
| Frontend | React 18 | UI library |
| Frontend | Vite | Fast build tool |
| Frontend | Tailwind CSS | Utility-first styling |
| Frontend | React Router v6 | Client-side routing |
| Frontend | Axios | HTTP client for API calls |
| Frontend | Recharts | Charts and graphs |
| Frontend | React Hot Toast | Notifications |
- Java Spring Boot: https://spring.io/guides
- React: https://react.dev/learn
- Tailwind CSS: https://tailwindcss.com/docs
- PostgreSQL: https://www.postgresqltutorial.com/
Built with ❤️ — FinanceIQ v1.0.0