A modern, full-stack expense tracking application with authentication and real-time analytics. Built with React, Node.js, and PostgreSQL.
- Secure user registration with username, email, and password
- User login with username/password
- Google OAuth integration
- JWT-based authentication
- Persistent session management
- Create and manage expense categories
- Add transactions with amounts and categories
- View transactions by category
- Filter transactions by date range
- Real-time expense statistics
- Daily average calculations
- Dark theme with violet accents
- Responsive design for all screen sizes
- Interactive data visualizations
- Smooth animations and transitions
- Loading states and skeletons
- Clean and intuitive interface
- React.js with hooks
- Material-UI (MUI) components
- React Router for navigation
- Axios for API requests
- Modern ES6+ JavaScript
- Responsive CSS with MUI styling
- Node.js and Express
- PostgreSQL database
- Sequelize ORM
- JWT authentication
- Google OAuth2
- RESTful API design
- Docker containerization
- Docker Compose for services
- Environment configuration
- Persistent data storage
- Docker and Docker Compose
- Node.js (for local development)
- Google OAuth credentials (for Google authentication)
- PostgreSQL (local or containerized)
- Clone the repository
- Configure environment variables:
# backend/.env GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret JWT_SECRET=your-jwt-secret DATABASE_URL=postgresql://postgres:postgres@db:5432/budget_buddy
-
Build and start the containers:
docker-compose up --build
-
Access the application:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- Database: localhost:5432
- POST
/api/auth/register- Register new user - POST
/api/auth/login- User login - GET
/api/auth/google- Google OAuth login - GET
/api/auth/google/callback- OAuth callback - GET
/api/protected- Verify authentication
- GET
/api/sections/:section/transactions- Get transactions by category - POST
/api/transactions- Create new transaction - GET
/api/transactions- Get all transactions - GET
/api/transactions/stats- Get transaction statistics
- GET
/api/sections- Get all categories - POST
/api/sections- Create new category - PUT
/api/sections/:id- Update category - DELETE
/api/sections/:id- Delete category
- Secure password hashing with bcrypt
- JWT-based authentication
- Protected API routes
- CORS configuration
- Environment variable protection
- SQL injection prevention
- XSS protection
- Rate limiting
cd frontend
npm install
npm startcd backend
npm install
npm run dev- PostgreSQL with Sequelize ORM
- Automatic migrations
- Data persistence
- Default credentials:
- Username: postgres
- Password: postgres
- Database: budget_buddy
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License.