Plan: Public docs/marketing site for Altinity SQL Browser
Context
altinity-sql-browser is a zero-dependency, OAuth-gated ClickHouse SQL browser
that builds to a single self-contained dist/sql.html. It has grown a rich
feature set (chart view, EXPLAIN pipeline graph, full schema-lineage graph,
autocomplete, find/replace, saved-query Library, share links) and three
distinct deployment modes — but there is no public site explaining any of
it. The README is the only narrative, and there are zero product
screenshots anywhere in the repo.
GitHub Pages is already live for this repo (verified via the Pages API):
So the site must live in /docs on main, and committing there publishes it.
Goal: a polished, multi-page static site covering the three deployment
modes (with the curl → local app install front-and-center), the full
feature set, and real screenshots captured from the live demo + the local
Python runner.
Decisions (confirmed with user)
- Multi-page site (Home + Features + Deployment + Local app + Screenshots).
- Hand-built static HTML/CSS, no framework — reuse the app's design tokens
(teal #0079AD/#005F8A, system font stack, dark+light). Add .nojekyll
so Pages serves the files verbatim (no Jekyll processing).
- After approval: post the plan as a GitHub issue, build the full site
(with screenshots) on main, commit directly to main (deploys live).
Constraints / things to respect
/docs already holds engineering markdown (ARCHITECTURE.md,
DEPLOYMENT.md, CLICKHOUSE-OAUTH.md, CLICKHOUSE-OSS-OAUTH.md,
ASSET-DISTRIBUTION.md, ONTIME-CHART-DEMO.md). Do not move or rename
them — the root README.md links to them by relative path. The new site
links out to these (GitHub blob URLs) for deep technical reading.
- Adding
.nojekyll means those .md files serve as raw text via Pages (they
are not the Pages landing content today anyway). Acceptable — they remain
rendered on github.com and linked from the README.
- Keep the project ethos: no third-party requests (no CDN fonts/JS), small
footprint, accessible HTML.
Proposed /docs layout
docs/
.nojekyll ← serve static files verbatim
index.html ← Home / landing (hero, value prop, 3 modes, CTA)
features.html ← full feature tour (grouped, screenshot-led)
deployment.html ← the 3 deployment modes compared + recipes
local-app.html ← "Install by curl as a local app" deep-dive
screenshots.html ← gallery (all captured shots, dark+light)
assets/
site.css ← shared styles built from the app's design tokens
site.js ← tiny: nav toggle, theme toggle, lightbox (no deps)
logo.svg / favicon ← gradient-"A" mark from the design system
img/ ← captured screenshots (see Screenshot capture)
(existing *.md stay in place, untouched)
Shared header/nav + footer inlined into each page (no build step; ~5 pages).
Content sourcing (already gathered — no re-exploration needed)
- Three deployment modes (from
README.md, install.sh,
build/local.py, build/bundle.sh, deploy/install.sh,
deploy/http_handlers.xml):
- ClickHouse-hosted — SPA +
config.json uploaded to user_files/,
served by http_handlers.xml at /sql; OAuth (PKCE) via any OIDC IdP;
queries carry the user's JWT. Installed by deploy/install.sh.
- Local app via
curl | sh — install.sh downloads the latest release
bundle (prebuilt sql.html + zero-dep build/local.py runner), installs
a launcher to ~/.local/bin/altinity-sql-browser; runner serves
localhost:8900/sql, reads ~/.clickhouse-client/config.xml, probes
ports (443/8443, 8123/80). Needs only python3. This is the headline
"local app" story.
- Local dev —
npm run local / npm run dev for contributors.
- Feature inventory (from
src/ui/* + src/core/*): table/JSON/chart
views, 5-tab EXPLAIN incl. dagre pipeline graph, schema-lineage graph
(drag-move, undo/redo, detail pane), autocomplete + signature help + hover
docs from system.*, find/replace (regex), bracket matching, multi-tab
workspace, saved-query Library + history + import/export (JSON/MD/SQL), share
links, SSO (OIDC PKCE) + passwordless/basic, streaming results + live stats,
CSV/TSV export, dark/light themes.
- The curl command (verbatim, from
install.sh / README.md:187):
curl -fsSL https://raw.githubusercontent.com/Altinity/altinity-sql-browser/main/install.sh | sh
Screenshot capture (real, not mockups)
Reachability already verified: live demo 200, ClickHouse public playground
200, Chrome DevTools on :9222 200, python3 + build deps present.
Two capture sources, via the chrome-devtools MCP (agent Chrome on :9222 — never launch Chrome myself):
- Local-app mode (also the "curl local app" screenshots):
npm run local builds dist/sql.html and boots build/local.py on
localhost:8900. Point it at the public ClickHouse playground
(sql-clickhouse.clickhouse.com, user play, passwordless) and the
antalya demo (demo/demo basic) so I can log in without SSO and
reach every feature. Capture: connection picker, main workspace
(editor+sidebar+results), autocomplete popup, chart view (load
examples/ontime-charts.json via File ▾ → Open), EXPLAIN pipeline graph,
schema-lineage graph, find/replace, Library panel — in dark (primary)
and a few in light.
- Hosted login screen: navigate agent Chrome to
https://antalya.demo.altinity.cloud/sql and screenshot the branded
login/IdP screen (renders pre-auth).
Save PNGs to docs/assets/img/, reference them in features.html,
local-app.html, and screenshots.html. Use resize_page to a clean
viewport (e.g. 1440×900) before each shot; full-page where useful.
Build steps (after approval)
- Post the plan as a GitHub issue on
Altinity/altinity-sql-browser
(title e.g. "Public docs site for the SQL Browser (docs.altinity.com)"),
body = this plan, via gh issue create.
- Build
dist/sql.html (npm run build) and boot the local runner; capture
all screenshots (above) into docs/assets/img/.
- Author
docs/.nojekyll, docs/assets/site.css (tokens lifted from
src/styles.css), docs/assets/site.js, logo/favicon, and the 5 HTML
pages with shared nav/footer and the screenshots embedded.
- Distill
docs/DEPLOYMENT.md + docs/CLICKHOUSE-OAUTH.md into the
deployment/local-app pages; link the full markdown for depth.
- Commit directly to
main (Pages publishes from main /docs). Use a
clear commit message; reference the issue. Verify the live site renders.
Verification
- Open
http://localhost preview of docs/index.html and each page in agent
Chrome; confirm nav, theme toggle, lightbox, and all <img> resolve (no
broken links, no external requests — check DevTools network panel).
- Confirm the verbatim
curl | sh command and the gh release download URLs
on local-app.html are correct against install.sh.
- After committing to
main, wait for the Pages build and load
http://docs.altinity.com/altinity-sql-browser/; spot-check pages + images.
npm test and npm run build must still pass (site is static, but confirm
no accidental changes to src/ or build).
Files created / touched
- New:
docs/.nojekyll, docs/index.html, docs/features.html,
docs/deployment.html, docs/local-app.html, docs/screenshots.html,
docs/assets/site.css, docs/assets/site.js, docs/assets/logo.svg,
docs/assets/favicon.*, docs/assets/img/*.png.
- Unchanged: all existing
docs/*.md, src/*, build/*, deploy/*.
- External: one GitHub issue (the plan); commits to
main.
Plan: Public docs/marketing site for Altinity SQL Browser
Context
altinity-sql-browseris a zero-dependency, OAuth-gated ClickHouse SQL browserthat builds to a single self-contained
dist/sql.html. It has grown a richfeature set (chart view, EXPLAIN pipeline graph, full schema-lineage graph,
autocomplete, find/replace, saved-query Library, share links) and three
distinct deployment modes — but there is no public site explaining any of
it. The README is the only narrative, and there are zero product
screenshots anywhere in the repo.
GitHub Pages is already live for this repo (verified via the Pages API):
legacy(Jekyll, "deploy from a branch")mainbranch,/docsfolderSo the site must live in
/docsonmain, and committing there publishes it.Goal: a polished, multi-page static site covering the three deployment
modes (with the curl → local app install front-and-center), the full
feature set, and real screenshots captured from the live demo + the local
Python runner.
Decisions (confirmed with user)
(teal
#0079AD/#005F8A, system font stack, dark+light). Add.nojekyllso Pages serves the files verbatim (no Jekyll processing).
(with screenshots) on
main, commit directly tomain(deploys live).Constraints / things to respect
/docsalready holds engineering markdown (ARCHITECTURE.md,DEPLOYMENT.md,CLICKHOUSE-OAUTH.md,CLICKHOUSE-OSS-OAUTH.md,ASSET-DISTRIBUTION.md,ONTIME-CHART-DEMO.md). Do not move or renamethem — the root
README.mdlinks to them by relative path. The new sitelinks out to these (GitHub blob URLs) for deep technical reading.
.nojekyllmeans those.mdfiles serve as raw text via Pages (theyare not the Pages landing content today anyway). Acceptable — they remain
rendered on github.com and linked from the README.
footprint, accessible HTML.
Proposed
/docslayoutShared header/nav + footer inlined into each page (no build step; ~5 pages).
Content sourcing (already gathered — no re-exploration needed)
README.md,install.sh,build/local.py,build/bundle.sh,deploy/install.sh,deploy/http_handlers.xml):config.jsonuploaded touser_files/,served by
http_handlers.xmlat/sql; OAuth (PKCE) via any OIDC IdP;queries carry the user's JWT. Installed by
deploy/install.sh.curl | sh—install.shdownloads the latest releasebundle (prebuilt
sql.html+ zero-depbuild/local.pyrunner), installsa launcher to
~/.local/bin/altinity-sql-browser; runner serveslocalhost:8900/sql, reads~/.clickhouse-client/config.xml, probesports (443/8443, 8123/80). Needs only python3. This is the headline
"local app" story.
npm run local/npm run devfor contributors.src/ui/*+src/core/*): table/JSON/chartviews, 5-tab EXPLAIN incl. dagre pipeline graph, schema-lineage graph
(drag-move, undo/redo, detail pane), autocomplete + signature help + hover
docs from
system.*, find/replace (regex), bracket matching, multi-tabworkspace, saved-query Library + history + import/export (JSON/MD/SQL), share
links, SSO (OIDC PKCE) + passwordless/basic, streaming results + live stats,
CSV/TSV export, dark/light themes.
install.sh/README.md:187):curl -fsSL https://raw.githubusercontent.com/Altinity/altinity-sql-browser/main/install.sh | shScreenshot capture (real, not mockups)
Reachability already verified: live demo
200, ClickHouse public playground200, Chrome DevTools on:9222200, python3 + build deps present.Two capture sources, via the
chrome-devtoolsMCP (agent Chrome on :9222 — never launch Chrome myself):npm run localbuildsdist/sql.htmland bootsbuild/local.pyonlocalhost:8900. Point it at the public ClickHouse playground(
sql-clickhouse.clickhouse.com, userplay, passwordless) and theantalya demo (
demo/demobasic) so I can log in without SSO andreach every feature. Capture: connection picker, main workspace
(editor+sidebar+results), autocomplete popup, chart view (load
examples/ontime-charts.jsonvia File ▾ → Open), EXPLAIN pipeline graph,schema-lineage graph, find/replace, Library panel — in dark (primary)
and a few in light.
https://antalya.demo.altinity.cloud/sqland screenshot the brandedlogin/IdP screen (renders pre-auth).
Save PNGs to
docs/assets/img/, reference them infeatures.html,local-app.html, andscreenshots.html. Useresize_pageto a cleanviewport (e.g. 1440×900) before each shot; full-page where useful.
Build steps (after approval)
Altinity/altinity-sql-browser(title e.g. "Public docs site for the SQL Browser (docs.altinity.com)"),
body = this plan, via
gh issue create.dist/sql.html(npm run build) and boot the local runner; captureall screenshots (above) into
docs/assets/img/.docs/.nojekyll,docs/assets/site.css(tokens lifted fromsrc/styles.css),docs/assets/site.js, logo/favicon, and the 5 HTMLpages with shared nav/footer and the screenshots embedded.
docs/DEPLOYMENT.md+docs/CLICKHOUSE-OAUTH.mdinto thedeployment/local-app pages; link the full markdown for depth.
main(Pages publishes frommain /docs). Use aclear commit message; reference the issue. Verify the live site renders.
Verification
http://localhostpreview ofdocs/index.htmland each page in agentChrome; confirm nav, theme toggle, lightbox, and all
<img>resolve (nobroken links, no external requests — check DevTools network panel).
curl | shcommand and thegh releasedownload URLson
local-app.htmlare correct againstinstall.sh.main, wait for the Pages build and loadhttp://docs.altinity.com/altinity-sql-browser/; spot-check pages + images.npm testandnpm run buildmust still pass (site is static, but confirmno accidental changes to
src/or build).Files created / touched
docs/.nojekyll,docs/index.html,docs/features.html,docs/deployment.html,docs/local-app.html,docs/screenshots.html,docs/assets/site.css,docs/assets/site.js,docs/assets/logo.svg,docs/assets/favicon.*,docs/assets/img/*.png.docs/*.md,src/*,build/*,deploy/*.main.