- Umbrella root with apps/centralcloud_{my,ops,core}
- centralcloud_core: HostBill Admin API client, DR Portal API client
- centralcloud_my: Phoenix LiveView app for my.centralcloud.com
- centralcloud_ops: Phoenix app for ops.centralcloud.com
- Shared config: Authentik OIDC, HostBill, DR Portal endpoints
- README with quick start and required env vars
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
49 lines
1.2 KiB
Markdown
49 lines
1.2 KiB
Markdown
# 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`
|