Skip to content

Repository files navigation

SA Dashboard

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"]
Loading

GitHub Stars

Features

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/)

Documentation

Detailed bilingual usage guides live in docs/, covering the full SA workflow with Mermaid diagrams, a copy-paste 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.

Prerequisites

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.

Quick Start

# Requirements: Bun 1.3+, one of OpenCode / Claude Code / Codex (see above)

cd app
bun install
bun run dev
# β†’ http://localhost:4321
  1. Click Open Project in the dashboard
  2. Select a project folder (must have input/ and output/ structure)
  3. Required skills (fsd-analyzer, markitdown) auto-install on first open
  4. Use the FSD Analyzer tab to edit FSDs and run AI analysis

Desktop App (Tauri)

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.

Prerequisites (developer machine)

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)

Run desktop app (dev mode)

cd app
bun run tauri dev

Build desktop app (release)

cd app
bunx tauri build
# macOS β†’ src-tauri/target/release/bundle/dmg/Onesist_*.dmg
# Windows β†’ src-tauri/target/release/bundle/msi/Onesist_*.msi

Debug build (faster, for testing):

bunx tauri build --debug
# β†’ src-tauri/target/debug/bundle/

Server-only build (for sidecar bundling)

cd app
bun run build:server

Produces 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.

Desktop app data location

  • macOS: ~/Library/Application Support/com.rogasper.onesist/
  • Windows: %APPDATA%\com.rogasper.onesist\

Contains data.db (SQLite), server/ (copied web assets), vendor-skills/, and logs/.

Important: don't run bun run dev while the desktop app is running

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.

Tray & lifecycle

  • 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)

Scripts

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)

Architecture

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             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Tech Stack

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)

Project Skill Requirements

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.

OpenCode Agents

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

Scripts

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)

Database

# Generate migrations after schema changes
bun run db:generate

# Push schema to database
bun run db:push

Tables: 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.

License

MIT

About

Onesist platform to enhance productivity for System Analyst deliverable Technical Requirement

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages