claude 4e09f27e4d
Build and Push Docker Images / build (push) Successful in 14s
Build and Push Docker Images / smoke (push) Successful in 0s
ci: trigger Watchtower instead of waiting for its poll
The poll is the fallback, not the mechanism. It is 30s on staging but 300s
on production, so a green run could sit five minutes ahead of the deploy it
claimed to have made -- the smoke job was absorbing that wait.

Copied from easyDent verbatim, including the soft failure: an unset secret
or an unreachable API logs and falls back to the poll rather than failing
the build. That matters right now because production has no Watchtower HTTP
API yet, so the production URL will do nothing until the infra stack there
is updated.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WpTYCBLH58XzrM7n3xPJ5N
2026-08-24 11:01:35 +00:00
2026-06-08 17:47:17 +03:00

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 AlloyLoki. No app metrics/traces (simple services).


See CLAUDE.md for the detailed solution guide and ACCESS.md (local, gitignored) for infrastructure access.

S
Description
No description provided
Readme 4.5 MiB
Languages
C# 78%
HTML 8.1%
JavaScript 7.6%
CSS 4.2%
Dockerfile 2.1%