CentralCloud unified portal — Elixir/Phoenix umbrella (centralcloud_my: customer, centralcloud_ops: staff/oncall, centralcloud_core: shared)
Find a file
Mikael Hugo 9f486f36d0 refactor: rename centralcloud_ops → centralcloud_staff in portal
The portal umbrella now has unambiguous app names:
- centralcloud_staff: staff-facing UI (ops.centralcloud.com)
- centralcloud_my:    customer-facing UI (my.centralcloud.com)
- centralcloud_core:  shared library

The infra/apps/centralcloud_ops backend engine retains its name.
Config keys, session cookies, releases all updated accordingly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-11 13:06:21 +02:00
_build/dev
apps
config
deps
rel/overlays/bin
.envrc
.gitignore
Dockerfile
erl_crash.dump
flake.lock
flake.nix
mix.exs
mix.lock
README.md

centralcloud

Elixir umbrella app for CentralCloud customer and staff portals.

Apps

App URL Audience
centralcloud_my my.centralcloud.com Customers — unified dashboard
centralcloud_ops ops.centralcloud.com Staff — ops and on-call
centralcloud_core (library) Shared: HostBill client, DR API client, OIDC

my.centralcloud.com will also serve www.centralcloud.com (marketing pages) when DNS is repointed.

Quick start

# Install Elixir 1.17+ and Phoenix
mix local.hex --force
mix archive.install hex phx_new --force

# Install deps
mix deps.get

# Run my. portal (port 4001)
cd apps/centralcloud_my
mix phx.server

# Run ops portal (port 4000)
cd apps/centralcloud_ops
mix phx.server

Required env vars

MY_SECRET_KEY_BASE=...        # mix phx.gen.secret
OPS_SECRET_KEY_BASE=...
HOSTBILL_API_ID=...           # from HostBill admin API keys
HOSTBILL_API_KEY=...
DR_PORTAL_URL=https://dr.centralcloud.com
DR_PORTAL_API_KEY=...
OIDC_CLIENT_ID=...            # Authentik application client ID
OIDC_CLIENT_SECRET=...

Architecture

See ../dr-repo/docs/adr/001-unified-portal-architecture.md