MVA Development Manual
Budget Management System - Minimum Viable Architecture
Target Deployment: budget.devarno.cloudTimeline: Complete by evening (8-10 hours)
Tech Stack: Next.js 14, shadcn/ui, Recharts, N8N, Airtable, Starling Bank API
EXECUTIVE SUMMARY
This manual provides step-by-step instructions to deploy a fully functional budget management system MVP. The agent will build and deploy:- Frontend Application (Next.js + shadcn/ui) hosted on Vercel
- Backend Workflows (N8N JSON templates) for automation
- Database (Airtable) with complete schema
- Integration with Starling Bank API
PHASE 0: PRE-FLIGHT CHECKLIST
Required Credentials & Access
Before starting, gather these credentials:System Requirements
- Node.js 18+ installed
- npm or pnpm package manager
- Git installed
- Access to Starling Bank developer portal
- Airtable account (Pro plan recommended)
- N8N instance (cloud or self-hosted)
- Vercel account
PHASE 1: AIRTABLE DATABASE SETUP (30 minutes)
Step 1.1: Create New Airtable Base
- Log into Airtable
- Create new base called “Budget Tracker”
- Note the Base ID from URL:
https://airtable.com/[BASE_ID]/...
Step 1.2: Create Tables
Execute these table creations in order:Table 1: Transactions
Create table named “Transactions” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Transaction ID | Single line text | Set as primary field |
| Date | Date | Include time, GMT timezone |
| Amount | Currency | GBP, precision 2 |
| Merchant | Single line text | |
| Description | Long text | |
| Category | Link to another record | Link to “Budget Categories” table |
| Status | Single select | Options: “settled”, “pending”, “declined” |
| Direction | Single select | Options: “in”, “out” |
| Payment Method | Single select | Options: “card”, “direct_debit”, “transfer”, “other” |
| Notes | Long text | |
| Auto Categorized | Checkbox | |
| Raw Data | Long text | |
| Created At | Created time | |
| Modified At | Last modified time |
Table 2: Budget Categories
Create table named “Budget Categories” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Name | Single line text | Primary field |
| Monthly Limit | Currency | GBP, precision 2 |
| Buffer Percentage | Number | Precision 0, default 10 |
| Effective Limit | Formula | {Monthly Limit} * (1 + {Buffer Percentage} / 100) |
| Color | Single select | Options: “red”, “blue”, “green”, “yellow”, “purple”, “orange” |
| Icon | Single line text | Emoji |
| Active | Checkbox | Default checked |
| Transactions | Link to another record | Link to “Transactions” (allow multiple) |
| Created At | Created time |
Table 3: Spending Periods
Create table named “Spending Periods” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Period Name | Single line text | Primary field, e.g., “January 2026” |
| Start Date | Date | |
| End Date | Date | |
| Status | Single select | Options: “future”, “current”, “closed” |
| Created At | Created time |
Table 4: Category Performance
Create table named “Category Performance” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Performance ID | Autonumber | Primary field |
| Period | Link to another record | Link to “Spending Periods” |
| Category | Link to another record | Link to “Budget Categories” |
| Total Spent | Currency | GBP |
| Budget Limit | Lookup | From “Category” → “Monthly Limit” |
| Remaining | Formula | {Budget Limit} - {Total Spent} |
| Percentage Used | Formula | IF({Budget Limit} > 0, ({Total Spent} / {Budget Limit}) * 100, 0) |
| Status | Formula | IF({Percentage Used} < 80, "healthy", IF({Percentage Used} < 100, "warning", "exceeded")) |
Table 5: Categorization Rules
Create table named “Categorization Rules” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Rule Name | Single line text | Primary field |
| Match Type | Single select | Options: “merchant”, “keyword”, “amount_range” |
| Match Value | Single line text | |
| Target Category | Link to another record | Link to “Budget Categories” |
| Priority | Number | Precision 0, default 50 |
| Active | Checkbox | Default checked |
| Times Applied | Number | Precision 0, default 0 |
| Created At | Created time |
Table 6: Alert History
Create table named “Alert History” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Alert ID | Autonumber | Primary field |
| Timestamp | Date | Include time |
| Alert Type | Single select | Options: “warning”, “critical”, “daily”, “info” |
| Category | Link to another record | Link to “Budget Categories” |
| Period | Link to another record | Link to “Spending Periods” |
| Threshold | Number | Precision 2 |
| Spent Amount | Currency | GBP |
| Message | Long text | |
| Acknowledged | Checkbox |
Table 7: System Config
Create table named “System Config” Fields to create:| Field Name | Type | Configuration |
|---|---|---|
| Config Key | Single line text | Primary field |
| Config Value | Long text | |
| Description | Long text | |
| Updated At | Last modified time |
Step 1.3: Seed Initial Data
Budget Categories - Create these records:Step 1.4: Get Airtable API Access
- Go to https://airtable.com/create/tokens
- Create new token with scopes:
data.records:readdata.records:writeschema.bases:read
- Add access to “Budget Tracker” base
- Copy token - this is your
AIRTABLE_API_KEY
Step 1.5: Document Table IDs
For each table, get the Table ID:- Open table in Airtable
- Click ”…” menu → “Copy table ID”
- Document these for N8N configuration:
PHASE 2: STARLING BANK API SETUP (15 minutes)
Step 2.1: Get Personal Access Token
- Log into https://developer.starlingbank.com/
- Go to “Personal Access Tokens”
- Create new token with scopes:
account:readbalance:readtransaction:readcard:readcard:write(for enforcement features)
- Copy token - this is your
STARLING_ACCESS_TOKEN
Step 2.2: Get Account UIDs
Make API call to get your account details:accountUid- this is yourSTARLING_ACCOUNT_UIDdefaultCategory- this is yourSTARLING_CATEGORY_UID
Step 2.3: Test API Access
Verify you can fetch transactions:feedItems array.
PHASE 3: N8N WORKFLOW SETUP (90 minutes)
Step 3.1: Access N8N Instance
- Open your N8N instance
- Create new workflow folder called “Budget System”
- Prepare to import workflows
Step 3.2: Configure N8N Credentials
Airtable Credential:- Go to Settings → Credentials
- Create new “Airtable API” credential
- Name: “Budget Tracker Airtable”
- Access Token:
<AIRTABLE_API_KEY> - Save
- Create new “Header Auth” credential
- Name: “Starling Bank API”
- Name:
Authorization - Value:
Bearer <STARLING_ACCESS_TOKEN> - Save
Step 3.3: Import Core Workflows
The following N8N workflow JSONs will be created in separate files. Import each one: Workflow Files to Create:wf_001_transaction_polling.json- Polls Starling every 5 minuteswf_002_transaction_webhook.json- Receives real-time webhookswf_003_categorization.json- Auto-categorizes transactionswf_004_budget_calculation.json- Calculates budget statuswf_005_alert_evaluation.json- Evaluates alert conditionswf_006_notification_dispatch.json- Sends notifications
Step 3.4: Environment Variables for Workflows
Create these N8N environment variables (or substitute directly in workflows):PHASE 4: FRONTEND APPLICATION BUILD (180 minutes)
Step 4.1: Initialize Next.js Project
Step 4.2: Initialize shadcn/ui
Step 4.3: Install shadcn Components
Step 4.4: Project Structure
Create this directory structure:Step 4.5: Environment Configuration
Create.env.local:
Step 4.6: Core Library Files
lib/types.ts
lib/airtable.ts
lib/starling.ts
lib/utils.ts
Step 4.7: API Routes
app/api/airtable/transactions/route.ts
app/api/airtable/categories/route.ts
app/api/airtable/performance/route.ts
app/api/airtable/alerts/route.ts
Step 4.8: Dashboard Components
components/dashboard/budget-overview.tsx
components/dashboard/category-status.tsx
components/dashboard/spending-chart.tsx
components/dashboard/recent-transactions.tsx
Step 4.9: Main Pages
app/layout.tsx
app/page.tsx
app/dashboard/page.tsx
Step 4.10: Build and Test Locally
Step 4.11: Production Build
PHASE 5: VERCEL DEPLOYMENT (30 minutes)
Step 5.1: Initialize Git Repository
Step 5.2: Push to GitHub
Step 5.3: Deploy to Vercel
Option A: Vercel CLI- Go to https://vercel.com/new
- Import repository: budget-tracker
- Configure:
- Framework Preset: Next.js
- Root Directory: ./
- Build Command:
npm run build - Output Directory: .next
- Add environment variables:
- Deploy
Step 5.4: Configure Custom Domain
- In Vercel project settings
- Go to Domains
- Add domain:
budget.devarno.cloud - Configure DNS:
- Type: CNAME
- Name: budget
- Value: cname.vercel-dns.com
- Wait for DNS propagation (5-30 minutes)
Step 5.5: Verify Deployment
PHASE 6: N8N WORKFLOW JSON FILES (60 minutes)
Workflow 1: Transaction Polling
Save aswf_001_transaction_polling.json:
Workflow 2: Auto-Categorization
Save aswf_003_categorization.json:
Workflow 3: Budget Calculation (Simplified)
Save aswf_004_budget_calculation.json:
PHASE 7: INTEGRATION & TESTING (45 minutes)
Step 7.1: Import N8N Workflows
For each workflow JSON file:- Open N8N
- Click ”+” to create new workflow
- Click ”…” menu → “Import from File”
- Select the JSON file
- Update credential references to match your setup
- Activate workflow
Step 7.2: Test Transaction Sync
Step 7.3: Test Categorization
- Create a test transaction in Airtable manually
- Note the record ID
- Trigger WF-003 with test webhook:
- Check if transaction was categorized
Step 7.4: Test Budget Calculations
- Manually trigger WF-004
- Check Category Performance table
- Verify calculations are accurate
Step 7.5: Test Frontend
- Open https://budget.devarno.cloud
- Verify dashboard loads
- Check all components render
- Verify data from Airtable displays correctly
- Test responsiveness on mobile
Step 7.6: End-to-End Test
- Make a real purchase with Starling card
- Wait 5 minutes for polling
- Check transaction appears in Airtable
- Verify categorization applied
- Verify budget updated
- Check dashboard reflects change
PHASE 8: PRODUCTION READINESS (30 minutes)
Step 8.1: Security Checklist
- All API keys stored as environment variables
- No secrets in code repository
- Airtable API token has minimal required scopes
- N8N webhooks use authentication
- HTTPS enabled on all endpoints
- CORS configured properly
Step 8.2: Performance Optimization
Step 8.3: Error Monitoring
Add error tracking (optional but recommended):Step 8.4: Documentation
CreateREADME.md in project root:
Step 8.5: Final Verification
Complete this checklist:- Airtable base populated with seed data
- All 3 N8N workflows active and running
- Frontend deployed to budget.devarno.cloud
- Custom domain DNS configured
- SSL certificate active
- Dashboard loads and displays data
- Transactions syncing from Starling
- Categorization working
- Budget calculations accurate
- No console errors
- Mobile responsive
- Environment variables secured
- Documentation complete
TROUBLESHOOTING
Issue: Transactions Not Syncing
Check:- N8N workflow WF-001 is active
- Starling API credentials are valid
- Last sync timestamp in System Config table
- N8N execution logs for errors
Issue: Categorization Not Working
Check:- WF-003 workflow active
- Categorization rules exist in Airtable
- Rules are marked as Active
- Match values are correct (case-insensitive)
- Review execution logs in N8N
- Test rule matching logic manually
- Add more specific rules
Issue: Dashboard Not Loading
Check:- Vercel deployment successful
- Environment variables set in Vercel
- API routes returning data
- Browser console for errors
Issue: Budget Calculations Incorrect
Check:- Category Performance records exist
- Transactions have Category linked
- WF-004 running regularly
- Formula fields in Airtable correct
- Manually trigger WF-004
- Verify Airtable formulas
- Check transaction amounts (should be in pence)
Issue: Deployment Failed
Check:- Build logs in Vercel
- All dependencies installed
- Environment variables configured
- TypeScript errors
SUCCESS CRITERIA
The MVA is complete when:- ✅ Dashboard accessible at https://budget.devarno.cloud
- ✅ Dashboard displays current budget status from Airtable
- ✅ Transactions sync from Starling Bank every 5 minutes
- ✅ Transactions automatically categorized by rules
- ✅ Budget calculations update every 15 minutes
- ✅ All components render without errors
- ✅ Mobile responsive design works
- ✅ No security vulnerabilities (secrets exposed)
- ✅ System handles errors gracefully
- ✅ Documentation complete
NEXT STEPS (Post-MVA)
After successful MVA deployment:-
Add Alert System (WF-005, WF-006)
- Email notifications
- Slack integration
- SMS alerts via Twilio
-
Implement Enforcement (WF-007)
- Card freeze functionality
- Spending limits
-
Enhanced UI
- Transaction filters and search
- Budget adjustment interface
- Category management UI
- Settings page
-
Historical Analysis
- Import 6 months history (WF-008)
- Trend visualization
- Spending patterns
-
Starling Spaces Integration (WF-010)
- Automatic fund allocation
- Space balance sync
-
Advanced Features
- ML-based categorization
- Predictive budgeting
- Multi-account support
- Export reports
TIMELINE ESTIMATE
| Phase | Task | Duration | Status |
|---|---|---|---|
| 0 | Pre-flight checklist | 15 min | ⏳ |
| 1 | Airtable setup | 30 min | ⏳ |
| 2 | Starling API setup | 15 min | ⏳ |
| 3 | N8N workflows | 90 min | ⏳ |
| 4 | Frontend build | 180 min | ⏳ |
| 5 | Vercel deployment | 30 min | ⏳ |
| 6 | N8N import & config | 60 min | ⏳ |
| 7 | Integration testing | 45 min | ⏳ |
| 8 | Production readiness | 30 min | ⏳ |
| Total | ~8 hours |
AGENT EXECUTION CHECKLIST
For a workspace agent to complete this deployment:Pre-Execution
- Read entire manual
- Verify all credentials available
- Confirm access to required services
- Note target URL: budget.devarno.cloud
Phase Execution
- Complete Phase 0: Gather credentials
- Complete Phase 1: Airtable database (30 min)
- Complete Phase 2: Starling API (15 min)
- Complete Phase 3: N8N workflows (90 min)
- Complete Phase 4: Frontend build (180 min)
- Complete Phase 5: Vercel deployment (30 min)
- Complete Phase 6: N8N JSON import (60 min)
- Complete Phase 7: Integration testing (45 min)
- Complete Phase 8: Production checks (30 min)
Post-Execution
- Verify success criteria met
- Document any deviations
- Note completion time
- Report final URL and status
END OF MVA DEVELOPMENT MANUAL This manual provides complete, step-by-step instructions for deploying the Budget Management System MVA to budget.devarno.cloud within 8-10 hours.