Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SystemDesign.ai

SystemDesign.ai

AI-powered system design mock interviewer.
Draw. Explain. Get scored β€” completely free.

Latest Release GitHub package.json dev/peer/optional dependency version GitHub Downloads (all assets, all releases) Stars License


An Electron desktop app that turns Excalidraw into a full system design interview practice tool. An AI interviewer asks you realistic questions, you draw and explain your architecture on the canvas, and an AI judge scores your performance.

Use it 100% free (unlimited) with free models on OpenRouter and Google AI Studio's. No subscriptions, no sign-ups beyond the API keys.


Features

🎲 AI Interview Question Generator

One-click generation of realistic HLD interview questions across 14+ domains β€” Messaging & Social, Media & Streaming, Commerce & Payments, Transportation, Cloud Infrastructure, AI/ML, Security, and more.

The generated question is placed directly on your Excalidraw canvas as a text element, so it's always visible while you work β€” just like having a prompt written on the whiteboard.

You can optionally provide context or hints to steer the question in a specific direction, or let the AI pick a domain at random.

Question Generator
AI-generated interview question placed directly on the canvas


⏺️ Session Recording with Audio

Hit record and start designing. The recorder captures everything happening on the canvas in real time:

  • Every drawing action β€” element creation, movement, resizing, connecting arrows, text edits
  • Your voice β€” microphone audio recorded alongside your diagram changes
  • Timestamped event timeline β€” a complete log of what you drew and when, with millisecond precision

Pause and resume at any time. Each session is saved locally with a compact JSON format and can be exported or copied to clipboard.

After you stop recording, your audio is automatically transcribed using Google Gemini. Speech is broken into natural segments with timestamps and merged into your event timeline β€” so you can see exactly what you said while drawing each component.

Recording in progress
Recording toolbar with timer, pause/resume, and stop controls


πŸ€– AI Interviewer Chatbot

A simulated interviewer that sits alongside your canvas in a chat panel. It behaves like a real interviewer β€” answers your clarifying questions with realistic numbers and constraints, but never gives away the solution.

"How many users?" β†’ "Let's say around 100 million monthly active users."

"Do we need real-time?" β†’ "Yes, messages should be delivered in near real-time, under a second."

"Should I use SQL or NoSQL?" β†’ "That's a design decision for you to make. What trade-offs are you considering?"

Supports both text and voice input. Use the microphone button to speak your question β€” it's transcribed in real time and sent to the interviewer. Voice input supports two modes: fast Gemini Live (WebSocket streaming for low-latency real-time transcription) and fallback REST transcription. The full conversation is saved as part of your recording session.

Interviewer Chatbot
AI interviewer chat with voice input β€” ask clarifying questions just like a real interview


βš–οΈ AI Judge & Scoring

Open any recording and run the AI Judge to get a detailed evaluation report. The judge analyzes your entire session β€” every drawing action, every word you said β€” and scores you across 7 dimensions:

Dimension What it evaluates
Problem Understanding Did you clarify requirements and constraints?
High-Level Architecture Is the overall design sound? Major components identified?
Component Design Are individual components well thought out?
Data Model Is the data model appropriate for the problem?
Scalability Did you address caching, load balancing, sharding?
Communication Did you explain your thinking clearly and structured?
Diagram Quality Is the diagram organized, readable, and complete?

Each dimension gets a 1–5 score with specific observations referencing your actual drawing and speech. The report also includes an overall score, top 3 strengths, and top 3 areas for improvement.

AI Judge Report
Detailed judge report with per-dimension scores, strengths, and improvements


🎬 Recording Playback & Review

Open any past recording from the sidebar to review your performance in detail:

  • Final canvas snapshot β€” a rendered preview of your completed diagram
  • Audio playback β€” full audio player with seek bar synced to the event timeline
  • Event log β€” scroll through every action with timestamps; active events highlight as audio plays
  • Transcription badges β€” see transcription status (running, done, or failed)
  • Export β€” copy session JSON to clipboard or download as a file

Recording Detail
Recording review with audio playback synced to the event timeline


πŸ“ Multi-Canvas Workspace & More

  • Multiple canvases β€” create, rename, and delete canvases, each with their own recordings
  • Auto-save β€” your work is saved automatically as you draw, never lose progress
  • Collapsible sidebar β€” toggle the canvas list and recordings panel
  • Dark & light mode β€” full theme support, toggle directly from the toolbar
  • Configurable models β€” swap in any model from OpenRouter or change the transcription model
  • Feature toggles β€” enable/disable audio recording, judge, question gen, or chatbot independently

πŸš€ Quick Start

Prerequisites

Install & Run

# Clone the repository
git clone https://github.com/your-username/system-design-ai.git
cd system-design-ai

# Install dependencies
npm install

# Start the app
npm run dev

🎯 How to Use

1

Add your API keys
Open βš™οΈ Settings (gear icon in the top bar) β†’ paste your OpenRouter and Gemini keys.
β†’ Step-by-step API setup guide (5 min, both can be free)

2

Create a canvas
On first launch you'll be prompted to name your canvas (e.g. "Design WhatsApp"). You can create as many as you need.

3

Generate an interview question
Click the 🎲 button in the toolbar. Optionally pick a domain or add context. The question appears on your canvas.

4

Hit record & start designing
Click ⏺️ to start recording. Draw your architecture, explain your thinking out loud. Use the πŸ’¬ Interviewer Chat to ask clarifying questions β€” type or use voice.

5

Stop recording
Click Stop when you're done. Your session is saved automatically and audio transcription starts in the background.

6

Review & get scored
Open your recording from the sidebar. Review the event log and audio playback. Click Judge to run the AI evaluation and get your detailed score report.

βš™οΈ Configuration

All settings are accessible from the Settings dialog (βš™οΈ):

API Keys

Key Used For
OpenRouter API Key Judge evaluation, question generation, interviewer chatbot
Gemini API Key Audio transcription (speech β†’ text)

Models

Model Slot Default Purpose
Audio Model gemini-3.1-flash-live-preview Audio β†’ text transcription via Google AI
Smart Model nvidia/nemotron-3-ultra-550b-a55b:free Judge evaluation (needs strong reasoning)
Fast Model google/gemini-3.1-flash-lite Question gen & chatbot (speed matters)

πŸ’‘ You can swap in any model available on OpenRouter β€” including free open-source models like Llama and Gemma. Browse models at openrouter.ai/models.

Feature Toggles

Feature Default
Audio Recording βœ… On
Audio Transcription βœ… On
Judge βœ… On
Question Generation βœ… On
Chatbot βœ… On

Toggle any feature on/off based on your needs.


πŸ—οΈ Building from Source

Build Commands

npm run dev           # Dev server + Electron
npm run build         # TypeScript compile + Vite production build
npm run dist:mac      # macOS β†’ release/*.dmg + .zip
npm run dist:linux    # Linux β†’ release/*.AppImage + .tar.xz
npm run dist:win      # Windows β†’ release/*.exe (NSIS installer + portable)

Tech Stack

  • Electron β€” desktop shell
  • React 18 + TypeScript (strict) β€” UI
  • Vite β€” build tool
  • Excalidraw β€” canvas engine
  • Radix UI β€” accessible dialog & scroll components
  • Lucide β€” icons
  • CVA β€” component styling

Project Structure

Organized using Feature-Sliced Design architecture:

src/
β”œβ”€β”€ app/           # Providers (Settings, Toast)
β”œβ”€β”€ entities/      # Domain types (canvas, chatbot, recording, settings)
β”œβ”€β”€ features/      # Feature modules (canvas, chatbot, judge, questions, recorder, settings)
β”œβ”€β”€ pages/         # EditorPage β€” main app view
β”œβ”€β”€ processes/     # Business logic hooks (canvas, chatbot, recording)
β”œβ”€β”€ shared/        # Components, lib (ai, audio, canvas, gemini), types, utils
β”œβ”€β”€ widgets/       # Composite blocks (Sidebar, Toolbar, ChatbotPanel, ToastContainer)
β”œβ”€β”€ styles.css     # All styles (single file)
└── vite-env.d.ts  # Window API type declarations
electron/
β”œβ”€β”€ main.ts        # Electron main process β€” all file I/O via IPC handlers
└── preload.ts     # Context bridge β€” exposes canvasAPI, recordingAPI, settingsAPI, recorderAPI

🀝 Contributing

Contributions are welcome! Feel free to open issues, suggest features, or submit pull requests.


πŸ“„ License

MIT β€” use it, modify it, ship it.

Releases

Packages

Contributors

Languages