Each app is a Coolify resource built from a Git repository or a Docker Compose file. Coolify builds the image on the server, starts the containers on their own private network, and tells Traefik which hostname belongs to them.
Multi-tenant hotel property-management system with point-of-sale. This is the public demo host, reseeded with fresh sample data every night at 03:30.
How it runs
Five containers: a web front end, an api, a dedicated postgres, a redis cache and a caddy sidecar that serves the built front end and proxies /api to the backend. Backed up nightly at 02:30.
The same HMS platform, deployed as an isolated instance for Ishasha Junction Hotel. Real bookings, real staff, real data — so it has its own database and its own 02:45 backup.
How it runs
Identical stack to the demo (web, api, postgres, redis, caddy) but a completely separate Coolify resource and Docker network. A bug on the demo cannot touch this tenant's data. The custom domain is a CNAME to persmon.cloud.
Jasper's personal life dashboard — the one app on this server for a single person. Scheduled jobs run every 15 minutes; the database is backed up at 02:50.
How it runs
An app container plus its own db. Deploys are triggered by a webhook on push. Background jobs are fired by a host-side cron (jasper-os-cron.sh) rather than inside the container, so they survive redeploys.
Public voting platform for the 1st National Sickle Cell Awards 2026. Isolated on purpose: its own auth service, its own gateway, its own database. Ballots are counted in every nightly backup log.
How it runs
Four containers: web, auth, an authgw that fronts the auth service, and db. Staff accounts, SMTP and secrets are managed by dedicated scripts on the host.
The first app ever deployed here and still the quickest health check: if hello answers, DNS, the firewall, Traefik, TLS and Coolify are all working.
How it runs
Auto-deploys on every push to the private persmon-hello repository through the Coolify GitHub App. One container, no database.
git push → deploy
Uganda Bookshop
Staging
no public domain yet
Next.js storefront for Uganda Bookshop, currently in staging. Catalogue and cover images were imported on 21 Sep; the storefront goes public once the domain is pointed here.
How it runs
A single Coolify application in its own project. Uses the self-hosted Supabase stack for auth and data.
next.jssupabase
OMS demo
Outside Coolify
internal only
An order-management demo started directly with Docker from ~/oms-build, refreshed by a cron job every 10 minutes. The only application container Coolify does not manage.
How it runs
Plain docker run — no Traefik labels, so it has no public hostname. Logs go to ~/oms-cron.log.
The page you are reading. Static HTML served by nginx; edit the files and the site updates instantly with no rebuild.
How it runs
Coolify Docker-image resource persmon-dashboard (nginx:1.27-alpine) with ~/persmon-dashboard/site mounted read-only as the web root and a managed nginx.conf.
nginxstatic
Design rule
Why every product gets its own network
One Docker network per appThe HMS demo, Ishasha Ops and MHF Votes each have their own postgres on their own bridge network. Traefik is the only container attached to all of them. A compromised or buggy app can reach its own database and nothing else.
Live tenants never share a database with demosIshasha Ops is real hotel data; the HMS demo is reseeded every night. They run the same code from separate Coolify resources so a demo reset can never touch a customer.
Deploy from Git, not from a laptopEvery app except OMS demo is built by Coolify from a repository. Rollback is a redeploy of the previous image; nothing depends on files that only exist on one computer.