- Node.js 20+
- pnpm 9+
- Rust (for Tauri desktop app)
# Clone and install
git clone https://github.com/junixlabs/sidstack.git
cd sidstack
pnpm install
# Start development
pnpm dev # Vite frontend only
pnpm tauri:dev # Full Tauri desktop app (Rust + React)sidstack/
├── src/ # React frontend (Tauri webview)
├── src-tauri/ # Rust backend (Tauri)
├── packages/
│ ├── cli/ # Oclif CLI tool
│ ├── mcp-server/ # MCP Server for Claude Code
│ ├── api-server/ # Express.js REST API
│ └── shared/ # Shared types + SQLite
└── .sidstack/ # Local data (runtime)
| Command | Description |
|---|---|
pnpm dev |
Start Vite dev server |
pnpm tauri:dev |
Start Tauri app (Rust + React) |
pnpm build |
Production build (Vite) |
pnpm tauri:build |
Production desktop app |
pnpm packages:build |
Build all packages |
pnpm typecheck |
TypeScript type checking |
pnpm test |
Run tests |
- Strict mode enabled
- Use
@/path alias for imports - Prefer named exports over default exports
- Functional components with hooks
memo()for expensive components- Zustand for state management
- Tailwind CSS with design tokens (
var(--surface-0),var(--text-primary), etc.)
- Use CSS custom properties from
src/index.css(design tokens) - Avoid hardcoded Tailwind colors for semantic meaning; use tokens (
var(--color-info)) - Decorative per-feature colors may use Tailwind colors directly
- WCAG AA contrast minimum
focus-visibleoutlines on all interactive elements- ARIA roles for menus, trees, tabs, dialogs
- Minimum text size: 10px
- Create a feature branch from
main - Make changes and verify:
pnpm typecheck # Must pass pnpm build # Must succeed pnpm test # Must pass
- Open a PR against
main - PR title: short imperative description (e.g., "Add session resume support")
- PR body: summary of changes, test plan
feat:New featurefix:Bug fixrefactor:Code restructuring (no behavior change)docs:Documentation onlytest:Adding/updating testschore:Build, config, dependency updates
- Desktop-first: Tauri 2.x app, not a web app
- Local-first: SQLite database, no cloud services
- API server: Express.js on localhost:19432 (for MCP + frontend)
- No Go/gRPC/Neo4j: Legacy dependencies fully removed
# Run all tests
pnpm test
# Run specific package tests
cd packages/api-server && npx vitest runOpen an issue for bugs or feature requests.