Expense Tracker MUN is a web-based application designed to help users efficiently manage their finances by tracking income, expenses, and spending habits in a structured and intuitive way. Whether it's daily expenses, monthly bills, or long-term savings, this tool provides real-time insights, categorized spending analysis, and seamless transaction tracking to ensure users stay financially aware and in control.
With features like automated transaction logging, smart budgeting tools, and goal-based financial planning, Expense Tracker MUN makes managing money effortless. Users can visualize their spending trends, set savings goals, and track their progress without the hassle of manual calculations. The platform is built with a user-friendly interface, ensuring a smooth experience while prioritizing data privacy and security. Whether you're an individual looking to improve your personal finance habits or someone managing shared expenses, Expense Tracker MUN simplifies the process, helping you spend smarter, save better, and plan for the future with confidence.
[β
] User authentication via GitHub & Google
[β
] Dashboard with financial insights
[β
] Categorized expense tracking
[β
] Monthly transaction trends
[β
] Responsive UI with Shadcn components
[β³] Historical Transactions with Filtering
[β³] Recurring Expense Reminders
[β³] Budgeting Tips & Alerts
[β³] Budgeting and notifications for budgeting
[β³] Advanced Financial Goal Setting
[β³] Multi-user Collaboration
[β³] Detailed Financial Reports\
- Frontend: Next.js 15 (TypeScript, App Router), TailwindCSS, Shadcn
- Backend: Fastify
- Database: PostgreSQL with Prisma ORM
- Authentication: Auth.js (NextAuth)
- Deployment: Vercel (Auto-deploys enabled)
- Security/Monitoring: Arcjet
- Node.js & PNPM installed
- PostgreSQL database set up
git clone https://github.com/idarshan181/ExpenseTracker-MUN.git
cd ExpenseTracker-MUN
pnpm install
pnpm dlx prisma generate
pnpm run dev
βββ prisma
β βββ schema.prisma
βββ public/
β βββ logos/
β βββ screenshots/
βββ src/
β βββ app/
β β βββ (mainLayout)/
β β β βββ budgets/
β β β βββ dashboard/
β β β βββ reports/
β β β βββ transactions/
β β βββ actions.ts
β β βββ api/
β β β βββ auth/
β β β βββ arcjet/
β β β βββ uploadthing/
β β βββ data/
β β βββ login/
β β βββ onboarding/
β β βββ utils/
β βββ components/
β β βββ Dashboard/
β β βββ Sidebar/
β β βββ Transactions/
β β βββ forms/
β β βββ general/
β β βββ ui/
β βββ hooks/
β βββ lib/
β βββ types/
βββ commitlint.config.ts
βββ components.json
βββ eslint.config.mjs
βββ lint-staged.config.js
βββ next-env.d.ts
βββ next.config.ts
βββ package.json
βββ pnpm-lock.yaml
βββ postcss.config.mjs
βββ README.md
βββ tsconfig.json
Create a .env
file in the root directory and include the following variables:
AUTH_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=
AUTH_GITHUB_CALLBACK_URL=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_GOOGLE_CALLBACK_URL=
DATABASE_URL=
UPLOADTHING_TOKEN=
ARCJET_KEY=
The project is automatically deployed using Vercel. No CI/CD pipeline is currently configured.
pnpm run build
pnpm start
- Fork the repository.
- Create a new branch following the commit convention structure:
git checkout -b <type>/<scope>
git checkout -b feat/dashboard
git checkout -b feat/analytics
git checkout -b fix/hydration
- Make your changes and commit using the proper commit message format.
- Push to your branch:
git push origin <type>/<scope>
- Submit a pull request for review.
π¨ Note: Only the repository owner can merge due to Vercel's hobby limitations.
π‘ Always create a new branch for each feature or fix before submitting a pull request.
Please follow the commit message convention as enforced by Husky and Commitlint based on Conventional Commits:
git commit -m "<type>(<scope>): <subject>"
- build: Changes that affect the build system or external dependencies
- chore: General maintenance tasks
- ci: Changes to CI/CD configuration
- docs: Documentation updates
- feat: New features
- fix: Bug fixes
- perf: Performance improvements
- refactor: Code changes that neither fix a bug nor add a feature
- revert: Reverting previous commits
- style: Code style changes (formatting, missing semi-colons, etc.)
- test: Adding or updating tests
A specific area of the codebase affected (e.g., auth
, dashboard
).
A short, descriptive message (in lowercase, no period at the end).
git commit -m "feat(auth): add Google OAuth support"
git commit -m "fix(dashboard): resolve incorrect expense calculation"
git commit -m "docs(readme): update contribution guidelines"
Please follow the commit message convention as enforced by Husky and Commitlint:
git commit -m "feat/fix/chore/subject: message"
- feat: For new features
- fix: For bug fixes
- chore: For maintenance or minor tasks
- subject: A short description of the changes
- message: A brief explanation of the commit
This project is for educational purposes only and does not include a formal license.
For any questions or contributions, feel free to open an issue or submit a PR!