Toolbox is a self-hosted web app that brings together everything you need to prepare for system design interviews: an AI tutor, an editable knowledge library, a drag-and-drop architecture whiteboard, spaced-repetition flashcards, and a Pomodoro timer — all in one dark, focused interface.
| Feature | Description |
|---|---|
| 🤖 AI Learning Chat | Session-based chat with 4 AI personas (Socratic, ELI5, Strict, Devil's Advocate), topic-specific starter prompts, and concept map generation |
| 📖 Knowledge Guide | 7-pillar structured library with AI-assisted Commit flow to save learnings from chat sessions |
| 🎨 Architecture Builder | React Flow-powered whiteboard with 25+ components, drag-to-connect anchors, minimap, multi-select, templates, and AI design verification |
| 📚 Flashcards + SRS | SM-2 spaced repetition system with per-deck settings, card browser, deck stats, and a study activity heatmap |
| 🕸️ Knowledge Graph | Layered prerequisite map of ~60 system design concepts (React Flow + dagre) with a live SM-2 retention heatmap, lineage highlighting, readiness filters, curated learning tracks, and deep links into Guide, Builder, and Flashcards |
| 🧱 Adaptive Remediation | Fail an advanced card and the SRS engine detects shaky foundations, then queues the prerequisite cards into your next review session |
| 🧮 BotE Calculator | Back-of-the-envelope sizing sandbox: live QPS/storage/cache/bandwidth/hardware math, scenario presets, an interactive latency cheat-sheet with a budget composer, AI "Audit My Math", and 1-click Markdown export |
| 🧠 Feynman Simulator | Voice-enabled Feynman technique: explain a concept, get structured AI feedback on gaps |
| 🔀 Interleaved Review | Study all due cards across every deck in a single shuffled session |
| 🍅 Pomodoro Timer | Persistent focus timer with plant gamification (🌱→🌸→🥀) and Strict Mode |
| ⚙️ Shadow Memory | The AI learns your timeline, strengths, and goals across sessions for personalized coaching |
| 🔌 Multi-Provider AI | Gemini, Claude, and OpenAI out of the box, plus bring-your-own-model via any OpenAI-compatible endpoint (Ollama, LM Studio, vLLM, OpenRouter, …) with live model discovery |
git clone https://github.com/arvarik/toolbox.git
cd toolbox
cp .env.example .env
# Add your API keys to .env (or configure via the Settings UI)
docker compose up -dAccess at http://your-server:3100.
Get a free Gemini API key at Google AI Studio
npm install
npm run dev # Vite (5173) + Express (3100)| Document | Description |
|---|---|
| User Guide | Complete guide to all features and workflows |
| API Reference | Full REST API — every endpoint, request/response shape |
| SRS Algorithm | SM-2 implementation, state machine, Hypercorrection Penalty |
| Deployment Guide | Docker, Proxmox LXC, Nginx/Caddy setup |
| Architecture | Tech stack, data model, AI integration |
| Design Reference | CSS design system, component patterns, motion guidelines |
| Agent Instructions | For AI coding agents — rules, patterns, gotchas |
| Contributing | Dev setup, coding standards, PR process |
| Variable | Default | Description |
|---|---|---|
PORT |
3100 |
Server port |
DB_PATH |
./data/toolbox.db |
SQLite database path |
GEMINI_API_KEY |
— | Gemini API key (can also be set via Settings UI) |
CLAUDE_API_KEY |
— | Claude API key (can also be set via Settings UI) |
OPENAI_API_KEY |
— | OpenAI API key (can also be set via Settings UI) |
Custom OpenAI-compatible endpoints (Ollama, LM Studio, vLLM, OpenRouter, Groq, ...) are managed in the Settings UI. The app discovers each provider's model catalog live, so new model releases appear without an app update.
All user data lives in a single SQLite file — back it up by copying that file.
React 19 · Vite · React Router · Zustand · React Flow (@xyflow/react) · dagre · Vanilla CSS · Node.js · Express · SQLite (better-sqlite3) · Vercel AI SDK (Gemini / Claude / OpenAI / BYOM) · Docker
MIT






