fix: resolve 4 UI/UX issues

1. Fix typewriter double-letter bug (race condition)
2. Replace flag emojis with text labels (NL/AR/EN)
3. Fix health check TLS options for Bun compatibility
4. Translate 'yourname' placeholder per language
This commit is contained in:
Oussama Douhou
2026-01-10 11:39:14 +01:00
parent fe8abda7d3
commit 67069f3bda
4 changed files with 120 additions and 23 deletions

View File

@@ -108,3 +108,71 @@ source .env && curl -s -H "x-api-key: $DOKPLOY_API_TOKEN" \
| 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 |
---
## Production Verification (2026-01-10)
### Verified Working
| Component | Status | Notes |
|-----------|--------|-------|
| Portal Health | ✅ | `https://portal.ai.flexinit.nl/health` returns healthy |
| Name Validation | ✅ | `/api/check/:name` validates correctly |
| Frontend UI | ✅ | 3 languages (NL, AR, EN), RTL support, typewriter animation |
| Stack Deployment | ✅ | Full flow: project → app → domain → deploy → health check |
| Stack Cleanup | ✅ | `DELETE /api/stack/:name` removes all resources |
| SSL/HTTPS | ✅ | Wildcard cert working for all `*.ai.flexinit.nl` |
### Critical Configuration
```bash
# These settings are REQUIRED for deployment to work
DOKPLOY_URL=https://app.flexinit.nl # Public URL, NOT internal 10.100.0.20
STACK_IMAGE=git.app.flexinit.nl/oussamadouhou/oh-my-opencode-free:latest
STACK_REGISTRY_ID=bKDYM5X7NN34x_lRDjWbz # Registry ID for Docker auth
```
### Known Gotchas (Fixed)
1. **Registry URL format** - Use `git.app.flexinit.nl`, NOT `https://git.app.flexinit.nl`
2. **Username in image path** - Must be `oussamadouhou`, not `odouhou`
3. **Dokploy URL** - Must use public URL for container-to-container communication
4. **Health check** - SSL errors treated as "alive" during cert provisioning
### Test Commands
```bash
# Quick health check
curl -s https://portal.ai.flexinit.nl/health | jq .
# Full deployment test
NAME="test-$(date +%s | tail -c 5)"
RESULT=$(curl -s -X POST https://portal.ai.flexinit.nl/api/deploy \
-H "Content-Type: application/json" \
-d "{\"name\": \"$NAME\"}")
echo $RESULT | jq .
# Monitor deployment (use deploymentId from above)
curl -N "https://portal.ai.flexinit.nl/api/status/$(echo $RESULT | jq -r .deploymentId)"
# Verify stack accessible (after deployment completes)
curl -s -k https://$NAME.ai.flexinit.nl | head -5
# Cleanup
curl -s -X DELETE https://portal.ai.flexinit.nl/api/stack/$NAME | jq .
```
### Dokploy Direct Commands
```bash
# List all ai-stack projects
source .env && curl -s -H "x-api-key: $DOKPLOY_API_TOKEN" \
https://app.flexinit.nl/api/project.all | \
jq '[.[] | select(.name | startswith("ai-stack-")) | {name: .name, id: .projectId}]'
# Get application status
source .env && curl -s -H "x-api-key: $DOKPLOY_API_TOKEN" \
"https://app.flexinit.nl/api/project.one?projectId=<PROJECT_ID>" | \
jq '.environments[0].applications[0] | {name: .name, status: .applicationStatus}'
```