Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
항공 역사·가스 곡선·병목·화물 요금 등 다양한 정보를 한 화면에 배치하는 인텔리전스 터미널
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.
데이터TypeScript · MDXGitHub @charlie-del-hash온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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).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.