ENSO is a modern, privacy-focused subscription manager designed to stop you from bleeding money on forgotten services.
Unlike other finance apps, ENSO has no backend. It leverages the browser's IndexedDB to store all your sensitive financial data locally on your device. We cannot see your data, sell it, or leak it.
Now available as an Installable PWA, allowing you to manage your finances offline on iOS, Android, and Desktop.
- 📱 Native PWA: Install ENSO on your phone. Works 100% offline.
- 🔮 Cashflow Forecast: A 30-day predictive curve to visualize upcoming cumulative spending.
- 🏢 Workspaces: Separate your "Personal" expenses from "Business" overheads effortlessly.
- 🛡️ Local-First Architecture: Built with Dexie.js. Data never leaves your device.
- ⚡ God Mode (Cmd+K): Navigate, search, and manage subscriptions without touching the mouse.
- 📅 Visual Calendar: A monthly grid view to visualize spending clusters and renewal dates.
- 🔔 Smart Notifications: Native system alerts 3 days before any payment is due (Serverless logic).
- 🌍 Multi-Currency Support: Track in USD, EUR, or GBP with real-time normalization for KPIs.
- 📊 Interactive Analytics: Monthly Run Rate (MRR) calculation and category distribution charts using Recharts.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- PWA Engine:
next-pwa+ Custom Service Workers - Styling: Tailwind CSS, Framer Motion,
clsx - UI Components: Shadcn UI (Radix Primitives)
- State Management: Zustand (Global Store)
- Database: Dexie.js (Wrapper for IndexedDB)
- Logic:
date-fnsfor complex recurring date algorithms - Charts: Recharts
Follow these steps to run ENSO locally on your machine.
- Node.js 18+
- pnpm (recommended) or npm/yarn
- Clone the repository
git clone https://github.com/EdvinCodes/enso.git
cd enso- Install dependencies
pnpm install- Run the development server
pnpm run dev- Open your browser Navigate to http://localhost:3000 to see the Landing Page. Click "Launch App" to access the Dashboard.
src/
├── app/
│ ├── page.tsx # Landing Page (Marketing)
│ ├── dashboard/ # The actual App (Protected route logic)
│ ├── icons/ # Dynamic PWA Icon generation
│ └── globals.css # Tailwind & Global Styles
├── components/
│ ├── ui/ # Shadcn reusable components
│ └── command-menu.tsx # God Mode implementation
├── features/
│ ├── subscriptions/ # Core Domain Logic (Components, Store, Schema)
│ ├── calendar/ # Calendar View Logic
│ ├── dashboard/ # Forecast & KPI Charts
│ └── settings/ # Data Management (Backup/Restore)
├── lib/
│ ├── db.ts # Database configuration (Dexie)
│ ├── dates.ts # Centralized Date & Payment Logic
│ ├── forecast.ts # Cashflow Projection Algorithms
│ └── notifications.ts # Notification API Logic
└── public/ # Static assets & Manifest- Core Subscription Management (CRUD)
- Local Storage Persistence
- Dashboard & Calendar Views
- Smart Notifications
- PWA Support (Install on Mobile)
- Cashflow Forecast
- End-to-End Encryption Sync
- Bank API Integration (Plaid/GoCardless)
Contributions are welcome! If you find a bug or have a feature request, please open an issue.
- Fork the Project
- 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
Distributed under the MIT License. See LICENSE for more information.
Built with ❤️ by Edvin
