Skip to content

Repository files navigation

Boota Nexus — engineering portal

A React 19 + Vite + Tailwind app: an interactive engineering portal with a database explorer, API explorer, component studio, ADR viewer, roadmap board, and an AI workspace.

Status: recovered and building. npm run build produces a working bundle (2,086 modules, ~454 kB). Three components still need a backend — see below.


Where this came from

Built in Google AI Studio and pushed to the boota-landing repository, where it sat alongside the static marketing pages. The two collided — both define an index.html at the repo root, one as Vite's mount point and one as the marketing homepage.

That collision is visible in the repo's own history: "Fix: Remove infinite redirect loop — display landing page instead".

Extracted here on 2 August 2026 so the marketing site could own its root cleanly. Nothing was deleted — the full history remains in boota-landing.

The original AI Studio README is kept as AISTUDIO_README.md.


Why it never deployed

Three independent reasons, each sufficient on its own. All three are now fixed except the workflow, which needs writing.

1. The source didn't compile.

Commit 4832d85 ("Fix: Remove infinite redirect loop") rewrote src/App.tsx and saved it truncated — 355 lines became 318, with nine literal [...] markers where content had been elided, including an unterminated string on line 135:

className="bg-orange-500 … transition-al[...]

Some tool wrote an abbreviated version of the file and it was committed as-is. From that commit onward the app could not build at all — esbuild fails on the first unterminated string. Nothing downstream could ever have worked.

Recovered from commit 040dd9a, which has the intact 355-line file. If you diff the two, 040dd9a is the good one.

2. The workflow was at .github/workdlows/deploy.yml.

Note the typo. GitHub only reads .github/workflows/, so it was never a workflow — just a file in a directory nothing looks at. Moved to the correct path here.

3. That file was empty. Zero bytes. So even at the right path it would have done nothing. deploy.yml needs writing from scratch, not fixing.

4. index.html was missing from the extraction. Vite's entry point was initially mistaken for a marketing page during the split. Restored.

The lesson worth keeping: a commit message saying "Fix" described a change that silently broke the build, and nothing caught it — because the workflow that would have run the build was in a misspelled directory. Two failures that individually would have been noticed, together produced months of silence.


What works and what doesn't

Three components call API endpoints that do not exist:

Component Calls Backend
AiWorkspace.tsx POST /api/chat ❌ None
DatabaseExplorer.tsx POST /api/database/query ❌ None
ApiExplorer.tsx arbitrary URLs ⚠️ Whatever you point it at

server.ts exists (262 lines) but the repo's last commit was "remove server bundling" for static deployment — the intended backend was deliberately dropped. These three will fail at runtime until either server.ts is deployed somewhere or they're pointed at Supabase directly.

Components that do work standalone, reading from src/data/docsData.ts:

EngineeringHandbook · AdrViewer · RoadmapKanban · ComponentStudio


⚠️ Before deploying this anywhere public

src/data/docsData.ts (369 lines) contains hand-written architecture documentation authored separately from Boota-Docs. Read it against Boota-Docs before publishing. Independently written docs about the same system tend to disagree, and two documents that disagree are worse than one.

Spot-check on recovery: it describes Boota as serving named stores — "Boota Grocers Harris Park", "Desi Bazaar Sunshine". Verify those exist before that text goes anywhere public. The marketing site already carries fabricated performance claims; don't add more.

A DatabaseExplorer that runs queries against production must never be publicly exposed. If this portal ships, it belongs behind the same Cloudflare Access policy as Boota-Docs.


Run locally

npm install
npm run dev

Requires Node 20+.

npm run build     # → dist/
npm run lint      # tsc --noEmit

@google/genai is a dependency. If AiWorkspace gets wired up it needs an API key — not committed, and not in an EXPO_PUBLIC_-style variable that ships to the client.

vite.config.ts has base: '/boota-portal/' for GitHub Pages under this repo name. Change it if the repo is renamed or served from a custom domain.


How this relates to the other repos

Repo Is Status
boota-landing Public marketing site, static HTML ✅ Live
Boota-Docs Internal docs, MkDocs → Cloudflare Access ✅ Built
boota-portal This — interactive engineering portal ⏸️ Recovered, not running
Boota-App The apps themselves ✅ Active

Boota-Docs already covers written documentation and deploys behind authentication.

This portal only earns its place if the interactive parts are worth the maintenance — the schema explorer, API explorer, and component studio do things MkDocs genuinely cannot. The prose sections overlap with Boota-Docs and would be better deleted than kept in sync.

Decide that before writing a deploy workflow.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages