SpendWise is a modern, full-stack, and user-friendly Expense Tracker Web Application that helps users manage their personal finances efficiently. It allows users to add, update, and delete expenses, view expenses category-wise, and provides a weekly/monthly breakdown with total spending. The app is built using React (Frontend) and FastAPI + Azure Cosmos DB (Backend), making it a complete full-stack solution.
- Features
- Demo
- Tech Stack
- Installation
- Usage
- API Endpoints
- Add Expenses: Record new expenditures with details like amount, category, description, and date.
- Update Expenses: Edit only the selected expense without affecting others.
- Delete Expenses: Remove unwanted records easily.
- View All Expenses: Display a list of all expenses with total spending.
- Category-wise Breakdown: Easily visualize spending per category.
- Weekly/Monthly Summary: Understand your expenditure patterns over time.
- Responsive Design: Works on desktop and mobile.
You can run the project locally or deploy it to Azure App Service.
- Frontend: React, HTML, CSS
- Backend: FastAPI (Python)
- Database: Azure Cosmos DB (NoSQL)
- Hosting: Azure App Service (Optional)
- Others: Axios for API calls
- Node.js >= 18.x
- Python >= 3.10
- Azure Cosmos DB account (or local alternative like MongoDB)
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Run React app
npm run dev# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv venv
# Activate environment
source venv/bin/activate # For Linux/Mac
venv\Scripts\activate # For Windows
# Install dependencies
pip install -r requirements.txt
# Run FastAPI server
uvicorn main:app --reload
-
Open the app in your browser → http://localhost:5173
-
Add expenses using the form.
-
View your expense list and total amount at the bottom.
-
Update or delete an expense using buttons.
-
Explore category-wise and time-based breakdown with charts.
| Method | Endpoint | Description |
|---|---|---|
| POST | /add_expense |
Add a new expense |
| GET | /get_expenses/{userId} |
Fetch all expenses for user |
| PUT | /update_expense/{id} |
Update an existing expense |
| DELETE | /delete_expense/{id} |
Delete an expense by ID |
{ "userId": "123", "amount": 250.50, "category": "Food", "description": "Lunch at cafe", "date": "2025-08-25" }