The core product — 147 interactive lessons teaching non-technical people how to use the terminal and Claude Code. AI-powered onboarding, theming, text-to-speech, community forum, and peer help.
147 lessons across 14 levels. JSON-driven content with 10 interactive section types (Quiz, FillInBlank, ClickMatch, TerminalPreview, etc.). Content authored manually, structured and validated with AI assistance. Each lesson is a standalone JSON file with metadata, sections, and completion criteria.
React 18
TypeScript
Vite
JSON lessons
10 section types
Personalized learning plans generated by Claude or Gemini. Students describe their background and goals, AI analyzes the full curriculum and builds a custom path highlighting priority levels and recommended lessons. Plans saved to DB and shown on dashboard.
Anthropic API
Gemini API
Rate limited
Prompt injection guard
Admin describes a theme hint, AI generates a full 14-token color palette for both dark and light modes. Colors validated against CSS hex/rgba patterns. Stored in DB, selectable by all users. Supports both Anthropic and Gemini providers.
Anthropic
Gemini
14 CSS tokens
Dark + Light
Browser SpeechSynthesis API reads lesson content aloud. Admin-configurable voice, rate, pitch, volume. Per-section toggles (narrative, guideStep). Voice matched by name across browsers. Zero backend cost — no audio files, no external APIs.
Web Speech API
Admin toggle
Zero cost
Discussion categories (general + lesson-specific), threads with titles/bodies, replies, upvote/downvote voting, full-text search via PostgreSQL tsvector. Image attachments (client-side resize, base64). Content moderation pipeline on all user input. Feature requests via genie-themed wish system.
PostgreSQL tsvector
Socket.IO
Image lightbox
Moderation
Real-time help system via Socket.IO. Students request help on specific lessons, peers can offer assistance and chat. Dual moderation pipeline: sanitizeForPrompt() for AI injection guard + moderateContent() for profanity and link spam.
Socket.IO
Content Moderation
Lesson-specific