Emergency budgeting app that activates 'survival mode' when funds hit critical thresholds, locking non-essential spending and surfacing $1 meal plans with local free resources
Built for: Individuals living paycheck-to-paycheck, gig workers, service industry employees, and those experiencing temporary financial distress who need emergency-level financial triage
π Live Demo β’ π¦ GitHub β’ π Report Bug β’ π‘ Request Feature
This MVP was autonomously generated by MVP Factory v11 using a free-tier AI API (NVIDIA / Kimi K2.5). Simple logic runs for real. Complex external dependencies are stubbed so the app always works.
| Layer | What it does |
|---|---|
| β Frontend UI | Fully interactive β forms submit, responses render, auth guard works |
| β Input validation | Every API route checks required fields, returns 400 on bad input |
| β Calculations & scoring | Algorithms (risk scores, percentages, rankings, text analysis) run in pure TypeScript |
| β Rule-based logic | Classification, tier detection, flag rules β all real code |
| β Auth flow | Email+password client validation β localStorage token β dashboard guard |
| Feature | Current State | Why it's stubbed | How to fix it |
|---|---|---|---|
| ποΈ Database persistence | In-memory arrays (resets on restart) | No DB provisioned in free tier | See Step 1 below |
| π€ AI/LLM responses | Hardcoded plausible strings | NVIDIA free API has strict rate limits during bulk builds | See Step 2 below |
| π Real authentication | localStorage demo token | No JWT/session infra provisioned | See Step 3 below |
| π§ Email / notifications | Logged + returns {sent: true} |
No email service configured | See Step 4 below |
| π³ Payments | Returns demo status | Stripe not configured | See Step 5 below |
# Option A: Supabase (Postgres, free tier)
npm install @supabase/supabase-js
# In each route: import { createClient } from '@supabase/supabase-js'
# Replace the mock array with: const { data } = await supabase.from('table').select()
# Option B: PlanetScale (MySQL, free tier)
npm install @planetscale/databaseLook for
// TODO: replace with DBcomments insrc/app/api/**/route.ts
// In any API route, replace the hardcoded AI string with:
const res = await fetch('https://integrate.api.nvidia.com/v1/chat/completions', {
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.NVIDIA_API_KEY}`,
'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'moonshotai/kimi-k2.5',
messages: [{ role: 'user', content: yourPrompt }],
max_tokens: 1024
})
});
const { choices } = await res.json();
return NextResponse.json({ result: choices[0].message.content });Add
NVIDIA_API_KEY=your_keyto.env.local
npm install next-auth
# 1. Create src/app/api/auth/[...nextauth]/route.ts with your provider
# 2. Replace localStorage.setItem("auth_token",...) in auth/page.tsx with signIn()
# 3. Replace localStorage.getItem("auth_token") in dashboard/page.tsx with useSession()npm install resend
# Replace the { sent: true } mock in notification routes with:
# await resend.emails.send({ from: 'you@domain.com', to: email, subject, html })npm install stripe @stripe/stripe-js
# Replace demo payment routes with real Stripe checkout sessionsAll the UI is already wired up. Every form already calls the right API route. You only need to swap the stubbed returns for real implementations.
Traditional budgeting apps shame users in poverty or ignore the reality of 'waiting for payday' survival scenarios where every cent and hour matters
- β Decision fatigue when choosing between food and gas
- β Overdraft fees cascading into debt spirals
- β Lack of knowledge about local emergency resources
- β Budgeting apps that assume stable income
Critical threshold 'Broke Mode' activation using Plaid webhooks that automatically categorizes transactions as 'essential' vs 'non-essential' and hides non-essential spending categories with visual lockout UI
Dynamic $1-2 meal plan generator using scraped local grocery prices from Kroger/Albertsons APIs with nutritional calculation and ingredient substitution logic for maximum calories per dollar
Real-time free resource mapper using Google Maps Places API to locate food banks, community fridges, and emergency shelters with walking/transit directions and operating hours validation
Harsh spending lockout mechanism with 24-hour cooling-off period for non-essential purchases requiring manual override confirmation and emergency contact notification
Payday countdown calculator with daily survival budget allocation algorithm that divides remaining funds by days until next deposit and suggests daily spending caps
Overdraft prediction engine using transaction pattern analysis to warn 48 hours before potential negative balance based on recurring bill schedules and current burn rate
A step-by-step breakdown of how each feature is built. Use this as your dev roadmap.
π₯ 1. Critical threshold 'Broke Mode' activation using Plaid webhooks that automatically categorizes transactions as 'essential' vs 'non-essential' and hides non-essential spending categories with visual lockout UI
What it does: Critical threshold 'Broke Mode' activation using Plaid webhooks that automatically categorizes transactions as 'essential' vs 'non-essential' and hides non-essential spending categories with visual lockout UI
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/critical-threshold-broke-mode-activation-using-plaid-webhooks-that-automatically-categorizes-transactions-as-essential-vs-non-essential-and-hides-non-essential-spending-categories-with-visual-lockout-ui/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/CriticalthresholdBrokeModeactivationusingPlaidwebhooksthatautomaticallycategorizestransactionsasessentialvsnonessentialandhidesnonessentialspendingcategorieswithvisuallockoutUISection.tsx |
| 5. Wire up | Call /api/critical-threshold-broke-mode-activation-using-plaid-webhooks-that-automatically-categorizes-transactions-as-essential-vs-non-essential-and-hides-non-essential-spending-categories-with-visual-lockout-ui from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/critical-threshold-broke-mode-activation-using-plaid-webhooks-that-automatically-categorizes-transactions-as-essential-vs-non-essential-and-hides-non-essential-spending-categories-with-visual-lockout-ui(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
β‘ 2. Dynamic $1-2 meal plan generator using scraped local grocery prices from Kroger/Albertsons APIs with nutritional calculation and ingredient substitution logic for maximum calories per dollar
What it does: Dynamic $1-2 meal plan generator using scraped local grocery prices from Kroger/Albertsons APIs with nutritional calculation and ingredient substitution logic for maximum calories per dollar
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/dynamic-1-2-meal-plan-generator-using-scraped-local-grocery-prices-from-kroger-albertsons-apis-with-nutritional-calculation-and-ingredient-substitution-logic-for-maximum-calories-per-dollar/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/Dynamic12mealplangeneratorusingscrapedlocalgrocerypricesfromKrogerAlbertsonsAPIswithnutritionalcalculationandingredientsubstitutionlogicformaximumcaloriesperdollarSection.tsx |
| 5. Wire up | Call /api/dynamic-1-2-meal-plan-generator-using-scraped-local-grocery-prices-from-kroger-albertsons-apis-with-nutritional-calculation-and-ingredient-substitution-logic-for-maximum-calories-per-dollar from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/dynamic-1-2-meal-plan-generator-using-scraped-local-grocery-prices-from-kroger-albertsons-apis-with-nutritional-calculation-and-ingredient-substitution-logic-for-maximum-calories-per-dollar(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
π¨ 3. Real-time free resource mapper using Google Maps Places API to locate food banks, community fridges, and emergency shelters with walking/transit directions and operating hours validation
What it does: Real-time free resource mapper using Google Maps Places API to locate food banks, community fridges, and emergency shelters with walking/transit directions and operating hours validation
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/real-time-free-resource-mapper-using-google-maps-places-api-to-locate-food-banks-community-fridges-and-emergency-shelters-with-walking-transit-directions-and-operating-hours-validation/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/RealtimefreeresourcemapperusingGoogleMapsPlacesAPItolocatefoodbankscommunityfridgesandemergencyshelterswithwalkingtransitdirectionsandoperatinghoursvalidationSection.tsx |
| 5. Wire up | Call /api/real-time-free-resource-mapper-using-google-maps-places-api-to-locate-food-banks-community-fridges-and-emergency-shelters-with-walking-transit-directions-and-operating-hours-validation from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/real-time-free-resource-mapper-using-google-maps-places-api-to-locate-food-banks-community-fridges-and-emergency-shelters-with-walking-transit-directions-and-operating-hours-validation(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
π 4. Harsh spending lockout mechanism with 24-hour cooling-off period for non-essential purchases requiring manual override confirmation and emergency contact notification
What it does: Harsh spending lockout mechanism with 24-hour cooling-off period for non-essential purchases requiring manual override confirmation and emergency contact notification
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/harsh-spending-lockout-mechanism-with-24-hour-cooling-off-period-for-non-essential-purchases-requiring-manual-override-confirmation-and-emergency-contact-notification/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/Harshspendinglockoutmechanismwith24hourcoolingoffperiodfornonessentialpurchasesrequiringmanualoverrideconfirmationandemergencycontactnotificationSection.tsx |
| 5. Wire up | Call /api/harsh-spending-lockout-mechanism-with-24-hour-cooling-off-period-for-non-essential-purchases-requiring-manual-override-confirmation-and-emergency-contact-notification from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/harsh-spending-lockout-mechanism-with-24-hour-cooling-off-period-for-non-essential-purchases-requiring-manual-override-confirmation-and-emergency-contact-notification(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
π 5. Payday countdown calculator with daily survival budget allocation algorithm that divides remaining funds by days until next deposit and suggests daily spending caps
What it does: Payday countdown calculator with daily survival budget allocation algorithm that divides remaining funds by days until next deposit and suggests daily spending caps
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/payday-countdown-calculator-with-daily-survival-budget-allocation-algorithm-that-divides-remaining-funds-by-days-until-next-deposit-and-suggests-daily-spending-caps/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/PaydaycountdowncalculatorwithdailysurvivalbudgetallocationalgorithmthatdividesremainingfundsbydaysuntilnextdepositandsuggestsdailyspendingcapsSection.tsx |
| 5. Wire up | Call /api/payday-countdown-calculator-with-daily-survival-budget-allocation-algorithm-that-divides-remaining-funds-by-days-until-next-deposit-and-suggests-daily-spending-caps from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/payday-countdown-calculator-with-daily-survival-budget-allocation-algorithm-that-divides-remaining-funds-by-days-until-next-deposit-and-suggests-daily-spending-caps(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
π€ 6. Overdraft prediction engine using transaction pattern analysis to warn 48 hours before potential negative balance based on recurring bill schedules and current burn rate
What it does: Overdraft prediction engine using transaction pattern analysis to warn 48 hours before potential negative balance based on recurring bill schedules and current burn rate
How to implement:
| Step | What to do |
|---|---|
| 1. API Route | Create src/app/api/overdraft-prediction-engine-using-transaction-pattern-analysis-to-warn-48-hours-before-potential-negative-balance-based-on-recurring-bill-schedules-and-current-burn-rate/route.ts with a POST handler |
| 2. Input Schema | Accept { userId?, ...featureParams } in the request body |
| 3. Server Logic | Process the request, call external APIs if needed, return JSON |
| 4. UI Component | Create src/components/Overdraftpredictionengineusingtransactionpatternanalysistowarn48hoursbeforepotentialnegativebalancebasedonrecurringbillschedulesandcurrentburnrateSection.tsx |
| 5. Wire up | Call /api/overdraft-prediction-engine-using-transaction-pattern-analysis-to-warn-48-hours-before-potential-negative-balance-based-on-recurring-bill-schedules-and-current-burn-rate from the component using fetch on form submit |
Potential enhancements:
- β‘ Cache repeated lookups with
unstable_cacheor Redis - π Add rate limiting to
/api/overdraft-prediction-engine-using-transaction-pattern-analysis-to-warn-48-hours-before-potential-negative-balance-based-on-recurring-bill-schedules-and-current-burn-rate(e.g. Upstash Ratelimit) - π± Make the UI section responsive-first (mobile breakpoints)
- π Log feature usage to analytics (Plausible / PostHog)
- π§ͺ Add an integration test for the API route
User Request
β
βΌ
Next.js Edge βββΊ API Route βββΊ Business Logic βββΊ Data Store
β β
React UI βββββββββββββββββββ Response / JSON
β
Real-time UI Update
| Attribute | Details |
|---|---|
| Audience | Individuals living paycheck-to-paycheck, gig workers, service industry employees, and those experiencing temporary financial distress who need emergency-level financial triage |
| Tech Level | π‘ Medium |
| Pain Level | High |
| Motivations | Survive until next paycheck without overdrafts β’ Maintain dignity while accessing assistance |
| Price Willingness | free-only |
MVP Factory Validation Report β 2026-03-02
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
PASS Market Demand ββββββββββ 9/10
β
PASS Competition Gap ββββββββββ 8/10
β
PASS Technical Feasibility ββββββββββ 7/10
β
PASS Monetization Potential ββββββββββ 6/10
β
PASS Audience Fit ββββββββββ 9/10
βββββββββββββββββββββββββββββββββββββββββββββββββββββ
OVERALL SCORE ββββββββββ 8/10
VERDICT π’ BUILD β Strong market opportunity
TESTS PASSED 5/5
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Why this works: Exceptional social proof (1247 upvotes) validates severe pain point. Unique 'survival mode' angle with psychological guardrails differentiates from YNAB/Mint which optimize abundance, not scarcity. Technical complexity is manageable with Plaid integration. Monetization via ethical ads (credit unions, gov assistance) avoids extracting from the poor while maintaining accessibility. Massive TAM (78% of Americans live paycheck-to-paycheck).
Unique angle: π‘ Only budgeting app that treats extreme poverty as a temporary emergency state requiring 'triage mode' rather than shame, with harsh lockout mechanisms and local survival resource integration
Competitors analyzed: YNAB (You Need A Budget), Mint (Intuit Credit Karma), PocketGuard
Next.js 14 App Router + TypeScript + TailwindCSS + Lucide-react
| Layer | Technology | Purpose |
|---|---|---|
| π₯οΈ Frontend | Next.js 14 App Router | React framework |
| π¨ Styling | TailwindCSS | Utility-first CSS |
| π Backend | Next.js API Routes | Serverless endpoints |
| πΎ Data | Server-side logic | Business processing |
| π Deploy | Vercel | Edge deployment |
# Clone & install
git clone https://github.com/guyromb/brokemode.git
cd brokemode
npm install
# Start development
npm run dev
# β http://localhost:3000
# Build for production
npm run build
npm start# Add your keys here
NEXT_PUBLIC_APP_NAME=BrokeMode| Signal | Data |
|---|---|
| π΄ Problem Severity | High |
| π Market Demand | 9/10 |
| π Competition Gap | 8/10 β Blue ocean π |
| π° Monetization | 6/10 |
| π― Model | π Free with Google AdSense |
| π£ Source | reddit community signal |
Contributions are welcome! Here's how:
- Fork the repo
- Create your branch:
git checkout -b feature/amazing-feature - Commit:
git commit -m 'Add amazing feature' - Push:
git push origin feature/amazing-feature - Open a Pull Request
MIT License β see LICENSE for details.
Discovered from reddit Β· Built 2026-03-02 Β· Powered by MVP Factory v11
Autonomously researched, validated & generated β zero human code written