- Increased dotSize from 2 to 6 (matches auth page)
- Disabled showGradient to remove internal darkening
- Lightened radial gradient: 100% opacity → 50%, 100% radius → 60%
- Lightened top gradient: solid black → 80% opacity
The dot matrix effect is now much more visible like on /auth page
- Created backend i18n system with EN/NL/AR translations
- Frontend now sends language preference with deployment request
- Backend deployment messages follow user's selected language
- Translated key messages: initializing, creating app, SSL waiting, etc.
- Added top margin (100px) on mobile to prevent language button overlap
Fixes real-time deployment status showing English regardless of language selection.
Changed from ${{project.VAR}} to ${VAR} syntax.
The ${{project.VAR}} syntax is for Dokploy's Environment editor UI,
not for docker-compose.yml files. Docker Compose requires standard
${VAR} syntax to read from .env file.
The .env file (managed by Dokploy) already contains the actual values.
- Document requirement for custom compose command with -f flag
- Add troubleshooting section for 'no configuration file provided' error
- Include examples for dev/staging/prod environments
- Explain why Dokploy needs explicit -f flag for non-default filenames
Resolves issue where Dokploy couldn't find docker-compose.prod.yml
- Verified workflow separation and dollar sign escaping
- Retrieved shared project and environment IDs
- Tested local dev server health endpoint
- Documented Dokploy API token blocker (returns Forbidden)
- Added commands for resolving token issue
- Updated environment configuration requirements
Problem: Commit c2c188f (docker ports removed) accidentally reverted the
dollar sign escape fix from commit dd063d5.
Evidence:
- git show dd063d5:docker-compose.dev.yml shows: $${{project.SHARED_PROJECT_ID}} ✅
- Current docker-compose.dev.yml has: ${{project.SHARED_PROJECT_ID}} ❌
- Dokploy error log shows: 'You may need to escape any $ with another $'
- staging.yml and prod.yml still have correct $$ (lines 16-17)
Root Cause:
Manual edit in c2c188f modified docker-compose files and accidentally
removed one dollar sign during the 'docker ports removed' change.
Solution:
Re-applied dollar sign escape: $ → $$ on lines 14-15
Verification:
- grep "SHARED_PROJECT_ID" docker-compose.*.yml shows all have $${{
- docker-compose.dev.yml now matches staging.yml and prod.yml
This will fix the Dokploy deployment error.
Problem: Commit dd063d5 modified docker-compose*.yml files but did NOT
trigger Gitea Actions build because docker-compose files were not in the
workflow's paths trigger list.
Evidence:
- git show --stat dd063d5 shows only docker-compose*.yml and docs/ changed
- .gitea/workflows/docker-publish.yaml paths did not include docker-compose*.yml
- Gitea Actions did not run after push (verified by user)
Solution:
Added 'docker-compose*.yml' to workflow paths trigger list.
Justification:
Docker-compose files are deployment configuration that should trigger
image rebuilds when changed. This ensures Dokploy applications always
pull images with the latest docker-compose configurations.
Testing:
This commit will trigger a build because it modifies .gitea/workflows/**
(which is in the paths list). Future docker-compose changes will also trigger.
Docker Compose interprets $ as variable substitution, so we need to escape
Dokploy's project-level variable syntax by doubling the dollar sign.
Changes:
- docker-compose.*.yml: ${{project.VAR}} → $${{project.VAR}}
- Updated DOKPLOY_DEPLOYMENT.md with correct syntax and explanation
- Updated SHARED_PROJECT_DEPLOYMENT.md with correct syntax and explanation
This fixes the 'You may need to escape any $ with another $' error when
deploying via Dokploy.
Evidence: Tested in Dokploy deployment - error resolved with $$ escaping.
- Add SHARED_PROJECT_ID and SHARED_ENVIRONMENT_ID to all docker-compose files
- Use Dokploy's project-level variable syntax: ${{project.VARIABLE}}
- Deploy all user AI stacks to a single shared Dokploy project
- Update DOKPLOY_DEPLOYMENT.md with shared project configuration guide
- Add comprehensive SHARED_PROJECT_DEPLOYMENT.md architecture documentation
Benefits:
- Centralized management (all stacks in one project)
- Resource efficiency (no per-user project overhead)
- Simplified configuration (project-level shared vars)
- Better organization (500 apps in 1 project vs 500 projects)
How it works:
1. Portal reads SHARED_PROJECT_ID from environment
2. Docker-compose uses ${{project.SHARED_PROJECT_ID}} to reference project-level vars
3. Dokploy resolves these at runtime
4. Portal deploys user stacks as applications within the shared project
Fallback: If variables not set, falls back to legacy behavior (separate project per user)
- Switch build stage from Bun to Node.js to avoid AVX CPU requirement
- Use Node.js 20 Alpine for building React client (Vite)
- Keep Bun runtime for API server (no AVX needed for runtime)
- Update README.md with build strategy and troubleshooting
- Update CLAUDE.md with Docker architecture documentation
- Add comprehensive docs/DOCKER_BUILD_FIX.md with technical details
Fixes#14 - Docker build crashes with "CPU lacks AVX support"
Tested:
- Docker build: SUCCESS
- Container runtime: SUCCESS
- Health check: PASS
- React client serving: PASS
- Create BRANCHING_STRATEGY.md with Git Flow workflow
- Update README.md with branching overview
- Document dev → staging → main flow
- Include PR guidelines and best practices
- Add emergency procedures and rollback instructions
- Add SHARED_PROJECT_ID and SHARED_ENVIRONMENT_ID env vars
- Add findApplicationByName to Dokploy client for app-based lookup
- Update production-deployer to use shared project instead of creating new ones
- Update name availability check to query apps in shared environment
- Update delete endpoint to remove apps from shared project
- Rollback no longer deletes shared project (only app/domain)
- Backward compatible: falls back to per-project if env vars not set
- Update all meta tags to Dutch (nl_NL locale)
- Add Open Graph and Twitter Card tags with image alt text
- Add JSON-LD structured data (WebApplication schema)
- Add favicon assets (svg, ico, png, apple-touch-icon)
- Add social preview image (og-image.png, 1200x630)
- Update theme color to #560fd9
- Pass TERM=xterm-256color for 256-color terminal support
- Pass COLORTERM=truecolor for 24-bit color support
- Pass LANG and LC_ALL for proper Unicode rendering
- Update ROADMAP.md with TUI feature planning and cleanup automation
- Add API endpoint and curl commands to check CI status
- Document authentication with Authorization: token header
- Add response field descriptions (status, conclusion)
- Reference BWS key for GITEA_API_TOKEN
- Update log-ingest to use internal Loki endpoint
- Add standalone docker-compose for dokploy deployment
- Update ROADMAP and LOGGING-PLAN with completed status
- Configure proper network settings for dokploy-network
- Add Loki/Prometheus/Grafana stack in logging-stack/
- Add log-ingest service for receiving events from AI stacks
- Add Grafana dashboard with stack_name filtering
- Update Dokploy client with setApplicationEnv method
- Configure STACK_NAME env var for deployed stacks
- Add alerting rules for stack health monitoring