# 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

```bash
# 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

```bash
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`
