A full-stack web dashboard for System Analysts. View and manage FSD documents, API specs, ERD schemas, task cards, wiki pages, and development timelines β all powered by AI agents with the fsd-analyzer skill.
flowchart TD
A["π FSD Documents<br/>input/fsd/"] --> B["π FSD Analyzer<br/>OpenCode + skills"]
B --> C["π‘ API Specs<br/>output/spec/"]
B --> D["ποΈ ERD / DBML<br/>output/erd/"]
B --> E["β
Task Cards<br/>output/task/"]
B --> F["π
Timeline<br/>output/timeline.html"]
C & D & E & F --> G["π» SA Dashboard<br/>localhost:4321"]
| Page | What it does |
|---|---|
| Projects | Open project folders, auto-install required AI skills |
| Overview | File browser, stat cards, Markdown content viewer |
| ERD | DBML editor with interactive schema visualization, table editor |
| API Spec | Parsed spec viewer with module sidebar, search, markdown cards |
| Wiki | Editable project wiki pages with history |
| Tasks | Task cards with search, filters, developer assignment, copy to Jira/Monday |
| FSD Analyzer | Notion-like Markdown editor, completeness checklist, PDF/DOCX upload β Markdown conversion, Run Analysis via OpenCode |
| Traceability | Requirement Traceability Matrix (RTM) per scope β BR β FR β DS β TC with gap detection, AI-assisted generation |
| Timeline | Rendered Gantt chart viewer (output/timeline.html) |
| Terminal | Built-in agent terminal for running CLI commands |
| Help (?) | Per-page help popup with best practices / usage tips (bilingual, distilled from docs/) |
Detailed bilingual usage guides live in docs/, covering the full SA workflow with Mermaid diagrams, a copy-paste prompt library, and best practices:
- Indonesian β
docs/id/: alur kerja lengkap (FSD β Markdown via markitdown β split FD β discovery β ERD β Spec API + OpenAPI β Tasks + Timeline β Technical Documentation), Prompt Library, dan Best Practices. - English β
docs/en/: overview, prompt library, and best practices.
The guides follow an agent-CLI first approach: every action (convert, split, generate ERD/spec/tasks, timeline, docs) is run as a prompt in the embedded agent terminal, and the UI tabs are used for reviewing the generated artifacts. UI action buttons are considered experimental.
Every page also has a "?" help button in its header that pops up a short bilingual best-practice cheat-sheet distilled from these guides.
The dashboard delegates AI analysis (FSD β API specs, ERD, tasks, timeline) to a local CLI agent. You must have at least one of these installed and on your PATH β the app auto-detects them in this priority order:
| Agent | Install command |
|---|---|
| OpenCode | npm i -g opencode-ai or see opencode.ai |
| Claude Code | npm i -g @anthropic-ai/claude-code |
| Codex | npm i -g @openai/codex |
| Antigravity | curl -fsSL https://antigravity.google/cli/install.sh | bash |
The FSD Run Analysis button, agent terminal, and skills auto-install all depend on a detected agent.
# Requirements: Bun 1.3+, one of OpenCode / Claude Code / Codex (see above)
cd app
bun install
bun run dev
# β http://localhost:4321- Click Open Project in the dashboard
- Select a project folder (must have
input/andoutput/structure) - Required skills (
fsd-analyzer,markitdown) auto-install on first open - Use the FSD Analyzer tab to edit FSDs and run AI analysis
Onesist also ships as a native desktop app for macOS (arm64/x64) and Windows, built with Tauri 2. The web app runs as a self-contained compiled Bun server (sidecar) inside the desktop shell.
The same agent CLI requirement applies to the desktop app: install at least one of OpenCode, Claude Code, or Codex and make sure it's on your PATH (the sidecar spawns it via which).
# Rust toolchain
curl https://sh.rustup.rs -sSf | sh
# Tauri CLI (via Bun)
cd app
bun add -D @tauri-apps/cli- macOS: Xcode Command Line Tools (
xcode-select --install) - Windows: Visual Studio Build Tools (MSVC C++ workload)
cd app
bun run tauri devcd app
bunx tauri build
# macOS β src-tauri/target/release/bundle/dmg/Onesist_*.dmg
# Windows β src-tauri/target/release/bundle/msi/Onesist_*.msiDebug build (faster, for testing):
bunx tauri build --debug
# β src-tauri/target/debug/bundle/cd app
bun run build:serverProduces dist/server/server.js + a self-contained compiled executable in src-tauri/binaries/onesist-server-<triple>. Tauri bundles this as the sidecar and copies dist/ (web assets) + vendor/skills into the app data folder on first run.
- macOS:
~/Library/Application Support/com.rogasper.onesist/ - Windows:
%APPDATA%\com.rogasper.onesist\
Contains data.db (SQLite), server/ (copied web assets), vendor-skills/, and logs/.
The dev server and the desktop sidecar both listen on port 4321. Running them at the same time causes the desktop WebView to hit the wrong server (agent detection, file watching, etc. break). Always quit the desktop app (tray β Quit) before starting bun run dev, and vice versa.
- Close window β app hides to tray (agent sessions keep running)
- Tray menu: Show Onesist / Restart Server / Quit β only Quit fully exits
- If the sidecar crashes it auto-restarts (max 3Γ per 60s)
bun run dev # Start dev server (web, http://localhost:4321)
bun run build # Production build (Vite)
bun run typecheck # TypeScript type checking
bun run start # Start production server
bun run build:server # Build server bundle + compiled sidecar executable
bunx tauri dev # Run desktop app in dev mode
bunx tauri build # Build desktop app (release)
bunx tauri build --debug # Build desktop app (debug, faster)Browser (React)
β
Vite Dev Server (SSR)
β
TanStack Start (fetch handler)
β
API Router (Bun)
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Drizzle ORM (Bun SQLite) β
β βββ projects, tasks, wikiPages, erds, apiSpecs, β
β β apiEndpoints, fsdSessions, changeLog β
β βββ snapshots: wikiSnapshots, taskSnapshots, β
β erdSnapshots, apiSnapshots β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β File System (project-root/) β
β βββ input/fsd/ FSD documents β
β βββ input/figma/ Screenshots β
β βββ output/spec/ Generated API specs β
β βββ output/erd/ Generated ERD schemas β
β βββ output/task/ Generated task cards β
β βββ output/timeline.html Gantt chart β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β OpenCode CLI (headless) β
β βββ fsd-analyzer skill β generate specs, erd, tasks β
β βββ markitdown skill β convert PDF/DOCX to Markdown β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Terminal Server (ws://localhost:4323) β
β βββ xterm.js + WebSocket for agent terminal β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Layer | Technology |
|---|---|
| Runtime | Bun 1.3+ |
| Frontend | React 19, TanStack Start (SSR), TanStack Router |
| Editor | CodeMirror 6 + @codemirror/lang-markdown |
| Diagrams | Mermaid 11, DBML (@dbml/core) |
| ERD Layout | @xyflow/react + @dagrejs/dagre |
| Markdown | react-markdown + remark-gfm |
| Database | Drizzle ORM + Bun SQLite (WAL mode) |
| Terminal | xterm.js + WebSocket |
| Styling | @cloudflare/kumo + Tailwind CSS 4 |
| Icons | @phosphor-icons/react |
| Agent CLI | OpenCode / Claude / Codex / Antigravity (headless + JSONL output) |
| Build | Vite 8, TypeScript 6 |
| Desktop | Tauri 2 (Rust), Bun sidecar (compiled executable) |
The SA Dashboard requires two skills installed per project folder:
| Skill | Source | Purpose |
|---|---|---|
fsd-analyzer |
rogasper/system-analyst-skill | FSD β API spec, ERD, UML, tasks, timeline |
markitdown |
julianobarbosa/claude-code-skills | Convert PDF/DOCX/PPTX/XLSX to Markdown |
These are auto-installed into .agents/skills/ when opening a project folder.
Three agents are configured for this app:
| Agent | Purpose |
|---|---|
architecture-plan |
High-level planning and reasoning (read-only) |
execute |
Code generation, file operations, command execution |
code-reviewer |
Security, performance, and edge-case review |
bun run dev # Start dev server (web, http://localhost:4321)
bun run build # Production build (Vite)
bun run typecheck # TypeScript type checking
bun run start # Start production server
bun run build:server # Build server bundle + compiled sidecar executable
bunx tauri dev # Run desktop app in dev mode
bunx tauri build # Build desktop app (release)
bunx tauri build --debug # Build desktop app (debug, faster)# Generate migrations after schema changes
bun run db:generate
# Push schema to database
bun run db:pushTables: projects, erds, erd_snapshots, api_specs, api_snapshots, api_endpoints, wiki_pages, wiki_snapshots, tasks, task_snapshots, fsd_sessions, change_log, exports
Migrations run automatically at startup via ALTER TABLE in src/server/db/client.ts.
MIT