TravelBudgetTool is a full-stack web application designed to help users efficiently plan, track, and manage travel budgets. Users can organize trips, record expenses, monitor spending in real-time, and generate reports to make informed financial decisions during their travels.
git clone https://github.com/Tusharwasake/TravelBudgetTool.gitcd TravelBudgetTool/Frontendnpm installnpm run dev- HTML / CSS – Structure and styling.
- React.js (JSX) – Component-based UI development.
- Axios – HTTP client for API calls.
- React Router – SPA (Single Page Application) routing.
- Node.js – JavaScript runtime environment.
- Express.js – Web framework for building APIs.
- MongoDB / Mongoose – NoSQL database and schema modeling.
- Render.com – Deployment and hosting platform.
- Argon2 – Secure password hashing.
- JWT (jsonwebtoken) – Authentication and authorization.
- CORS – Cross-origin resource sharing for secure API communication.
- dotenv – Manage environment variables.
- Full Stack MERN (MongoDB, Express.js, React.js, Node.js)
-
User Authentication:
- Secure login and signup.
- JWT-based authentication and role-based user permissions.
-
Trip Planning:
- Organize trips by adding destination, travel dates, and budget limits.
-
Expense Tracking:
- Record and categorize expenses (e.g., Food, Transport, Accommodation).
- Link expenses directly to active trips and budgets.
-
Multi-Currency Support:
- Record expenses in different currencies with automatic conversion.
-
Reports & Analysis:
- Generate detailed spending reports and analyze expenses by category.
- Downloadable reports in PDF/CSV formats.
-
Real-Time Budget Monitoring:
- Visualize remaining budgets and track spending trends over time.
Signup:
POST /user/signupPayload:
{
"name": "John Doe",
"email": "john@example.com",
"password": "password123"
}Signin:
POST /user/signinPayload:
{
"email": "john@example.com",
"password": "password123"
}Response:
{
"token": "<JWT_TOKEN>"
}Create Budget:
POST /user/budgets
Authorization: Bearer <JWT_TOKEN>Payload:
{
"city": "Paris",
"totalBudget": 5000,
"numberOfDays": 7
}Get All Budgets:
GET /user/budgets
Authorization: Bearer <JWT_TOKEN>Get Budget with Expenses:
GET /user/budgets/:budgetId
Authorization: Bearer <JWT_TOKEN>Add Expense to Budget (Automatically Linked to Active Budget):
POST /user/budgets/expenses
Authorization: Bearer <JWT_TOKEN>Payload:
{
"date": "2023-12-22",
"description": "Dinner at a restaurant",
"category": "Food",
"amount": 50
}Show Budget Data (With Calculated Expenses):
GET /user/budgets/showdata
Authorization: Bearer <JWT_TOKEN>Response:
{
"totalBudget": 5000,
"remainingBudget": 4200,
"totalexpenses": 800,
"dailyAvgSpent": 114.28
}- Use HTTPS for secure communication.
- Store JWT securely (httpOnly cookies or localStorage).
- Hash passwords before saving them.
- Limit API rate requests to prevent abuse.
- Regularly update dependencies to avoid vulnerabilities.
For questions or collaborations, reach out at (mailto:tusharwasake@example.com).