How niteboy17/wallet-app works
Wallet App is a personal-finance tracker whose main workflow is signing in, recording income or expenses, and reviewing transaction history and calculated totals. The mobile app also exposes configurable presets and an app-date control for testing monthly automation; backend services apply preset entries and monthly balance rollovers. The mobile client communicates with an Express API, which stores transaction and automation state in a SQL database. Clerk, Redis rate limiting, and scheduled rollover are documented or represented in the source index; some connections to unsampled screens and services are therefore shown only where supported by documentation.
Main entry points: server.js Express server · useTransactions.js Transaction data hook · db.js SQL connection and schema · presets.jsx Automation presets
Components 21
Mobile experience
- Sign in
mobile/app/(auth)/sign-in.jsx - Sign up
mobile/app/(auth)/sign-up.jsx - Home and history
mobile/app/(root)/index.jsx - Transaction entry
mobile/app/(root)/create.jsx - App date state
mobile/context/AppDateContext.jsx - Transaction data hook
mobile/hooks/useTransactions.js - API endpoint config
mobile/constants/api.js
Backend API
- Express server
backend/src/server.js - Transaction routes
backend/src/routes/transactionsRoute.js - Transaction handlers
backend/src/controllers/transactionsController.js - Rate limiter
backend/src/middleware/rateLimiter.js
Monthly automation
- Automation presets
mobile/app/(root)/presets.jsx - Automation service
backend/src/services/monthlyAutomation.js - Monthly rollover
backend/src/services/monthlyRollover.js - Rollover scheduler
backend/src/config/cron.js
Data and infrastructure
- SQL connection and schema
backend/src/config/db.js - SQL database
- Redis configuration
backend/src/config/upstash.js
Other components
- Wallet user
- Clerk auth
- Upstash Redis
Connections 29
- Wallet user → Sign in: signs in
README.md - Wallet user → Sign up: creates account
README.md - Sign in → Clerk auth: authenticates with
README.md - Sign up → Clerk auth: registers with
README.md - Wallet user → Home and history: reviews activity
README.md - Home and history → Transaction data hook: loads transactions
mobile/app/(root)/index.jsx - Home and history → Transaction entry: opens entry
mobile/app/(root)/index.jsx - Transaction entry → Express server: submits transaction
- Wallet user → Automation presets: configures presets
README.md - Automation presets → Transaction data hook: loads summary
mobile/app/(root)/presets.jsx - Automation presets → App date state: sets app date
mobile/app/(root)/presets.jsx - Automation presets → Express server: requests automation
mobile/app/(root)/presets.jsx - Transaction data hook → API endpoint config: uses endpoint
mobile/hooks/useTransactions.js - Transaction data hook → App date state: reads date
mobile/hooks/useTransactions.js - Transaction data hook → Express server: fetches data
mobile/hooks/useTransactions.js - Express server → Transaction routes: mounts routes
backend/src/server.js - Express server → Rate limiter: applies limiter
backend/src/server.js - Express server → SQL connection and schema: initializes database
backend/src/server.js - Express server → Rollover scheduler: starts scheduler
backend/src/server.js - Transaction routes → Transaction handlers: dispatches requests
backend/src/routes/transactionsRoute.js - Transaction handlers → SQL connection and schema: queries and writes
backend/src/controllers/transactionsController.js - Transaction handlers → Automation service: runs automation
backend/src/controllers/transactionsController.js - Automation service → SQL connection and schema: queries and writes
backend/src/services/monthlyAutomation.js - Automation service → Monthly rollover: ensures rollover
backend/src/services/monthlyAutomation.js - Rollover scheduler → Monthly rollover: schedules rollover
backend/src/config/cron.js - Monthly rollover → SQL connection and schema: reads and writes
backend/src/services/monthlyRollover.js - SQL connection and schema → SQL database: connects to
README.md - Rate limiter → Redis configuration: uses configuration
backend/src/middleware/rateLimiter.js - Redis configuration → Upstash Redis: connects to
README.md