Modern Family Financial Management
Features β’ Quick Start β’ Architecture β’ Documentation
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.
|
|
- Mobile-first responsive design
- Dark mode with OKLCH color system
- Smooth animations via Framer Motion
- Accessible components (Radix UI primitives)
- Touch-friendly swipe gestures
- Node.js β₯22.13.0 (see
.nvmrc) - npm 9+
- Supabase account (database)
- Clerk account (authentication)
# 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 devOpen http://localhost:3000 to see the app.
# 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://...βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| 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 |
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.
| 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 |
| 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 |
# Run E2E tests (Playwright)
npx playwright test
# Run E2E with UI
npx playwright test --ui
# Run unit tests (Vitest)
npm run test| Document | Purpose |
|---|---|
| PROJECT_STRUCTURE.md | Complete architecture reference for agents and developers |
| CHANGELOG.md | Version history and release notes |
The project includes netlify.toml for automatic deployment:
npm run buildEnsure all environment variables from .env.example are configured in your deployment platform.
- Read PROJECT_STRUCTURE.md for architecture context
- Follow the feature module pattern for new features
- Use Server Actions for mutations, Services for business logic
- Apply centralized styles from
globals.css - Run
npm run lint && npm run typecheckbefore committing
# Format: type(scope): description
feat(transactions): add receipt image upload
fix(budgets): correct period calculation
docs: update PROJECT_STRUCTURE.md
refactor(auth): simplify onboarding flowBuilt with β€οΈ using Next.js, TypeScript, and Supabase