A modern, Electron-based expense tracking application built with React, TypeScript, and shadcn/ui.
- Manual Expense Entry: Record expenses with support for multiple payment methods (UPI, Cash, Card)
- Category-wise Budgeting: Set and track monthly spending limits for different categories
- Recurring Expenses: Track subscription and regular payments with automatic frequency management
- Food & Dining
- Transportation
- Shopping
- Entertainment
- Bills & Utilities
- Healthcare
- Education
- Rent
- Subscriptions
- Others
- Electron: Desktop application framework
- React: UI framework
- TypeScript: Type-safe development
- SQLite + Drizzle ORM: Fast, type-safe database
- Vite: Fast build tool
- shadcn/ui: Beautiful UI components
- Tailwind CSS: Utility-first CSS framework
- Radix UI: Unstyled, accessible components
- Lucide React: Icon library
- Node.js (v16 or higher)
- pnpm (recommended) or npm
- Clone the repository
cd Spendora- Install dependencies
pnpm install- Run the development server
pnpm devThis will start both the Vite development server and the Electron app.
pnpm buildThe built application will be available in the release folder.
Spendora/
├── electron/ # Electron main process files
│ ├── main.ts # Main process entry point
│ ├── database.ts # Database operations with Drizzle ORM
│ ├── schema.ts # Drizzle schema definitions
│ └── preload.ts # Preload script for secure IPC
├── src/
│ ├── components/ # React components
│ │ ├── ui/ # shadcn/ui components
│ │ ├── AddExpenseDialog.tsx
│ │ ├── ExpenseList.tsx
│ │ ├── BudgetManager.tsx
│ │ ├── RecurringExpenses.tsx
│ │ └── Dashboard.tsx
│ ├── lib/ # Utility functions
│ ├── types/ # TypeScript type definitions
│ ├── App.tsx # Main App component
│ ├── main.tsx # React entry point
│ └── index.css # Global styles
├── package.json
├── tsconfig.json
├── vite.config.ts
└── tailwind.config.js
All expense and budget data is stored locally in a SQLite database in the user's application data directory. The app uses:
- SQLite for fast, reliable data storage with ACID transactions
- Electron's IPC for secure communication between UI and database
- Automatic migration from old JSON format (if exists)
- macOS:
~/Library/Application Support/spendora/spendora.db - Windows:
%APPDATA%/spendora/spendora.db - Linux:
~/.config/spendora/spendora.db
- Add expenses with amount, category, description
- Choose payment method (UPI, Cash, Card)
- Mark as one-time or recurring expense
- Set frequency for recurring expenses (daily, weekly, monthly, yearly)
- Set monthly spending limits per category
- Visual progress bars showing budget utilization
- Color-coded alerts when approaching or exceeding limits
- Track remaining budget in real-time
- Track all recurring payments in one place
- View estimated monthly total from all recurring expenses
- See next payment dates
- Automatic calculation of monthly impact based on frequency
- Overview of monthly spending
- Total budget vs. actual spending
- Remaining budget
- Daily average spending
- Transaction counts
MIT
Contributions are welcome! Please feel free to submit a Pull Request.