Skip to content

KrankMcCannon/wealth-pillar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

303 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’° Wealth Pillar

Modern Family Financial Management

Next.js React TypeScript Tailwind Supabase

Features β€’ Quick Start β€’ Architecture β€’ Documentation


πŸ›οΈ Product Overview

Wealth Pillar is a professional financial management platform designed for families and small groups to consolidate their financial operations. The system centralizes decentralized assetsβ€”ranging from payroll accounts to investment portfoliosβ€”into a single, unified source of truth.

The platform provides a functional command center for:

  • Financial Consolidation: Aggregating multiple bank accounts and investment holdings.
  • Controlled Collaboration: Managing shared group finances with role-based access.
  • Budgeting & Analysis: Executing multi-period budget plans with real-time tracking.
  • Automated Series: Handling recurring financial commitments and transaction reconciliation.

✨ Features

πŸ’³ Account Management

  • Multi-account support (checking, savings, cash, investments)
  • Real-time balance tracking with optimistic updates
  • Account grouping by household/family

πŸ“Š Transaction Tracking

  • Full CRUD with infinite scroll
  • Advanced filtering (date, category, user, account)
  • Transfer linking between accounts
  • Recurring transaction series

πŸ’° Budget Management

  • Category-based budgeting
  • Visual progress indicators
  • Multi-period budget tracking
  • Spending analysis by category

πŸ“ˆ Financial Insights

  • Dashboard with key metrics
  • Category spending breakdown
  • Monthly income vs expense trends
  • Savings tracking

πŸ”„ Recurring Transactions

  • Flexible frequency options
  • Automatic execution tracking
  • Pause/resume functionality
  • Missed payment detection

πŸ‘₯ Family/Group Management

  • Multi-user with role-based access
  • Group-level financial overview
  • Per-user transaction filtering
  • Admin controls

🎨 Modern UI/UX

  • Mobile-first responsive design
  • Dark mode with OKLCH color system
  • Smooth animations via Framer Motion
  • Accessible components (Radix UI primitives)
  • Touch-friendly swipe gestures

πŸš€ Quick Start

Prerequisites

  • Node.js β‰₯22.13.0 (see .nvmrc)
  • npm 9+
  • Supabase account (database)
  • Clerk account (authentication)

Installation

# Clone the repository
git clone <repository-url>
cd wealth-pillar

# Install dependencies
npm install

# Configure environment
cp .env.example .env
# Edit .env with your Supabase and Clerk credentials

# Start development server
npm run dev

Open http://localhost:3000 to see the app.

Environment Variables

# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_...
CLERK_SECRET_KEY=sk_...
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
CLERK_WEBHOOK_SECRET=whsec_...

# Supabase Database
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_KEY=eyJ...
DATABASE_URL=postgresql://...

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Next.js App Router                       β”‚
β”‚                  /app (Routes, Layouts)                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β–Ό                    β–Ό                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Server          β”‚  β”‚ Client          β”‚  β”‚ Features        β”‚
β”‚ Components      β”‚  β”‚ Components      β”‚  β”‚ (Domain Logic)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚                    β”‚                    β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              /src/features/{domain}/actions                 β”‚
β”‚                    (Server Actions)                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   /src/server/services                      β”‚
β”‚             (Business Logic + Database Access)              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Supabase (PostgreSQL)                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Patterns

Pattern Description
Server Components Data fetching in /app pages, passed as props
Server Actions Mutations in /src/features/{domain}/actions
Service Layer Business logic in /src/server/services
Zustand Stores Client-side cache and UI state
Feature Modules Self-contained domain logic in /src/features

πŸ“ Project Structure

wealth-pillar/
β”œβ”€β”€ app/                      # Next.js App Router
β”‚   β”œβ”€β”€ (auth)/              # Public auth pages (Clerk)
β”‚   β”œβ”€β”€ (dashboard)/         # Protected dashboard pages
β”‚   β”‚   β”œβ”€β”€ accounts/        # Bank accounts
β”‚   β”‚   β”œβ”€β”€ budgets/         # Budget management
β”‚   β”‚   β”œβ”€β”€ dashboard/       # Main overview
β”‚   β”‚   β”œβ”€β”€ investments/     # Portfolio tracking
β”‚   β”‚   β”œβ”€β”€ reports/         # Financial reports
β”‚   β”‚   β”œβ”€β”€ settings/        # User settings
β”‚   β”‚   └── transactions/    # Transaction list
β”‚   β”œβ”€β”€ api/webhooks/        # Clerk webhooks
β”‚   └── globals.css          # Design tokens (OKLCH)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ ui/              # Base primitives (Button, Input, etc.)
β”‚   β”‚   β”œβ”€β”€ form/            # Form components
β”‚   β”‚   β”œβ”€β”€ layout/          # Header, BottomNavigation
β”‚   β”‚   └── shared/          # Shared utilities
β”‚   β”œβ”€β”€ features/            # Domain modules (12 features)
β”‚   β”‚   β”œβ”€β”€ accounts/        # Account management
β”‚   β”‚   β”œβ”€β”€ auth/            # Authentication
β”‚   β”‚   β”œβ”€β”€ budgets/         # Budget tracking
β”‚   β”‚   β”œβ”€β”€ categories/      # Transaction categories
β”‚   β”‚   β”œβ”€β”€ dashboard/       # Dashboard widgets
β”‚   β”‚   β”œβ”€β”€ investments/     # Portfolio management
β”‚   β”‚   β”œβ”€β”€ onboarding/      # User onboarding flow
β”‚   β”‚   β”œβ”€β”€ permissions/     # RBAC system
β”‚   β”‚   β”œβ”€β”€ recurring/       # Recurring transactions
β”‚   β”‚   β”œβ”€β”€ reports/         # Financial analytics
β”‚   β”‚   β”œβ”€β”€ settings/        # Settings pages
β”‚   β”‚   └── transactions/    # Transaction CRUD
β”‚   β”œβ”€β”€ hooks/               # Global React hooks
β”‚   β”œβ”€β”€ lib/                 # Utilities, types, cache
β”‚   β”œβ”€β”€ server/              # Server-side code
β”‚   β”‚   β”œβ”€β”€ db/              # Supabase client
β”‚   β”‚   └── services/        # Business logic (18 services)
β”‚   β”œβ”€β”€ stores/              # Zustand stores (9 stores)
β”‚   └── styles/              # Shared style objects
β”œβ”€β”€ tests/                   # Playwright E2E tests
β”œβ”€β”€ migrations/              # Supabase migrations
└── PROJECT_STRUCTURE.md     # Detailed agent documentation

πŸ“– See PROJECT_STRUCTURE.md for comprehensive architecture documentation.


πŸ› οΈ Tech Stack

Category Technology
Framework Next.js 16.1 (App Router, RSC, Server Actions)
React React 19.2
Language TypeScript 5 (strict mode)
Database Supabase (PostgreSQL)
Auth Clerk
Styling Tailwind CSS 4.1 (OKLCH tokens)
State Zustand 5
Forms React Hook Form + Zod 4
UI Radix UI primitives
Animations Framer Motion
Charts Recharts
E2E Testing Playwright
Unit Testing Vitest

οΏ½ Available Scripts

Script Description
npm run dev Start development server
npm run build Production build
npm run start Start production server
npm run lint Run ESLint
npm run typecheck Run TypeScript checks

πŸ§ͺ Testing

# Run E2E tests (Playwright)
npx playwright test

# Run E2E with UI
npx playwright test --ui

# Run unit tests (Vitest)
npm run test

πŸ“š Documentation

Document Purpose
PROJECT_STRUCTURE.md Complete architecture reference for agents and developers
CHANGELOG.md Version history and release notes

🚒 Deployment

Netlify (Configured)

The project includes netlify.toml for automatic deployment:

npm run build

Environment Setup

Ensure all environment variables from .env.example are configured in your deployment platform.


🀝 Contributing

  1. Read PROJECT_STRUCTURE.md for architecture context
  2. Follow the feature module pattern for new features
  3. Use Server Actions for mutations, Services for business logic
  4. Apply centralized styles from globals.css
  5. Run npm run lint && npm run typecheck before committing

Git Commit Convention

# Format: type(scope): description
feat(transactions): add receipt image upload
fix(budgets): correct period calculation
docs: update PROJECT_STRUCTURE.md
refactor(auth): simplify onboarding flow

πŸ“„ License

MIT


Built with ❀️ using Next.js, TypeScript, and Supabase

About

Professional financial management platform for family and group asset consolidation. Centralizes multi-account tracking, investment portfolio monitoring, and multi-period budgeting into a unified command center.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages