Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
An intelligence terminal for people who read across domains: aircraft history beside gas curves, chokepoints beside freight rates. Composable panels, your own layouts, six instrument themes.
DataTypeScript · MDXGitHub @charlie-del-hashOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Bloomberg Terminal's utility, an iPhone's attention to detail, and a second reading of
everything: the same screen holds an aircraft dossier, a gas curve and a chokepoint plot,
and every ship class carries both its civil and its military reading.
Stack: Next.js 16 (App Router, React 19, Turbopack) · TypeScript · Tailwind v4 ·
Zod · Zustand · MDX. Deploys to Vercel with zero configuration. Built to be extended
agentically: every extension point is a file with a schema and a documented recipe
(see CLAUDE.md).Read the full README ↗Bloomberg Terminal's utility, an iPhone's attention to detail, and a second reading of everything: the same screen holds an aircraft dossier, a gas curve and a chokepoint plot, and every ship class carries both its civil and its military reading.
Stack: Next.js 16 (App Router, React 19, Turbopack) · TypeScript · Tailwind v4 ·
Zod · Zustand · MDX. Deploys to Vercel with zero configuration. Built to be extended
agentically: every extension point is a file with a schema and a documented recipe
(see CLAUDE.md).
| Bridge layout · Bridge theme | Hangar layout · Cockpit theme |
|---|---|
| Reader layout · Paper theme | Command bar |
|---|---|
| A blank layout starts here | Keyboard help (?) |
|---|---|
pnpm install
pnpm dev # http://localhost:3000
pnpm check # tokens → lint → typecheck → content → layouts → tests
pnpm build && pnpm start
Node ≥ 20.9. No environment variables are required for the demo; see .env.example for
the optional ones: a free FRED key for live energy and FX, Supabase for sign-in and sync,
and the alert channels.
| Area | Where | What |
|---|---|---|
| Workspace | / | The terminal. A layout of panels on a 12-column grid. Edit mode drags, resizes, adds, removes. Under 768 px the same layout stacks. |
| Layouts | layouts/*.json, /layouts | Six presets (Desk, Reader, Energy desk, Hangar, Bridge, Pocket). Anything you change forks into your own layout, persisted on-device, exportable as JSON. |
| Panels | src/panels/* | Wire, Quote board, Chart, Headlines, Reader, Dossier, Plot, Calendar, World clocks, Notes, Indicators. Each is a schema + component + settings fields. |
| Themes | src/design/tokens.json | Terminal, Phosphor, Cockpit, Bridge, Paper, Glass. One JSON → generated CSS. Functional skeuomorphism: bezels, LEDs, scanlines and glow are tokens a theme can turn to zero. |
| Command bar | ⌘K or / | Search everything, or type mnemonics: GP TTF, DES F-105, THEME PAPER, LAYOUT BRIDGE, WIRE SHP. |
| Content | content/** | Articles, briefs (with a bottom line), dossiers (with spec sheet and dual-use notes), wire items, calendar events. MDX + JSON, Zod-validated. |
| Data | src/data/*, /api/quotes, /api/series/:symbol, /api/status | Instrument registry and a composite provider: FRED (free key) and ECB rates where they cover a symbol, deterministic synthetic data for the rest, provenance shown everywhere. Licensed vendors are one adapter each. |
| Persistence | src/lib/supabase, src/layout-engine/sync.ts, /account | On-device by default. With a Supabase project: email sign-in and cross-device sync of layouts, theme, notes, watchlist. |
| Messaging | src/lib/share.ts, src/lib/notify, content/alerts/rules.json | No in-app chat. Share sheet to WhatsApp, email, Slack, system share. Server-side alerts (Slack, WhatsApp Business, email) from JSON rules on a cron. |
| Reading | /read/:slug, /dossier/:slug | A reading surface: progress line, S/M/L type size, one tap to the Paper theme and back, a drop cap on Paper, and a masthead that gets out of the way on phones. |
| Kit | /kit | Every primitive in the current theme. The Forstall page: if it is not here, it is not a component. |
? shows every shortcut. The ones worth memorising: ⌘K command bar, E edit the
layout, [ and ] to cycle layouts, T next theme. In edit mode, Tab to a panel header
and use the arrows to move it, shift-arrows to resize.
Two builds come out of this one repository.
NEXT_PUBLIC_SITE_URL to the production domain so share links are absolute,
FRED_API_KEY for live energy series, the Supabase variables for sync, and CRON_SECRET
plus channel credentials for alerts (vercel.json schedules the daily run).Every push to the production branch redeploys; every other branch gets a preview URL. This is the only target that runs the API routes, the session proxy and the alert cron.
Live: https://charlie-del-hash.github.io/F-105/
.github/workflows/pages.yml rebuilds and republishes on every push to the default branch.
It pushes the export to the generated gh-pages branch, which is what Pages serves. Never
edit that branch; it is build output.
pnpm build:static produces the same thing locally. It moves the server-only files aside,
exports with output: "export", and puts them back, so the working tree is untouched either way.
The client falls back to the deterministic mock generator, which means the demo still ticks
once a minute. What it cannot have:
| Works | Does not |
|---|---|
| Every panel, layout, theme and page | Live sources: everything reads synthetic |
| Quotes and charts, ticking | Alerts: no cron, no channels |
| Editing layouts, saved on the device | Sign-in and cross-device sync |
| The command bar and keyboard |
The status bar says DEMO DATA · synthetic series throughout, so nobody mistakes it for the real thing.
content/ articles/ briefs/ dossiers/ (MDX) · wire/ events/ (JSON)
layouts/ preset layouts (JSON)
docs/ ARCHITECTURE · DESIGN · CONTENT · LAYOUTS · DATA · PERSISTENCE · ALERTS · ROADMAP
supabase/ migrations (workspaces, alert_log) and setup notes
scripts/ tokens-to-css · validate-content · check-layouts
src/
app/ routes: / read/ dossier/ wire/ markets/ desk/ layouts/ kit/ api/
components/ shell (topbar, status bar, command bar, share) · ui · charts · content
config/site.ts name, desks, channels — rebrand here
alerts/ rules · schema · evaluate · dedupe
content/ schema.ts (Zod) · loader.ts (server) · mdx.tsx (in-article kit)
data/ instruments.ts · mock.ts · derive.ts · providers/ (fred, ecb, composite, mock)
design/ tokens.json (source of truth) · tokens.ts · themes.css (generated)
layout-engine/ schema · grid maths · store · WorkspaceGrid · PanelFrame · settings
panels/ catalog.ts (server-safe) · registry.tsx (client) · one folder per panel
lib/ hooks and helpers · supabase/ clients · notify/ channels
proxy.ts Next.js 16 proxy: refreshes the Supabase session cookie
This is the architecture and a demo. The content is placeholder and labelled as such in
the UI. Numbers are live where a free source covers them (ECB rates out of the box, FRED
with a key) and synthetic elsewhere, always marked. Persistence, sign-in and alerts switch
on with environment variables. docs/ROADMAP.md lists what comes next: licensed data
feeds, layout sharing, per-user alert rules, and the iOS build.