An open API service indexing awesome lists of open source software.

https://github.com/dmanjunath/lasagna


https://github.com/dmanjunath/lasagna

Last synced: 8 days ago
JSON representation

Awesome Lists containing this project

README

          


Lasagna Dashboard

Lasagna


How it works ·
Features ·
Screenshots ·
Tech Stack ·
Quick Start ·
Self-Hosting

---

You want to manage your finances and get help. You don't want companies to sell your data or use it to train AIs. Enter LasagnaFi, a tool to help you keep your finances private while sharing anonymized data to get tailored financial insights. The AI sees numbers and patterns, never your name, account numbers, or any other personally identifiable details.

LasagnaFi is not a budgeting app, in fact if you're just looking for budgeting this is the wrong app. Lasagna is meant to give you extremely personalized insights across Debt Payoff, Retirement, Taxes and Portfolio Composition.

---

## How it works

**1. Connect your data sources**
Connect bank accounts via Plaid or enter balances manually. All accounts, holdings, and transactions live in a private database. Never shared with AI providers.

**2. The dashboard shows you personalized info**
The dashboard show you a comprehensive financial snapshot, not just spending like most budgeting apps, but debt payoff, taxes, retirement and portfolio composition. See [Features](#Features) below for a full list of all functionality.

**2. You ask a question**
Ask anything in plain English: "Am I saving enough for retirement?" or "Should I pay down debt or invest?" Lasagna pulls the relevant numbers from your database and assembles context for the AI.

**3. The AI gets anonymous context**
Before anything reaches the AI, identifying information is stripped. It sees balances, allocations, and spending patterns, never your name, which bank you use, or account numbers.

**4. You get a real answer**
AI responds with personalized, actionable advice based on your actual numbers. You can drill down, follow up, and ask anything.

---

## Features

### Dashboard
Your complete financial picture at a glance. Net worth over time, cash, investments and savings balances, monthly income and spending, goals progress, and action items.

### Actions
Action items generated across every area of your finances, prioritized by urgency. Covers spending patterns, debt, tax opportunities, portfolio imbalances, and behavioral insights. Grouped by urgency with one-tap navigation to the relevant page.

### Financial Priorities (Your Lasagna Layers)
The financial journey everyone goes through, from stabilizing your finances to financial independence. The system figures out where you are and tells you what to focus on next.

### Retirement Planning
Interactive retirement modeling with age and spending sliders, FIRE number calculation, portfolio projection charts, and a retirement readiness meter. Pulls directly from your live account balances.

### Monte Carlo Simulations
Stochastic simulations modeling your probability of success across retirement. Fan charts (p5–p95), spaghetti charts, final value histograms, and historical backtesting against every market period since 1928, including 2008, the Great Depression, and stagflation.

### Portfolio Analysis
Aggregate all holdings across accounts. Drill down by asset class, sub-category, or individual ticker. Interactive donut, bar, and treemap charts. Blended historical return calculations with 175+ tickers mapped to asset categories.

### Spending Tracker
Monthly expense breakdown by category with 6-month trend charts and full transaction history (searchable, filterable, paginated). Synced automatically via Plaid or entered manually.

### Debt Management
Complete debt overview with APRs, avalanche vs. snowball payoff comparison, days-to-debt-free timeline, and total interest savings calculation. Syncs payoff dates and interest rates directly from Plaid where available.

### Tax Strategy
Tax optimization recommendations based on your specific situation: Roth conversion opportunities, 0% LTCG bracket harvesting, HSA optimization, asset location, and 401k contribution gap analysis. Upload tax documents for AI-assisted extraction and analysis, zero data retention.

### Goals
Track financial goals with progress bars, preset templates, inline editing, and completion tracking.

### AI Chat
Ask anything about your finances in plain English. 12 specialized financial tools let the AI read your accounts, run projections, and give personalized recommendations. All using anonymous data. Your conversation history stays in your database, not the AI provider's.

---

## Screenshots


Dashboard
Actions


Dashboard
Actions


Your Layers
Retirement Plan


Your Layers
Retirement


Retirement (Advanced)



Retirement Advanced



Portfolio Analysis
Spending Tracker


Portfolio
Spending


Debt Management
Tax Strategy


Debt
Tax Strategy

---

## Tech Stack

| Layer | Technology |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS, Recharts, Vega-Lite, Framer Motion |
| Backend | Hono (Node.js), TypeScript |
| Database | PostgreSQL 16, Drizzle ORM |
| Auth | Custom JWT (bcrypt + sessions) |
| AI | OpenRouter (model-agnostic) |
| Banking | Plaid API |
| Deployment | Docker, GCP Cloud Run, Cloudflare Pages |

---

## Quick Start

### Prerequisites

- Node.js >= 20
- pnpm >= 9
- PostgreSQL (or Docker)

### With Docker (recommended)

```bash
git clone https://github.com/dmanjunath/lasagna.git
cd lasagna

cp .env.example .env
# Fill in: ENCRYPTION_KEY, and optional Plaid/OpenRouter credentials
# (see .env.example for all variables)

docker compose up
```

The app will be available at `http://localhost:5173`.

### Without Docker

```bash
pnpm install

# Start a local PostgreSQL instance, then:
pnpm db:push # apply schema
pnpm db:seed # load sample data (optional)

pnpm dev # API on :3000
pnpm dev:web # Web on :5173 (separate terminal)
```

### Seed Sample Data

```bash
pnpm db:seed --preset=negative # debt climber, $-60k net worth
pnpm db:seed --preset=100k # early builder, $100k
pnpm db:seed --preset=750k # accumulator, $750k
pnpm db:seed --preset=1.8M # pre-retiree, $1.8M
pnpm db:seed --preset=4M # high net worth, $4M
```

---

## Self-Hosting

### Environment Variables

| Variable | Description | Required |
|---|---|---|
| `DATABASE_URL` | PostgreSQL connection string | Yes |
| `ENCRYPTION_KEY` | 32-byte hex key for encrypting Plaid tokens (`openssl rand -hex 32`) | Yes |
| `PLAID_CLIENT_ID` | Plaid API client ID | Optional |
| `PLAID_SECRET` | Plaid API secret | Optional |
| `PLAID_ENV` | `sandbox`, `development`, or `production` | Optional |
| `OPENROUTER_API_KEY` | OpenRouter key for AI chat | Optional |

Plaid is required only if you want live bank account syncing. Without it, you can still use the app by entering balances manually. The AI chat feature requires an OpenRouter API key.

### Deployment

```bash
pnpm build # builds all packages
pnpm typecheck # type-check everything
pnpm lint # lint
pnpm --filter @lasagna/core test # unit tests
```

---

## Deployments

This repo powers three separate deployments:

| URL | Package | Description |
|-----|---------|-------------|
| `lasagnafi.com` | `packages/landing` | Marketing landing page (Astro) |
| `app.lasagnafi.com` | `packages/web` | Hosted app |
| `demo.lasagnafi.com` | `packages/web` | Read-only demo (set `VITE_DEMO_MODE=true`) |

**Cloudflare Pages configuration:**
Each deployment is a separate Cloudflare Pages project pointing to the same GitHub repo, with different build settings:

| Deployment | Build command | Output dir | Env vars |
|---|---|---|---|
| `lasagnafi.com` | `pnpm --filter @lasagna/landing build` | `packages/landing/dist` | `PUBLIC_VIDEO_URL` (optional) |
| `app.lasagnafi.com` | `pnpm --filter @lasagna/web build` | `packages/web/dist` | standard |
| `demo.lasagnafi.com` | `pnpm --filter @lasagna/web build` | `packages/web/dist` | `VITE_DEMO_MODE=true` |

**Demo user:** Run `pnpm db:seed-demo` to create `demo@lasagnafi.com` / `lasagna123`.

**Production API CORS:** Set `CORS_ORIGIN=https://app.lasagnafi.com,https://demo.lasagnafi.com`.

---

## Contributing

Issues and PRs are welcome. Please open an issue first for significant changes.

---

> **Disclaimer:** Lasagna is a personal finance tool, not licensed financial advice. All projections and recommendations are for informational purposes only.