Building CashUp

CashUp is a gamified personal finance education app — track income and expenses, complete Duolingo-style lessons, climb a savings leaderboard, and earn achievement badges. It runs as a Progressive Web App with optional Supabase persistence or an in-memory demo mode for stakeholders.

Live Demo

No account needed — just click sign in to start the demo.

What it does

Marketing landing

Public landing page with hero, feature cards (smart tracking, learn finance, compete & earn, AI tips), user reviews, about section, course previews (3 levels: Fundamentos, Dinero Inteligente, Inversiones), blog teasers, and FAQ accordion.

Auth & onboarding

  • Login with Supabase auth or demo users (“existing user” / “new user” for stakeholder demos)
  • Onboarding flow with profile setup
  • Financial literacy test — baseline quiz before entering the app

Core app (protected routes)

ModulePurpose
DashboardFinancial overview, stats, savings rate, streaks
TransactionsIncome/expense tracking with categories
SubscriptionsRecurring charge detection and management
LearningGamified lessons with study + quiz pages
LeaderboardSavings ranking competition
Savings goalsTarget-based saving progress
Split expensesShared expense splitting
Profile & settingsUser preferences, PWA install instructions

AI features

AIAnalysisDialog provides personalized financial tips based on spending habits.

PWA behavior

When installed as a standalone PWA, the app skips the marketing landing and routes directly to /auth — treating the installed app as the product, not the brochure site.

Tech stack

LayerChoice
FrameworkReact 18 + TypeScript + Vite
UIshadcn/ui + Tailwind CSS
StateZustand
Data fetchingTanStack React Query
BackendSupabase (auth + PostgreSQL)
RoutingReact Router 6
PWAvite-plugin-pwa + service worker
ChartsRecharts
FormsReact Hook Form + Zod
TestingVitest + Testing Library

Demo mode works without Supabase — all data lives in memory so the full UX can be demoed without backend setup.

Development process

UI integration

Integrated the frontend layout from the shadcn/Vite template — sidebar, mobile bottom nav, routing shell, and core page scaffolding.

Demo UI phase

Built the complete UI with hardcoded demo data (no database yet). Completed phase 1 of the product: all screens navigable with realistic placeholder content. Prepared architecture for Supabase integration.

PWA setup

Configured Progressive Web App support via vite-plugin-pwa — manifest, service worker, install prompts, and Vite build fixes for offline-capable deployment.

PWA & mobile navbar

Extensive iteration on mobile PWA layout — safe area insets, bottom navbar positioning, standalone display mode, and preventing content from hiding behind the nav bar on iOS/Android. Single landing page mode (no extra home button when installed).

Lessons, calendar & polish

  • Financial literacy test and lesson quiz pages refined
  • Calendar component fixes for scheduling UI
  • Service worker first implementation
  • Translation fixes and UI ghosting resolved
  • New app icon and navbar sizing finalized
  • Content positioning fix so scrollable areas clear the bottom nav

Latest update

Final polish pass on the deployed demo at finpath-mastery.vercel.app.

Blog

recent-work

Building Smartclic Demo

Modern landing page for a Mexican web development agency — React 19, Vite, Tailwind v4, GSAP scroll, 3D viewer, and bilingual ES/EN.

Read more →

Smartclic Demo

Landing page for a Mexican web agency — React 19, Tailwind v4, GSAP scroll, 3D viewer, and bilingual ES/EN.

How it was built →
border-home1