Skip to content

ENSO | The Privacy-First Finance OS. Master your recurring expenses. Local-first, Offline PWA, Multi-currency & Cashflow Forecasting. No servers, no tracking. Built with Next.js 16 & Shadcn/UI.

Notifications You must be signed in to change notification settings

EdvinCodes/enso

Repository files navigation

ENSO | Finance OS


Master your recurring expenses. Privacy-first. Local-first.

Next.js TypeScript Tailwind PWA Ready Local First


Dashboard Preview

✨ Introduction

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.

🚀 Key Features

🆕 New in v2.4

  • 📱 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.

Core Features

  • 🛡️ 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.

🛠️ Tech Stack

  • 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-fns for complex recurring date algorithms
  • Charts: Recharts

📦 Getting Started

Follow these steps to run ENSO locally on your machine.

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm/yarn

Installation

  1. Clone the repository
git clone https://github.com/EdvinCodes/enso.git
cd enso
  1. Install dependencies
pnpm install
  1. Run the development server
pnpm run dev
  1. Open your browser Navigate to http://localhost:3000 to see the Landing Page. Click "Launch App" to access the Dashboard.

📂 Project Structure

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

🔮 Roadmap

  • 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)

🤝 Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

Distributed under the MIT License. See LICENSE for more information.


Built with ❤️ by Edvin

About

ENSO | The Privacy-First Finance OS. Master your recurring expenses. Local-first, Offline PWA, Multi-currency & Cashflow Forecasting. No servers, no tracking. Built with Next.js 16 & Shadcn/UI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published