A powerful and user-friendly Expense Tracker application designed to help users manage finances efficiently with secure authentication, multi-currency support, savings goals, analytics, and full customization.
- Secure email/password authentication
- Account verification with OTP (Email/SMS)
- Session management (view & revoke active logins)
- Encrypted user data handling
- Optional 2FA support (future improvement)
- Editable profile with name, email, phone, avatar
- Multi-currency preference (USD, EUR, BDT, INR, etc.)
- Language preference
- Theme preference (light, dark)
- Choose base currency during onboarding
- Automatically convert amounts using live/external rates
- Store expenses in multiple currencies
- Display total reports based on selected main currency
- Add, edit, delete expenses
- Transaction categories (Food, Transport, Bills, Health, Shopping, etc.)
- Custom categories support
- Attach notes, tags, and receipt images (optional)
- Create savings goals (e.g., “Buy a Laptop”, “Emergency Fund”)
- Track goal progress
- Set deadlines and contribution reminders
Detailed summaries:
- Daily
- Weekly
- Monthly
- Yearly
Includes:
- Category-wise distribution
- Highest spending categories
- Comparison with previous time periods
- Savings goal progress analytics
- Support for multiple languages (e.g., English, Bangla, Spanish)
- Easy integration for adding more languages
- Light mode
- Dark mode
- Change currency
- Change language
- Change theme
- Manage active sessions
- Manage account security
- Export data (future improvement)
- React
- TailwindCSS + DaisyUI
- Redux Toolkit + RTK Query
- i18n for multi-language
- Node.js + Express
- JWT Authentication
- Zod
- PostgreSQL
git clone https://github.com/siam9192/Expense-Tracker.git
npm installcd backend npm install
- Create a .env file inside the backend/ folder (not the project root unless specified).
- Copy the variables from .env.local (if provided) and paste them into your .env file.
- Set appropriate values for each environment variable
npm run dev
Once the command runs successfully, backend server should be up and running (typically on http://localhost:5000 or whichever port is set in .env).