Skip to content

Commit b62025f

Browse files
author
Codex
committed
feat: Add complete AI camera integration and CI/CD setup
🤖 AI Integration - Add OpenAI Realtime API integration with WebSocket proxy - Integrate ElevenLabs TTS for natural voice responses - Implement YOLO11n object detection on reCamera - Add automated gimbal control based on AI detection - Create Laura API polling and command execution system 📹 reCamera System - Add 3 complete Node-RED flows (ultimate, production, AI-only) - Create 2 interactive dashboards (main control + AI assistant) - Implement real-time status monitoring and activity logging - Add gimbal preset controls and manual positioning - Include test inject nodes for development 🔧 CI/CD & Automation - Set up GitHub Actions for continuous integration - Add AI-powered code review workflow (OpenAI Codex) - Implement security scanning (Trivy) - Configure automated Vercel and Cloudflare deployments - Add JSON flow validation workflow 📝 Templates & Documentation - Create comprehensive PR template with checklists - Add 3 issue templates (bug, feature, reCamera) - Write complete deployment guides (5 markdown files) - Document system architecture and evolution - Add MCP (Model Context Protocol) configuration 🔐 Security - Update .gitignore with comprehensive rules - Add security scanning to CI pipeline - Configure proper secret management - Implement token validation system - Add Cloudflare Worker authentication 🎨 Developer Experience - Add VS Code settings and recommended extensions - Configure Prettier and ESLint automation - Set up TypeScript strict mode - Add comprehensive README with examples - Include troubleshooting guides 🚀 Ready to Deploy - All configurations pre-set and tested - Complete documentation for all components - Automated testing and deployment pipelines - MCP integration for AI-assisted development 🤖 Generated with Claude Code https://claude.com/claude-code
1 parent 4badb92 commit b62025f

29 files changed

Lines changed: 8193 additions & 16 deletions

.env.example

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Supabase Configuration
2+
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
3+
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
4+
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
5+
6+
# Mapbox Configuration
7+
NEXT_PUBLIC_MAPBOX_ACCESS_TOKEN=your_mapbox_access_token
8+
9+
# Twilio Configuration (for driver calls)
10+
TWILIO_ACCOUNT_SID=your_twilio_account_sid
11+
TWILIO_AUTH_TOKEN=your_twilio_auth_token
12+
TWILIO_FROM_NUMBER=your_twilio_phone_number
13+
14+
# SendGrid Configuration (for passwordless auth emails)
15+
SENDGRID_API_KEY=your_sendgrid_api_key
16+
SENDGRID_FROM_EMAIL=noreply@yourdomain.com
17+
18+
# Application Configuration
19+
NEXT_PUBLIC_APP_URL=http://localhost:3000
20+
REWARDS_THRESHOLD_MINUTES=5
21+
22+
# Admin Configuration (comma-separated email list for passwordless auth)
23+
ADMIN_EMAILS=admin@heysalad.com,user@heysalad.com
24+
25+
# AI Integration Configuration
26+
# OpenAI Realtime API (for voice/text interaction)
27+
OPENAI_API_KEY=your_openai_api_key
28+
29+
# ElevenLabs TTS API (for text-to-speech)
30+
ELEVENLABS_API_KEY=your_elevenlabs_api_key
31+
32+
# Cloudflare Worker URL for secure WebSocket proxy
33+
CLOUDFLARE_WORKER_URL=wss://heysalad-openai-proxy.workers.dev
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
---
2+
name: Bug Report
3+
about: Create a report to help us improve
4+
title: '[BUG] '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
## Bug Description
10+
11+
<!-- A clear and concise description of what the bug is -->
12+
13+
## Environment
14+
15+
<!-- Mark the relevant options with an 'x' -->
16+
17+
**Platform:**
18+
- [ ] Next.js Web App
19+
- [ ] reCamera (Node-RED)
20+
- [ ] Cloudflare Worker
21+
- [ ] Mobile (iOS/Android)
22+
23+
**reCamera Model (if applicable):**
24+
- Model: <!-- e.g., reCamera Gimbal -->
25+
- Firmware Version: <!-- e.g., 1.0.0 -->
26+
- Node-RED Version: <!-- e.g., 3.x -->
27+
28+
**Browser (if applicable):**
29+
- Browser: <!-- e.g., Chrome, Safari -->
30+
- Version: <!-- e.g., 120 -->
31+
32+
**OS:**
33+
- OS: <!-- e.g., macOS, Windows, Linux -->
34+
- Version: <!-- e.g., 14.0 -->
35+
36+
## Steps to Reproduce
37+
38+
1. Go to '...'
39+
2. Click on '...'
40+
3. Scroll down to '...'
41+
4. See error
42+
43+
## Expected Behavior
44+
45+
<!-- A clear description of what you expected to happen -->
46+
47+
## Actual Behavior
48+
49+
<!-- A clear description of what actually happened -->
50+
51+
## Screenshots/Videos
52+
53+
<!-- If applicable, add screenshots or videos to help explain your problem -->
54+
55+
## Error Messages
56+
57+
<!-- If applicable, paste any error messages or logs -->
58+
59+
```
60+
Paste error messages here
61+
```
62+
63+
## Additional Context
64+
65+
<!-- Add any other context about the problem here -->
66+
67+
## Possible Solution
68+
69+
<!-- Optional: Suggest a fix or reason for the bug -->
70+
71+
## Related Issues
72+
73+
<!-- Link any related issues here -->
74+
75+
## Impact
76+
77+
<!-- Mark the severity -->
78+
79+
- [ ] 🔴 Critical - System is unusable
80+
- [ ] 🟠 High - Major feature broken
81+
- [ ] 🟡 Medium - Feature partially broken
82+
- [ ] 🟢 Low - Minor issue
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an idea for this project
4+
title: '[FEATURE] '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
## Feature Description
10+
11+
<!-- A clear and concise description of the feature you'd like -->
12+
13+
## Problem Statement
14+
15+
<!-- Describe the problem this feature would solve. Ex. I'm always frustrated when [...] -->
16+
17+
## Proposed Solution
18+
19+
<!-- A clear and concise description of what you want to happen -->
20+
21+
## Alternative Solutions
22+
23+
<!-- A clear and concise description of any alternative solutions or features you've considered -->
24+
25+
## Use Cases
26+
27+
<!-- Describe specific use cases where this feature would be valuable -->
28+
29+
1.
30+
2.
31+
3.
32+
33+
## Feature Category
34+
35+
<!-- Mark the relevant options with an 'x' -->
36+
37+
- [ ] 🤖 AI Integration (OpenAI, ElevenLabs)
38+
- [ ] 📹 Camera/reCamera functionality
39+
- [ ] 🎮 Gimbal control
40+
- [ ] 🎨 UI/UX improvement
41+
- [ ] 📊 Dashboard feature
42+
- [ ] 🔧 Configuration/Setup
43+
- [ ] 📱 Mobile support
44+
- [ ] 🔐 Security enhancement
45+
- [ ] ⚡ Performance optimization
46+
- [ ] 📚 Documentation
47+
- [ ] 🧪 Testing
48+
- [ ] 🔗 API/Integration
49+
50+
## Priority
51+
52+
<!-- Mark one with an 'x' -->
53+
54+
- [ ] 🔴 Critical - Blocker for production
55+
- [ ] 🟠 High - Important for user experience
56+
- [ ] 🟡 Medium - Nice to have
57+
- [ ] 🟢 Low - Future consideration
58+
59+
## Additional Context
60+
61+
<!-- Add any other context, screenshots, or mockups about the feature request here -->
62+
63+
## Technical Considerations
64+
65+
<!-- Optional: Any technical details or constraints to consider -->
66+
67+
### Affected Components
68+
<!-- Which parts of the system would this feature impact? -->
69+
70+
- [ ] Next.js frontend
71+
- [ ] Supabase backend
72+
- [ ] reCamera/Node-RED flows
73+
- [ ] Cloudflare Worker
74+
- [ ] Mobile app
75+
- [ ] API endpoints
76+
77+
### Dependencies
78+
<!-- Are there any dependencies or prerequisites for this feature? -->
79+
80+
## Acceptance Criteria
81+
82+
<!-- What should be true when this feature is complete? -->
83+
84+
- [ ]
85+
- [ ]
86+
- [ ]
87+
88+
## Related Issues/PRs
89+
90+
<!-- Link any related issues or PRs here -->
91+
92+
## Mockups/Examples
93+
94+
<!-- If applicable, add mockups, screenshots, or links to similar implementations -->
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
name: reCamera Integration Issue
3+
about: Report issues specific to reCamera/Node-RED integration
4+
title: '[reCamera] '
5+
labels: reCamera, integration
6+
assignees: ''
7+
---
8+
9+
## reCamera Details
10+
11+
**Model:** <!-- e.g., reCamera Gimbal, reCamera ESP32-S3 -->
12+
**Firmware Version:** <!-- e.g., 1.0.0 -->
13+
**Node-RED Version:** <!-- e.g., 3.1.0 -->
14+
15+
## Integration Component
16+
17+
<!-- Mark the relevant component with an 'x' -->
18+
19+
- [ ] AI Object Detection (YOLO11n)
20+
- [ ] OpenAI Realtime API integration
21+
- [ ] ElevenLabs TTS
22+
- [ ] Gimbal control
23+
- [ ] Laura API polling
24+
- [ ] WebSocket connection
25+
- [ ] Camera streaming (RTSP)
26+
- [ ] Dashboard UI
27+
- [ ] Audio output
28+
- [ ] Command execution
29+
30+
## Issue Description
31+
32+
<!-- Clear description of the issue -->
33+
34+
## Node-RED Flow
35+
36+
<!-- If applicable, paste the relevant Node-RED flow configuration -->
37+
38+
```json
39+
// Paste relevant flow configuration here
40+
```
41+
42+
## Debug Output
43+
44+
<!-- Paste Node-RED debug output -->
45+
46+
```
47+
Paste debug output here
48+
```
49+
50+
## Network Information
51+
52+
**reCamera IP:** <!-- e.g., 192.168.1.106 -->
53+
**Laura API:** <!-- e.g., https://laura.heysalad.app -->
54+
**Cloudflare Worker:** <!-- e.g., wss://heysalad-openai-proxy.workers.dev -->
55+
56+
## Connection Status
57+
58+
<!-- Mark the status of each connection -->
59+
60+
- [ ] ✅ reCamera online
61+
- [ ] ✅ Laura API reachable
62+
- [ ] ✅ WebSocket proxy connected
63+
- [ ] ✅ OpenAI API accessible
64+
- [ ] ✅ ElevenLabs API accessible
65+
- [ ] ❌ Gimbal responding
66+
- [ ] ❌ Camera streaming
67+
- [ ] ❌ Audio output working
68+
69+
## Configuration
70+
71+
**Camera ID:** <!-- e.g., recamera-gimbal-001 -->
72+
**Camera UUID:** <!-- e.g., 34236c48-2dae-4fe6-9bae-27e640f84d71 -->
73+
**Token Status:** <!-- Valid/Invalid/Not set -->
74+
75+
## Steps to Reproduce
76+
77+
1.
78+
2.
79+
3.
80+
81+
## Expected vs Actual Behavior
82+
83+
**Expected:**
84+
<!-- What should happen -->
85+
86+
**Actual:**
87+
<!-- What actually happens -->
88+
89+
## Error Messages
90+
91+
```
92+
Paste any error messages from Node-RED or browser console
93+
```
94+
95+
## Logs
96+
97+
<!-- Attach relevant logs from reCamera or Node-RED -->
98+
99+
## Additional Context
100+
101+
<!-- Any other relevant information -->
102+
103+
## Troubleshooting Attempted
104+
105+
<!-- List troubleshooting steps you've already tried -->
106+
107+
- [ ] Restarted Node-RED
108+
- [ ] Redeployed flow
109+
- [ ] Checked network connectivity
110+
- [ ] Verified API credentials
111+
- [ ] Checked token validation
112+
- [ ] Reviewed debug output
113+
- [ ] Tested with inject nodes
114+
115+
## Impact
116+
117+
<!-- How does this affect your use of the system? -->
118+
119+
- [ ] 🔴 Blocker - Cannot use reCamera at all
120+
- [ ] 🟠 High - Major feature not working
121+
- [ ] 🟡 Medium - Some features not working
122+
- [ ] 🟢 Low - Minor inconvenience

0 commit comments

Comments
 (0)