Testing Guide
Quick Verification
API Endpoints
| Endpoint |
Method |
Purpose |
/health |
GET |
Server status |
/api/check/:name |
GET |
Name availability |
/api/deploy |
POST |
Start deployment |
/api/status/:id |
GET |
SSE progress stream |
/api/stack/:name |
DELETE |
Delete stack and cleanup |
Test Checklist
Backend
| Test |
Command |
Expected |
| Server starts |
bun run dev |
"starting on http://0.0.0.0:3000" |
| Health endpoint |
curl localhost:3000/health |
{"status":"healthy"...} |
| TypeScript |
bun run typecheck |
No errors |
| Dokploy connection |
Check /api/check/test-name |
Returns availability |
Frontend
| Test |
Action |
Expected |
| Page loads |
Open localhost:3000 |
Dark theme, centered content |
| Typewriter |
Wait 2s |
"Choose Your Stack Name" animates |
| Language switch |
Click 🇲🇦 |
Arabic text, RTL layout |
| Name validation |
Type "ab" |
Error: too short |
| Reserved name |
Type "admin" |
Error: reserved |
| Valid name |
Type "my-stack" |
"✓ Name is available!" |
Deployment Flow
| Step |
Indicator |
| Submit form |
Progress bar appears |
| SSE updates |
Log entries animate in |
| Success |
Typewriter: "Deployment Complete" |
| Error |
Typewriter: "Deployment Failed" |
Infrastructure
| Service |
URL |
Purpose |
| Dokploy |
https://app.flexinit.nl |
Container orchestration |
| Traefik |
144.76.116.169 |
SSL termination |
| Stacks |
*.ai.flexinit.nl |
Deployed AI assistants |
Full Deployment Test
Cleanup Commands
Common Issues
| Issue |
Solution |
| CSS not loading |
Check /style.css returns CSS, not HTML |
| 401 on Dokploy |
Regenerate API token in Dokploy dashboard |
| Typewriter not running |
Check browser console for JS errors |
| RTL not working |
Verify dir="rtl" on <html> element |
| Health check timeout |
Container startup can take 1-2 min, timeout is 3 min |
| SSL cert errors |
Health check treats SSL errors as "alive" during provisioning |
| SSE disconnects |
idleTimeout set to 255s (max), long deployments should complete |