How kirithikji/pocketpulse works
PocketPulse is an installable personal-finance app for recording spending, understanding it, and saving toward goals. A typical workflow is sign-in and setup, then entering transactions (including queued offline entries), which feed balances, budgets, insights, reports, and rewards. The graph also preserves planning, recurring items, and the app’s Supabase-backed data layer. Edges are limited to relationships shown in the README or supplied source index/excerpts; unsampled routes and integrations are represented without guessed call chains.
Main entry points: route.ts Sync endpoint · commands.ts Ledger commands · ledger.ts Ledger rules · index.ts Data queries
Components 23
Access and setup
- Auth forms
src/components/auth/auth-forms.tsx - Auth confirmation
src/app/auth/confirm/route.ts - Onboarding
src/app/(public)/onboarding/page.tsx
Entries and sync
- Entry review
src/components/transactions/draft-review.tsx - Ledger commands
src/lib/ledger/commands.ts - Sync endpoint
src/app/api/sync/route.ts - Offline queue
src/lib/offline/queue.ts - Transaction screens
src/app/(app)/(main)/transactions/page.tsx
Planning and rewards
- Budgets and goals
src/app/(app)/(main)/budgets/page.tsx - Recurring items
src/app/(app)/(main)/recurring/page.tsx - Rewards engine
src/lib/rewards/engine.ts
Insights and reports
- Home dashboard
src/app/(app)/(main)/home/page.tsx - Spending insights
src/app/(app)/(main)/insights/page.tsx - Reports and export
src/app/(app)/(main)/reports/page.tsx
Data and domain
- Ledger rules
src/domain/ledger.ts - Financial aggregation
src/domain/aggregation.ts - Money utilities
src/domain/money.ts - Data queries
src/lib/data/queries/index.ts - User session
src/lib/data/session.ts - Reward calculations
src/domain/rewards.ts - User feedback
src/components/feedback/toast.tsx
Other components
- Finance user
- Supabase
Connections 24
- Finance user → Auth forms: signs in
- Auth forms → Auth confirmation: confirms email
- Finance user → Onboarding: sets up finances
src/app/(public)/onboarding/page.tsx - Onboarding → Data queries: loads setup data
src/app/(public)/onboarding/page.tsx - Finance user → Entry review: reviews entries
src/components/transactions/draft-review.tsx - Entry review → Ledger commands: submits commands
src/components/transactions/draft-review.tsx - Finance user → Transaction screens: manages entries
- Offline queue → Sync endpoint: sends queued operations
src/app/api/sync/route.ts - Sync endpoint → User session: verifies session
src/app/api/sync/route.ts - Sync endpoint → Ledger commands: validates commands
src/app/api/sync/route.ts - Sync endpoint → Rewards engine: syncs rewards
src/app/api/sync/route.ts - User session → Supabase: creates scoped client
src/lib/data/session.ts - Data queries → User session: uses session
src/lib/data/session.ts - Ledger commands → Ledger rules: uses ledger rules
src/lib/ledger/commands.ts - Ledger rules → Money utilities: uses money functions
src/domain/ledger.ts - Financial aggregation → Ledger rules: uses ledger functions
src/domain/aggregation.ts - Finance user → Home dashboard: views summary
src/app/(app)/(main)/home/page.tsx - Home dashboard → Data queries: loads finance data
src/app/(app)/(main)/home/page.tsx - Finance user → Budgets and goals: plans spending
- Finance user → Recurring items: manages recurring items
src/app/(app)/(main)/recurring/page.tsx - Finance user → Spending insights: explores spending
- Finance user → Reports and export: views and exports
src/app/(app)/(main)/reports/page.tsx - Rewards engine → Reward calculations: calculates awards
src/lib/rewards/engine.ts - Finance user → User feedback: receives notices