Build apps on Zero Console
Push your app to GitHub, paste the repo into Zero Console, and we build and host it for you at <your-app>.apps.zeroconsole.com— with a dedicated subdomain, one-click custom domain, and shared Zero Console sign-in + data. Your app's users are Zero Console users, so they can interact with the wider community.
How it works
- Create your app in the Zero Console app (Create → App) or the Developer Portal. It gets a unique slug and a dedicated subdomain immediately.
- Paste your GitHub repo in the app's Manage page (Deploy from GitHub) and hit Build & Deploy.
- Zero Console builds it — we fetch your repo, build it (Next.js, Vite, CRA, static — auto-detected), and serve it on your subdomain.
- It's live at <slug>.apps.zeroconsole.com, sharing Zero Console's session and data. Attach your own domain anytime.
Public repos deploy right away. For private repos — and automatic redeploy on every push — connect the Zero Console GitHub App from the app's Manage page.
Requirements
- A GitHub repository whose root is your app (a package.json at the top level). Public repos work as-is; for private repos, connect the Zero Console GitHub App.
- The app builds cleanly with npm install && npm run build — nothing special to configure. No base-path juggling; your app is served at the root of its own subdomain.
- A logo and app details (set when you create the app).
A minimal Next.js app is enough
my-app/
├─ package.json # "build": "next build"
├─ app/
│ ├─ layout.js
│ └─ page.js
└─ …
# push it to GitHub → paste the repo in Manage → Build & DeployDeploy & redeploy
In the Developer Portal, open your app and use the Deploy from GitHub panel:
- Paste your repo URL — e.g. https://github.com/you/my-app.
- Click Build & Deploy. You'll see the build progress; when it's Deployed ✓ your app is live on its subdomain.
- To ship an update, push to GitHub and click Build & Deploy again — or connect the Zero Console GitHub App once and every push redeploys automatically.
Connecting the GitHub App also unlocks private repositories. It's a one-time authorization from the Manage page.
Data & identity — the Zero Console App SDK
Your app doesn't run its own database — it uses Zero Console's shared Supabase, isolated per-app by row-level security. Import the SDK to get a client scoped to your app:
import { createAppClient } from '@zeroconsole/app-sdk';
const zc = await createAppClient({ appSlug: 'my-app' });
// per-app data (auto-isolated to your app)
await zc.records.create('todos', { text: 'Ship it', done: false });
const { data: todos } = await zc.records.list('todos');
// the Zero Console user, and other members (safe public fields)
const { data: me } = await zc.members.me();
const { data: people } = await zc.members.all();- Shared sign-in — an app user is a Zero Console user (same identity). No separate login.
- Per-app data — stored in Zero Console but only your app can read/write it.
- Governed access to members — safe public fields only (name, username, avatar, badges).
Bring your own domain
Every app is instantly live on its subdomain. To use your own domain, open the app's Manage page → Custom domain, enter it, and add the DNS records shown. For a subdomain (app.yourbrand.com) use a CNAME; for a root/apex domain (yourbrand.com) use an A record:
# subdomain
CNAME app.yourbrand.com → cname.zeroconsole.com
# apex / root domain
A yourbrand.com → 76.76.21.21
# ownership (both cases)
TXT _zc-verify.<your-domain> → <token shown in the portal>Click Verify domain — Zero Console checks ownership, provisions the SSL certificate automatically, and shows a live link once it's serving over HTTPS. Your subdomain keeps working too.
Can't add A/CNAME records? Point your domain's nameservers to Zero Console (shown in the portal) and it manages the DNS for you.
Ready to build?
Create your app to get your slug + subdomain, then paste your repo and deploy.
