AI-powered home maintenance made simple.
RegularUpkeep is a full-stack home maintenance platform connecting homeowners with trusted service providers. It includes a marketing website, homeowner dashboard, provider portal, handyman app, sponsor system, and admin tools.
- Framework: Next.js 16 (App Router)
- Language: TypeScript
- Database/Auth: Supabase (self-hosted)
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Payments: Stripe Connect
- AI: Hybrid OpenAI + Anthropic Claude
- Notifications: Resend (email), Twilio (SMS), Web Push
- Deployment: PM2 + nginx on VPS
- Node.js 18+
- npm
- Supabase instance (self-hosted or cloud)
- Stripe account
# Clone the repository
git clone https://github.com/your-org/RegularUpkeep.git
cd RegularUpkeep
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env.local
# Edit .env.local with your keys
# Run database migrations
npx supabase db push
# Start development server
npm run devThe app will be available at http://localhost:3000.
npm run build
npm startsrc/
├── app/ # Next.js App Router
│ ├── (marketing)/ # Marketing pages (grouped route)
│ ├── api/ # 129 API routes
│ ├── app/ # Homeowner dashboard
│ │ ├── admin/ # Admin panel
│ │ ├── calendar/ # Maintenance calendar
│ │ ├── inspection/ # Home inspections
│ │ ├── properties/ # Property management
│ │ └── requests/ # Service requests
│ ├── auth/ # Authentication
│ ├── handyman/ # Handyman portal
│ ├── provider/ # Provider portal
│ │ ├── jobs/ # Job management
│ │ ├── onboarding/ # Provider signup + Stripe Connect
│ │ └── team/ # Team management
│ └── sponsor/ # Sponsor portal
│
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── marketing/ # Marketing components
│ ├── support-chat/ # AI support chatbot
│ └── pwa/ # Progressive Web App components
│
├── content/
│ └── site.ts # Single source of truth for marketing content
│
├── lib/
│ ├── ai/ # AI gateway, tasks, providers
│ ├── config/ # Database-backed admin config
│ ├── email/ # Email notifications (Resend)
│ ├── push/ # Web push notifications
│ ├── sms/ # SMS notifications (Twilio)
│ ├── stripe/ # Stripe payments & Connect
│ ├── supabase/ # Supabase clients
│ └── support-chat/ # Chatbot logic, RAG, tickets
│
├── types/
│ └── database.ts # Supabase type definitions
│
docs/ # Comprehensive documentation
├── master-user-guide.md # Unified user documentation
├── homeowner-handbook.md # Homeowner guide
├── provider-handbook.md # Provider guide
├── admin-handbook.md # Admin operations
├── ai-integration-map.md # AI features documentation
├── stripe-payment-flows.md # Payment lifecycle
├── sop-pack.md # Standard operating procedures
└── ... # 15+ documentation files
scripts/
├── deploy.sh # Deploy with backup
├── rollback.sh # Standard rollback
└── emergency-rollback.sh # Quick rollback
| Role | Portal | Description |
|---|---|---|
| Homeowner | /app |
Manage properties, schedule maintenance, book services |
| Commercial | /commercial |
Multi-site facility management, work orders, compliance |
| Provider | /provider |
Receive jobs, send estimates, manage team |
| Handyman | /handyman |
Individual contractor mobile-first interface |
| Sponsor | /sponsor |
Local business advertising tiles |
| Admin | /app/admin |
Platform operations, disputes, config |
- Property and system tracking (HVAC, plumbing, etc.)
- AI-powered maintenance calendar with reminders
- Service request intake with photo analysis
- Provider booking and messaging
- Home inspection reports (PDF export)
- Document binder (receipts, warranties, manuals)
- Job notifications and acceptance
- AI-assisted estimates and messages
- Stripe Connect for payouts
- Team member management
- CRM with customer insights
- Hybrid AI (OpenAI for vision, Claude for text)
- Support chatbot with RAG knowledge base
- Multi-channel notifications (email, SMS, push)
- Stripe payments with 72-hour dispute window
- Admin dispute resolution and fraud detection
Copy .env.example to .env.local and configure:
| Variable | Required | Description |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Yes | Supabase API URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Yes | Supabase anonymous key |
SUPABASE_SERVICE_ROLE_KEY |
Yes | Supabase service role key |
STRIPE_SECRET_KEY |
Yes | Stripe secret key |
STRIPE_WEBHOOK_SECRET |
Yes | Stripe webhook signing secret |
OPENAI_API_KEY |
For AI | OpenAI API key (vision tasks) |
ANTHROPIC_API_KEY |
For AI | Anthropic API key (text tasks) |
RESEND_API_KEY |
For email | Resend API key |
TWILIO_* |
For SMS | Twilio credentials |
VAPID_* |
For push | Web push VAPID keys |
GOOGLE_MAPS_API_KEY |
For maps | Google Maps API key |
CRON_SECRET |
For crons | Cron job authentication |
See .env.example for the complete list with descriptions.
The app includes 129 API routes organized by feature:
| Category | Routes | Description |
|---|---|---|
/api/maintenance/* |
8 | Task CRUD, calendar, plan generation |
/api/properties/* |
10 | Systems, members, invites, predictions |
/api/service-requests/* |
6 | Requests, AI intake, change orders |
/api/invoices/* |
4 | Approval, disputes, AI review |
/api/provider/* |
12 | Connect, estimates, messages, CRM, billing |
/api/billing/* |
4 | Checkout, portal, cancel, reactivate |
/api/commercial/* |
10 | Organizations, sites, work orders, binder |
/api/admin/* |
18 | Config, disputes, fraud, KB, analytics, outreach |
/api/ai/* |
4 | Media analysis, feedback |
/api/cron/* |
7 | Scheduled jobs |
/api/support-chat/* |
5 | Chatbot, tickets, uploads |
See API.md for complete API documentation.
| Endpoint | Schedule | Purpose |
|---|---|---|
/api/cron/task-notifications |
Daily 8 AM | Send maintenance reminders |
/api/cron/process-transfers |
Hourly | Process provider payouts |
/api/cron/provider-qualification |
Weekly | Check provider tier eligibility |
/api/cron/ai-cleanup |
Daily | Clean old AI data per retention policy |
/api/cron/fraud-review |
Daily | Generate fraud alerts |
/api/cron/cleanup-test-accounts |
Daily 7 AM | Remove E2E test accounts |
All cron jobs require Authorization: Bearer $CRON_SECRET.
# Deploy with automatic backup
./scripts/deploy.sh
# Rollback to previous version
./scripts/rollback.sh
# Emergency rollback (no confirmation)
./scripts/emergency-rollback.shnpm run build
pm2 restart regularupkeep-main-app --update-envBoth regularupkeep.com and app.regularupkeep.com are served by the same Next.js app via nginx reverse proxy to port 3002.
| Document | Audience | Description |
|---|---|---|
| CLAUDE.md | AI/Developers | Full project context |
| DEPLOYMENT.md | DevOps | Deployment procedures |
| docs/master-user-guide.md | All users | Unified platform guide |
| docs/stripe-payment-flows.md | Developers | Payment lifecycle |
| docs/ai-integration-map.md | Developers | AI features map |
| docs/sop-pack.md | Support | Standard procedures |
npm run dev # Start development server
npm run build # Production build
npm run start # Start production server
npm run lint # Run ESLint
npm run test # Run tests- TypeScript strict mode
- ESLint + Prettier
- Conventional commits
npm run test # Run unit tests
npm run test:coverage # With coverage report
npm run test:e2e # Run Playwright E2E tests
npm run test:e2e:headed # E2E with visible browser
npm run test:e2e:report # View HTML test reportThe project includes 175 Playwright E2E tests covering:
- Public pages and navigation
- Homeowner/provider onboarding flows
- Service request and job workflows
- Payment and billing flows
- Property member management and invitations
E2E tests run automatically daily at 6 AM EST, with test account cleanup at 7 AM.
- 1-2 homes: Free
- Additional homes: $2.50/month each
- Tenant access: $2.50/seat/month
- Verified tier: $10/month (background check, insurance)
- Preferred tier: +$15/month (priority dispatch)
- Commission: 8% on jobs ($3.50 minimum)
- Local sponsor tile: $250/year
Proprietary - RegularUpkeep
- Email: support@regularupkeep.com
- Phone: (855) 718-7533