Skip to content

eddieburroughs/RegularUpkeep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

251 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RegularUpkeep

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.

Tech Stack

  • 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

Quick Start

Prerequisites

  • Node.js 18+
  • npm
  • Supabase instance (self-hosted or cloud)
  • Stripe account

Installation

# 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 dev

The app will be available at http://localhost:3000.

Production Build

npm run build
npm start

Project Structure

src/
├── 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

User Roles

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

Key Features

For Homeowners

  • 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)

For Providers

  • Job notifications and acceptance
  • AI-assisted estimates and messages
  • Stripe Connect for payouts
  • Team member management
  • CRM with customer insights

For the Platform

  • 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

Environment Variables

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.

API Routes

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.

Cron Jobs

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.

Deployment

Using Scripts (Recommended)

# Deploy with automatic backup
./scripts/deploy.sh

# Rollback to previous version
./scripts/rollback.sh

# Emergency rollback (no confirmation)
./scripts/emergency-rollback.sh

Manual Deployment

npm run build
pm2 restart regularupkeep-main-app --update-env

Server Configuration

Both regularupkeep.com and app.regularupkeep.com are served by the same Next.js app via nginx reverse proxy to port 3002.

Documentation

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

Development

Commands

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

Code Style

  • TypeScript strict mode
  • ESLint + Prettier
  • Conventional commits

Testing

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 report

E2E Testing

The 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.

Business Model

Homeowners (Freemium)

  • 1-2 homes: Free
  • Additional homes: $2.50/month each
  • Tenant access: $2.50/seat/month

Providers

  • Verified tier: $10/month (background check, insurance)
  • Preferred tier: +$15/month (priority dispatch)
  • Commission: 8% on jobs ($3.50 minimum)

Sponsors

  • Local sponsor tile: $250/year

License

Proprietary - RegularUpkeep

Support

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •