A modern, full-featured expense tracking application built with React, TypeScript, and Supabase. Track your expenses, analyze spending patterns, and take control of your finances with beautiful analytics and intuitive design.
- Add Expenses with comprehensive details:
- Amount in Indian Rupees (βΉ)
- Category selection: Rental, Groceries, Entertainment, Travel, Others
- Notes - Add one line description for each expense
- Date of expense with date picker
- Payment Mode: UPI, Credit Card, Net Banking, Cash
- View all expenses in a clean, organized list with pagination
- Advanced filtering system with multiple filter options:
- Date filters: This month, Last 30 days, Last 90 days, All time
- Category filters: Multiple categories can be selected simultaneously
- Payment mode filters: Multiple payment modes can be selected
- Remove all filters option to reset all filters at once
- Delete expenses with confirmation dialog
- Real-time updates with optimistic UI
- Interactive stacked bar chart showing:
- Months on X-axis
- Amount spent on Y-axis
- Different colors for each expense category
- Responsive design that adapts to screen sizes
- Category breakdown with percentages and visual progress bars
- Summary statistics showing:
- Total amount spent
- Total number of transactions
- Average amount per transaction
- Beautiful SaaS-style landing page with feature highlights
- Secure authentication powered by Supabase Auth
- Fully responsive design that works perfectly on desktop, tablet, and mobile
- Dark/Light theme toggle with system preference detection
- Accessible design with proper ARIA labels and keyboard navigation
- Loading states and error handling throughout the app
- Toast notifications for user feedback
- Frontend: React 18, TypeScript, Tailwind CSS
- Backend: Supabase (PostgreSQL Database, Authentication, Real-time subscriptions)
- Charts: Recharts for analytics visualization
- UI Components: shadcn/ui component library
- State Management: TanStack Query for server state management
- Routing: React Router v6
- Icons: Lucide React
- Build Tool: Vite
- Styling: Tailwind CSS with custom design system
src/
βββ components/ # Reusable UI components
β βββ ui/ # shadcn/ui components
β βββ AddExpenseForm.tsx # Form for adding new expenses
β βββ Analytics.tsx # Charts and analytics dashboard
β βββ AuthModal.tsx # Authentication modal
β βββ DashboardNavbar.tsx # Navigation for dashboard
β βββ ExpenseList.tsx # List of expenses with filters
β βββ Footer.tsx # Shared footer component
β βββ LandingNavbar.tsx # Landing page navigation
βββ hooks/ # Custom React hooks
β βββ useAuth.tsx # Authentication hook
β βββ useExpenses.ts # Expense management hook
β βββ use-toast.ts # Toast notification hook
βββ pages/ # Page components
β βββ Index.tsx # Landing page
β βββ Dashboard.tsx # Main application dashboard
βββ contexts/ # React contexts
β βββ ThemeContext.tsx # Theme management
βββ integrations/ # External service integrations
β βββ supabase/ # Supabase client and types
βββ types/ # TypeScript type definitions
β βββ expense.ts # Expense-related types
βββ lib/ # Utility functions
βββ utils.ts # Common utilities
- Amount in Rupees with proper validation
- Category selection (Rental, Groceries, Entertainment, Travel, Others)
- Notes field for one-line descriptions
- Date picker for expense date
- Payment mode selection (UPI, Credit Card, Net Banking, Cash)
- Complete expense list with all details
- Date filtering (This month, Last 30 days, Last 90 days, All time)
- Multi-select category filtering
- Multi-select payment mode filtering
- Remove all filters functionality
- Delete expense functionality with confirmation
- Stacked bar chart with months on X-axis
- Amount in Rupees on Y-axis
- Category-based color coding
- Interactive tooltips and legends
- Responsive chart design
- Node.js 18+
- npm or yarn
- Supabase account
-
Clone the repository
git clone <repository-url> cd expense-tracker
-
Install dependencies
npm install
-
Environment Setup
- Copy
.env.example
to.env
- Add your Supabase project URL and anon key
- Copy
-
Start the development server
npm run dev
- Uses Supabase real-time subscriptions
- Optimistic updates for better user experience
- Automatic data refresh on network reconnection
- Multiple filter types can be applied simultaneously
- Filters persist during the session
- Easy reset with "Remove All Filters" button
- Charts automatically adapt to screen size
- Touch-friendly on mobile devices
- Accessible with keyboard navigation
- Consistent design system across light and dark themes
- Automatic system theme detection
- Smooth transitions between themes
This app can be easily deployed to various platforms:
- Connect your GitHub repository to Vercel
- Add your Supabase environment variables
- Deploy with zero configuration
- Build the project:
npm run build
- Deploy the
dist
folder to Netlify - Configure environment variables
The app builds to static files and can be deployed anywhere that serves static content.
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-feature
- Make your changes and test thoroughly
- Commit your changes:
git commit -am 'Add new feature'
- Push to the branch:
git push origin feature/new-feature
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.