Architecture
============

LocalDevStack is composed of:

- The **orchestrator**: ``lds`` / ``lds.bat`` (selects profiles, runs Compose, common workflows)
- The **HTTP layer**: Nginx (front proxy) and optionally Apache (backend HTTP) depending on your stack choice
- The **runtimes**: PHP (FPM) and Node (and future stacks)
- The **control plane**: the **server-tools** image (domain/vhost generation, TLS automation, secrets helpers)
- The **runner**: supervisord + cron + logrotate and helper exec wrappers

Key idea
--------

Instead of a monolithic "one container does everything" model, LocalDevStack uses:

- Compose profiles to enable only what you need
- Generated configuration artifacts (vhosts, certificates) persisted on the host
- Stable container names/hostnames to keep local routing predictable

How containers cooperate
------------------------

1. You generate vhost configs (via ``lds setup domain``).
2. The Tools container can scan all vhosts and generate certificates.
3. Nginx loads hosts and routes requests either:

   - directly to PHP-FPM (fastcgi) or
   - to Apache (reverse proxy) when Apache mode is enabled or
   - to a Node service (reverse proxy).

4. The Runner handles background services (cron/logrotate) and gives you a consistent place for helper utilities.
5. You also get following services: EMail, DB, Caching
