Techservice.cloud should expose integrations through clear product surfaces, not generic cloud-console controls.
Integration map
| System | Role | Dashboard surface |
|---|---|---|
| Hetzner | Provider server creation, lifecycle, IP, specs, region, and traffic facts. | Server list, server detail, provisioning. |
| Netcup | Provider server inventory and lifecycle where Hetzner is not the source. | Server list, server detail, provisioning. |
| Coolify | Applications, services, databases, deployments, app domains, certificates, and app-level backups. | Server detail sections. |
| Cloudflare | DNS records and edge configuration when Techservice manages a domain handoff. | Provisioning, domains and TLS. |
| Uptime Kuma | Health checks, availability, and incident signals. | Server detail and overview health cards. |
| Supabase | Customer records, normalized server records, auth, provisioning events, and dashboard state. | All dashboard pages. |
| BullMQ and Redis | Durable background jobs for provisioning and sync operations. | Provisioning queue and event history. |
| Resend | Transactional email for account, support, and provisioning updates. | Notifications and support flows. |
Credential boundaries
Store integration credentials by system and environment. UI controls should never imply an action is available until the correct integration is connected and scoped.
Sync behavior
Provider sync should update server-level facts such as status, public IP, region, plan, CPU, memory, disk, and traffic allowance.
Coolify sync should update application-level facts such as resources, deployments, domains, databases, certificates, and backups.
Failure handling
Integration failures should create visible dashboard events:
- Failed provider action
- Failed Coolify resource sync
- DNS wait or propagation delay
- Health check registration failure
- Email delivery failure
Each event should include the affected object, source system, and next operator action.