jecreativ.ro's first production deploy went red for behaving exactly as configured: it runs in UnderConstruction mode, so `/` correctly answers 302 to the placeholder, and the check asserted a bare 200. Now `-L` follows the redirect and the FINAL code is asserted. A redirect means the app is up and routing, which is what this step is for; a real failure (502, 500, refused) still reports. The version gate itself was right throughout -- it read 1bafc14 from the production host, including through the under-construction middleware. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpTYCBLH58XzrM7n3xPJ5N
myAi
The myai.ro platform — a set of .NET microservices (CV matching, RAG, email, CV search, page fetching, …) behind a web frontend + API. Part of the easySoft platform.
Layout
Multiple services (*-api, *-job) + web, sharing a common bootstrap in
startup-helpers/ (Serilog, Swagger, .env/Key Vault loading, middleware). See CLAUDE.md
for the full service map, dependency chain, and conventions.
Run locally
docker compose up --build # or run individual services with: dotnet run --project <svc>
Deploy
CI builds registry.easysoft.ro/apps/myai-*:{staging,production}; Watchtower rolls them out to
the staging (10.0.0.183) + production (10.0.0.248) Portainer stacks. Edge Caddy serves
myai.ro (prod) / myai.easysoft.ro (staging).
Logging
Every service: ConfigureJsonSerilog(name, version) → Serilog Compact JSON to stdout → Grafana
Alloy → Loki. No app metrics/traces (simple services).
See CLAUDE.md for the detailed solution guide and ACCESS.md (local, gitignored) for infrastructure access.