feat: production-ready deployment with multi-language UI

- Add multi-language support (NL, AR, EN) with RTL
- Improve health checks (SSL-tolerant, multi-endpoint)
- Add DELETE /api/stack/:name for cleanup
- Add persistent storage (portal-ai-workspace-{name})
- Improve rollback (delete domain, app, project)
- Increase SSE timeout to 255s
- Add deployment strategy documentation
This commit is contained in:
Oussama Douhou
2026-01-10 09:56:33 +01:00
parent eb6d5142ca
commit 2f306f7d68
10 changed files with 1196 additions and 462 deletions

View File

@@ -1,58 +1,53 @@
# START HERE
# AI Stack Deployer
🚨🚨🚨🚨 ***PRINCIPLE RULES ALWAYS FIRST*** 🚨🚨🚨🚨
## Quick Start
## What Happened Last Session
**Last Session** (2026-01-09 21:48):
- Fixed CI workflow in `oh-my-opencode-free` project
- Changed trigger from `master``main` to enable `:latest` tag
- Build successful: `git.app.flexinit.nl/oussamadouhou/oh-my-opencode-free:latest`
- Commit: `bdfa5c1`
## Current Task
**Build is successful** - Now need to:
1. ✅ Create `.gitea/workflows/docker-publish.yaml` for THIS project
2. ✅ Initialize git repo
3. 🔧 Create repository on Gitea: https://git.app.flexinit.nl (repo: ai-stack-deployer)
4. Push to trigger build and enable `:latest` tag
## Quick Reference
**Working Workflow**: `/home/odouhou/locale-projects/oh-my-opencode-free/.gitea/workflows/docker-publish.yaml`
**Key Config**:
- Triggers on `main` branch (not master)
- Registry: `git.app.flexinit.nl`
- Auth: `oussamadouhou` + `REGISTRY_TOKEN` secret
- Tags: `:latest` + `:<sha>`
## DOCUMENTATION
**Git Repository**:
```bash
# Remote URL pattern
ssh://git@git.app.flexinit.nl:22222/oussamadouhou/{repo-name}.git
bun run dev # Start server at http://localhost:3000
bun run typecheck # Verify TypeScript
```
# This project
## Current Status
| Component | Status |
|-----------|--------|
| HTTP Server | ✅ Running |
| Dokploy API | ✅ Connected |
| Frontend | ✅ Redesigned (Antigravity style) |
| Multi-language | ✅ NL/AR/EN with auto-detect |
## Stack
- **Backend**: Bun + Hono
- **Frontend**: Vanilla JS (no frameworks)
- **Deployment**: Dokploy → Traefik
- **Styling**: Dark theme, IBM Plex Mono
## Key Files
| File | Purpose |
|------|---------|
| `src/index.ts` | HTTP server + API routes |
| `src/frontend/` | UI (index.html, style.css, app.js) |
| `src/api/dokploy-production.ts` | Dokploy client with retry logic |
| `src/orchestrator/production-deployer.ts` | Deployment orchestration |
## Environment
```bash
DOKPLOY_URL=https://app.flexinit.nl
DOKPLOY_API_TOKEN=<from .env>
STACK_DOMAIN_SUFFIX=ai.flexinit.nl
```
## Git
```bash
origin: ssh://git@git.app.flexinit.nl:22222/oussamadouhou/ai-stack-deployer.git
```
**Environment**:
```bash
STACK_IMAGE=git.app.flexinit.nl/oussamadouhou/oh-my-opencode-free:latest
DOKPLOY_URL=https://app.flexinit.nl
```
## Docs
## Commands
```bash
# Dev server
bun run dev
# Docker
docker-compose up -d
```
See `CLAUDE.md` for full documentation.
- `CLAUDE.md` - Full project documentation
- `docs/TESTING.md` - Test procedures and results
- `docs/AGENTS.md` - AI agent guidelines