Skip to content

donnib0i/multidash

Repository files navigation

MultiDash

Multi-stream income tracker for entrepreneurs, freelancers, and side hustlers. Log every dollar from every source. See where you stand.

Live: multidash.vercel.app


What it does

  • Streams — Create named income sources (freelance, job, side hustle, investments, anything). Each stream gets its own dashboard with goals, charts, and notes.
  • Entries — Log income and expenses per stream. Edit or delete at any time.
  • Logs — Full statement view across every stream, grouped by month. Filter by stream, see totals, edit inline.
  • Dashboard — Monthly totals, goal rings, income heatmap, recent activity.
  • Journal — Daily log with day type, wins, losses, mood, and personal habits checklist.
  • Goals — Track progress toward financial targets.
  • Reminders — Simple to-do list with optional due dates.
  • Auth — Sign up, log in, forgot password, change password. All secure.

Stack

Layer Tech
Framework Next.js 14 (App Router)
Auth + DB Supabase (Postgres + RLS)
Styling Tailwind CSS + custom design system
Charts Recharts
Icons Lucide React
Font Geist (Vercel)
Deploy Vercel

Project structure

src/
├── app/
│   ├── (auth)/           # Login, signup, forgot/reset password
│   ├── (dashboard)/      # All protected app pages
│   │   ├── page.tsx      # Main dashboard
│   │   ├── streams/      # Stream list + detail pages
│   │   ├── logs/         # Full entry statement
│   │   ├── journal/      # Daily journal
│   │   ├── goals/        # Goal tracking
│   │   ├── reminders/    # Reminders
│   │   └── settings/     # Account + password
│   ├── (marketing)/      # Public landing page (/home)
│   ├── auth/callback/    # Supabase auth redirect handler
│   └── actions.ts        # All server actions
├── components/
│   ├── dashboard/        # GoalRing, HeatMap, PnLChart, ActivityFeed, StreamCard
│   ├── journal/          # DayTypeSelector, RulesChecklist, RemindersSection
│   ├── streams/          # AddEntryModal, AddStreamModal
│   ├── settings/         # ChangePasswordForm, SignOutButton
│   ├── layout/           # Sidebar (desktop), MobileNav (mobile bottom bar)
│   └── ui/               # Button, Card, Input, Modal
├── lib/
│   ├── supabase/         # client.ts + server.ts
│   └── utils.ts
└── types/index.ts        # TypeScript types + DayType enum

Data model

streams        — income sources (user-defined, any color/icon/goal)
entries        — individual transactions linked to a stream
journal_entries — daily reflections (day_type, notes, wins, losses, mood)
rules          — personal daily habits/rules
rule_checks    — per-day habit completion log
reminders      — to-do items with optional due dates
stream_notes   — free-form markdown notes per stream

All tables use Supabase Row-Level Security — users only ever see their own data.


Getting started

See SETUP.md for full setup instructions.

Quick version:

cp .env.local.example .env.local
# fill in your Supabase URL, anon key, and site URL
npm install
npm run dev

Auth flows

Flow Route
Sign up /signup
Log in /login
Forgot password /forgot-password → email link → /update-password
Change password /settings (while logged in)
Sign out Settings page or sidebar

Design system

Custom Tailwind theme in tailwind.config.ts:

  • brand-primary — #6366f1 (indigo)
  • brand-secondary — #06b6d4 (cyan)
  • income — #10b981 (green)
  • expense — #ef4444 (red)
  • brand-border — #e2e6f8 (subtle purple border)
  • brand-bg — #f0f2ff (light purple background)

Shadows: shadow-card, shadow-card-hover, shadow-modal


Environment variables

NEXT_PUBLIC_SUPABASE_URL=         # Your Supabase project URL
NEXT_PUBLIC_SUPABASE_ANON_KEY=    # Your Supabase anon/public key
NEXT_PUBLIC_SITE_URL=             # Your deployed URL (for password reset emails)

About

Full-stack SaaS entrepreneur dashboard — Next.js, Supabase, PostgreSQL. Trading journal, income tracker, reminders, sticky notes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors