A modern, feature-rich Progressive Web App (PWA) built with React and Supabase. Track your expenses, income, and manage your financial goals with an intuitive user interface. Install it on any device and use it like a native app!
Core Features
-
π Dashboard & Analytics
- Real-time financial overview
- Interactive charts and statistics
- Monthly spending patterns
-
π° Transaction Management
- Adding expenses and income
- Recurring transaction setup
- Category management
-
π― Smart Features
- Advanced filtering system
- Reminder setup process
- Custom categorization
Technical Highlights
- β‘ PWA Installation
- π± Mobile Responsiveness
- π Dark Mode Interface
- π Real-time Updates
- π Multi-language Support
Visit our live demo to experience the app firsthand!
- π± Install on any device (iOS, Android, Desktop)
- π Offline functionality
- π Fast loading and caching
- π² App-like experience
- π Push notifications support
- π Background sync
- π Secure HTTPS connection
- π Real-time financial overview
- π΅ Total balance tracking
- π Income and expense summaries
- π Regular expenses monitoring
- π Monthly financial statistics
- π± Responsive design for all devices
- π° Track both expenses and income
- π Support for one-time and recurring transactions
- π Flexible date filtering and transaction history
- π Detailed transaction categorization
- π³ Multiple payment method support
- π Advanced filtering capabilities (date, regularity, category)
- β° Transaction reminders
- π± Push notifications
- π§ Email notifications
- π Recurring transaction automation
- π·οΈ Custom categorization
- π Transaction notes and descriptions
- π Dark mode interface
- π Internationalization support
- π± Mobile-first design
- β‘ Real-time updates
- π Infinite scroll for transaction history
- π¨ Modern and intuitive UI
- π² Install and use as native app
- π Works offline
- π Automatic updates
- Frontend Framework: React + Vite
- PWA Support: Vite PWA Plugin
- State Management: Zustand
- UI Components: Shadcn UI, Radix UI
- Styling: Tailwind CSS
- Database: Supabase
- Authentication: Supabase Auth
- Animations: Framer Motion
- Form Handling: React Hook Form
- Validation: Zod
- Internationalization: react-i18next
- Service Worker: Workbox
src/
βββ components/ # React components
βββ contexts/ # React contexts
βββ hooks/ # Custom hooks
βββ pages/ # Application pages
βββ services/ # API services
β βββ supabase/ # Supabase services
β βββ BudgetService.js
βββ store/ # Zustand stores
βββ styles/ # Global styles
βββ i18n/ # Internationalization
- Node.js (v14 or higher)
- npm or yarn
- Supabase account
-
Clone the repository:
git clone https://github.com/akingundogdu/budget-tracker.git cd budget-tracker -
Install dependencies:
npm install # or yarn install -
Set up environment variables:
cp .env.example .env.local
Fill in your Supabase credentials and other required environment variables.
-
Start the development server:
npm run dev # or yarn dev -
Open http://localhost:3000 in your browser.
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key- Go to Supabase Dashboard
- Click "New Project" and fill in the details
- Choose a database password and region
- Wait for the project to be created
- In your project dashboard, go to Settings > API
- Copy the
Project URLandanon publickey - Paste them in your
.envfile:VITE_SUPABASE_URL=your_project_url VITE_SUPABASE_ANON_KEY=your_anon_key
-
Go to SQL Editor in your Supabase dashboard
-
Run the following migration files in order:
database/migrations/ βββ 001_add_description_to_transactions.sql # Add description field to transactions βββ 001_add_is_regular_to_transactions.sql # Add recurring transaction support βββ 002_add_recurring_dates.sql # Add start/end dates for recurring transactions βββ 002_add_preferred_language_to_profiles.sql # Add language preferences βββ 004_add_payment_method_to_transactions.sql # Add payment method support
-
Execute each migration file in sequence:
- Open SQL Editor in Supabase dashboard
- Copy the content of each migration file
- Execute them in the order listed above
-
Verify the setup:
- Go to Database > Tables to see the created tables and columns
- Check Authentication > Policies to verify RLS policies
- Test the indexes in Database > Indexes
Note: Migration files are located in the
database/migrationsdirectory. Each file is prefixed with a number to indicate the order of execution. This approach helps track database changes and makes it easier to replicate the database structure across different environments.
- Go to Authentication > Settings
- Enable the authentication providers you want to use (Email, Google, etc.)
- Configure email templates if using email authentication
- Go to Storage in your Supabase dashboard
- Create a new bucket called 'avatars' for user profile pictures
- Set up the following storage policy:
CREATE POLICY "Avatar images are publicly accessible"
ON storage.objects FOR SELECT
USING (bucket_id = 'avatars');
CREATE POLICY "Users can upload their own avatar"
ON storage.objects FOR INSERT
WITH CHECK (
bucket_id = 'avatars'
AND auth.uid() = owner
);- Go to Database > Replication
- Enable real-time for the tables you want to subscribe to
- Configure the real-time settings according to your needs
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.