A complete voice-first AI assistant system for contractors across multiple trades. This monorepo contains both the backend API and the React dashboard.
jarvis/
βββ backend/ # Node.js Express backend API
β βββ src/
β β βββ db/ # Database schema and connection
β β βββ routes/ # API endpoints
β β βββ services/ # Business logic (pricing, email, agent)
β β βββ types/ # TypeScript type definitions
β β βββ index.ts # Express server entry point
β βββ package.json
β βββ README.md
β βββ API.md # API documentation
β βββ DEPLOYMENT.md # Deployment guide
β
βββ dashboard/ # React TypeScript frontend
β βββ src/
β β βββ api/ # Backend API client
β β βββ components/ # React components
β β βββ store/ # Zustand state management
β β βββ App.tsx
β β βββ main.tsx
β βββ package.json
β βββ vite.config.ts
β βββ README.md
β
βββ README.md # This file
βββ .gitignore
βββ docker-compose.yml # (Optional) Local development setup
cd backend
npm install
npm run devBackend runs on http://localhost:3000
cd dashboard
npm install
npm run devDashboard runs on http://localhost:5173
- Trade-Agnostic Architecture β Works with any contractor type (gutters, roofing, plumbing, electrical, HVAC, etc.)
- Job Management β Create, update, and track jobs with measurements and materials
- Configurable Pricing Engine β Support for per-unit, tiered, labor-based, and hybrid pricing models
- Quote Generation β Automatically calculate and generate professional quotes
- Email Delivery β Send quotes and updates via email with HTML formatting
- Voice Command Processing β Extract intent and entities from natural language
- Memory & Context β Store contractor profiles and job history with pgvector support
- 38 Passing Tests β Comprehensive test coverage for pricing, voice extraction, and agent logic
- Job Management β Create, view, and manage jobs with client details
- Quote Generation & Tracking β Generate quotes and track email delivery status
- Professional UI β Modern gradient design with responsive layout
- Real-time Updates β Live status updates for jobs and quotes
- Contractor Settings β Manage profile and communication preferences
- Email Integration β Send quotes directly to clients with delivery tracking
- Runtime: Node.js 22+
- Framework: Express 4
- Database: PostgreSQL + pgvector
- Language: TypeScript
- Testing: Vitest
- Email: Nodemailer
- Voice: OpenAI Realtime API (integration ready)
- Framework: React 19
- Language: TypeScript
- Build Tool: Vite
- State Management: Zustand
- HTTP Client: Axios
- Styling: CSS3
- Backend API: See
backend/API.mdfor full API documentation - Backend Setup: See
backend/README.mdfor backend-specific instructions - Dashboard: See
dashboard/README.mdfor frontend-specific instructions - Architecture: See
backend/ARCHITECTURE.mdfor system design details - Deployment: See
backend/DEPLOYMENT.mdfor deployment instructions
Create .env in the backend/ directory:
DATABASE_URL=postgresql://user:password@localhost:5432/jarvis_db
NODE_ENV=development
PORT=3000
OPENAI_API_KEY=sk-...
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your-email@gmail.com
EMAIL_PASSWORD=your-app-password
JWT_SECRET=your-secret-key-here
Create .env in the dashboard/ directory:
REACT_APP_API_URL=http://localhost:3000/api
POST /api/contractorsβ Create contractorGET /api/contractors/:idβ Get contractorGET /api/contractorsβ List contractorsPUT /api/contractors/:idβ Update contractorDELETE /api/contractors/:idβ Delete contractor
POST /api/jobsβ Create jobGET /api/jobs/:idβ Get jobGET /api/jobsβ List jobsPUT /api/jobs/:idβ Update jobDELETE /api/jobs/:idβ Delete job
POST /api/quotesβ Generate quoteGET /api/quotes/:idβ Get quoteGET /api/quotesβ List quotesPOST /api/quotes/:id/sendβ Send quote via email
POST /api/voice/extractβ Extract intent and entities from textPOST /api/agent/commandβ Process voice command
cd backend
npm run test:runRuns 50+ tests covering:
- Pricing engine calculations
- Voice intent extraction
- Quote generation
- Email formatting
- Agent logic
docker-compose upBackend:
cd backend
npm run build
npm startDashboard:
cd dashboard
npm run build
npm run preview- Vercel: Deploy dashboard to Vercel, backend to Railway/Render
- Heroku: Use Procfile for backend, dashboard on Vercel
- AWS: ECS for backend, S3 + CloudFront for dashboard
- DigitalOcean: App Platform for both
See backend/DEPLOYMENT.md for detailed instructions.
The system supports 7 voice command families:
- Start Job β "Start a new job for John Smith"
- Add Measurements β "Add 100 feet of gutter"
- Add Materials β "Add 10 sheets of aluminum"
- Build Quote β "Generate a quote for this job"
- Schedule Delivery β "Schedule delivery for tomorrow"
- Message Contractor β "Send a message to the client"
- Lookup Job β "Look up the previous job for this customer"
The dashboard is fully responsive and works on:
- Desktop (Chrome, Firefox, Safari, Edge)
- Tablet (iPad, Android tablets)
- Mobile (iPhone, Android phones)
- Environment variables for sensitive data
- JWT authentication ready
- Email validation
- Input sanitization
- CORS configured for production
MIT
- Create a feature branch:
git checkout -b feature/your-feature - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature/your-feature - Open a Pull Request
For issues, questions, or suggestions, please open an issue on GitHub or contact the development team.
- OpenAI Realtime API integration for live voice transcription
- Advanced analytics dashboard
- PDF quote export
- Customizable email templates per trade
- React Native mobile app
- Multi-language support
- Contractor marketplace
- Integration with accounting software
Built with β€οΈ for contractors everywhere