Skip to main content
logo_image

DotCode

A high-performance practice engine designed to help developers master algorithms through optimized spaced repetition and AI-guided reasoning.

#React, #TypeScript, #Node.js, #LlamaIndex, #PostgreSQL, #Drizzle ORM, #Vite, #Shiki
DotCode
Education / AI / DevTooling
May 2024

Goal

Automate the mastery of Data Structures and Algorithms by combining spaced repetition with agentic AI feedback.

My Role

Lead Developer & Architect

Timeline & Tools

March 2024 – Present

React 19, LlamaIndex, Drizzle ORM, PostgreSQL, Monaco

01. Overview

DotCode is a specialized dashboard for developers preparing for technical interviews or sharpening their algorithmic thinking.

Unlike generic flashcard apps, DotCode is built specifically for code. It integrates directly with LeetCode-style problems, provides a premium Monaco-based editor environment, and uses a modified SM-2 spaced repetition algorithm to ensure you never forget a pattern you've learned.

Core Philosophy

  • Consistency over Intensity: Reviewing one hard problem at the right time is better than grinding ten at the wrong time.
  • Reasoning First: Using AI not to give answers, but to validate the logic and provide hints when stuck.
  • Zero Friction: Scaffolding problems and review schedules automatically.
DotCode Dashboard Overview

02. The Problem

The "LeetCode Grind" is famously inefficient. Most developers solve a problem, forget it two weeks later, and have to re-learn the same trick when it appears in an interview.

Current tools fail because:

  1. Flat Tracking: Spreadsheets and notion pages don't calculate review intervals.
  2. Context Switching: Jumping between browser tabs, local IDEs, and notes breaks focus.
  3. Stagnation: Without a rebalancing mechanism, review queues either become empty or overwhelming.

03. The Architecture

DotCode is architected as a high-performance monorepo:

Frontend (React + Vite + TailwindCSS)
A sleek, dark-mode dashboard with real-time analytics, a Monaco code editor, and interactive problem filters.

Backend (Express + TypeScript + Drizzle ORM)
A robust API handling problem metadata, user progress, and the spaced repetition engine.

Reasoning Engine (Python/Node + LlamaIndex)
Leverages agentic RAG to analyze user solutions, provide Socratic hints, and verify complexity analysis.


04. Spaced Repetition & Rebalancing

The heart of DotCode is its scheduling engine. Each problem has an interval and nextReview date that scales based on your performance.

The Rebalance Algorithm

To prevent "review spikes" (where 20 problems are due on Monday and none on Tuesday), I implemented a Rebalance Schedule feature. It analyzes the upcoming queue and distributes reviews to enforce a maximum daily cap, ensuring a sustainable long-term practice habit.

AI Reasoning Interface

05. AI-Powered Reasoning

DotCode features an integrated AI assistant (powered by LlamaIndex) that acts as a pair programmer.

  • Complexity Validation: The AI reads your code and verifies if you've actually hit the target Time and Space complexity.
  • Pattern Recognition: It helps you identify when a "Sliding Window" problem is actually a hidden "Two Pointers" variation.
  • Socratic Hinting: Instead of showing the solution, it asks questions about the edge cases you might have missed.
Spaced Repetition Scheduler
Spaced Repetition Scheduler

06. Technical Highlights

Dynamic Code Highlighting

Using Shiki, DotCode provides pixel-perfect syntax highlighting for problem descriptions and solutions that matches the user's preferred IDE theme.

Interactive Performance Metrics

Real-time charts (via Recharts) track your "Mastery Score" across different categories like Graphs, Dynamic Programming, and Linked Lists.


07. Results & Reflection

Since its inception, DotCode has transformed the way I approach technical learning. By moving from "problem counts" to "retention metrics," the quality of practice has increased significantly.

Key Learnings:

  • Spaced repetition is as effective for code patterns as it is for language learning.
  • Reducing the friction of "setting up" a problem is 90% of the battle.
  • AI is best used as a coach, not a source of answers.

08. Tech Stack

Frontend: React 19, Vite, TailwindCSS, Radix UI, Monaco Editor, Recharts, Framer Motion
Backend: Node.js, Express, Drizzle ORM, PostgreSQL
AI Service: LlamaIndex, Google Gemini API, Shiki
Tooling: Tether CLI (Rust), TSX