Practice coding.
Keep everything local.

Solve LeetCode-style problems in JavaScript, TypeScript or Python, then build engineering projects scored on concurrency, latency and code quality. Everything runs on your machine.

Free & open sourcemacOSWindowsLinux

AlgoLocal
▶ RunTypeScript⌄
Two SumEasy · Array · Hash table
Valid ParenthesesEasy · String · Stack
Merge Two Sorted ListsEasy · Linked list
Binary Tree InorderMedium · Tree · Stack
Top K FrequentMedium · Heap

28 problems

TS two-sum.ts ×
1 function twoSum(nums: number[], target: number) {
2   const map = new Map<number, number>();
3
4   for (let i = 0; i < nums.length; i++) {
5     const complement = target - nums[i];
6     if (map.has(complement)) {
7       return [map.get(complement)!, i];
8     }
9     map.set(nums[i], i);
10  }
11  return [];
12 }
TestsConsole

Test case 1

Test case 2

Test case 3

nums = [2,7,11,15], target = 9
Output  [0,1] Passed

How a practice session works.

Two ways to practice: algorithm problems, or engineering projects.

  1. 01

    Pick a problem or a project

    LeetCode-style problems by topic and difficulty, or a multi-stage engineering project.

  2. 02

    Write code in a real editor

    The Monaco editor, with a full file tree on engineering projects.

  3. 03

    Run the tests locally

    WebAssembly runs every test case on your machine.

  4. 04

    See how it scored

    Test results for problems; concurrency, latency and code quality for projects.

See all features
AlgoLocal / Practice
function solve(input) {
  // your approach stays here
  return result;
}
Test case 1Passed  ✓
Test case 2Passed  ✓
AlgoLocal / Progress
Solved12/28

Keep practicing.

Past 12 weeks

Less More

Engineering projects,
built stage by stage.

Each project is a multi-file workspace you clear one stage at a time. Hidden tests check that it works, measured gates check how it behaves — peak concurrency, latency, retries, duplicate calls — and static analysis reviews the code itself.

  • Resilient fetch pipelineBounded concurrency, backoff, single-flight caching, cancellation
  • Event-driven order pipelineEvent bus, onion middleware, idempotency, dead letter queue
  • Resilient API gatewayToken bucket, circuit breaker, timeout budgets
How projects are graded
AlgoLocal / Resilient fetch pipelineTypeScript⌄
1. Contract2. Bounded concurrency3. Retry4. Caching5. Ship it
contract.tsfetcher.tspool.ts
export async function mapWithConcurrency(items, limit, worker) {
  const results = new Array(items.length);
  const size = Math.min(limit, items.length);
  // one pull-based worker per slot
  await Promise.all(runners);
  return results;
}
STAGE PASSED10/10 cases100
  • Peak concurrency at most 44 / 4
  • Never throttled by upstream0 / 0
  • 12 requests within 300ms300ms / 300ms
Generate

From a topic to a complete problem.

Ask

Context-aware hints while you work.

Compare

Several approaches, with their complexity trade-offs.

AI when you want it.
Focus when you don’t.

Generate a problem, ask for a hint, or compare solutions. Connect DeepSeek, OpenAI, Claude, Qwen, any OpenAI-compatible endpoint local or remote, or run it all on your own machine with Ollama or LM Studio — or skip AI entirely.

Set up an AI provider
AlgoLocal / AI HelpDeepSeek⌄
Current problem

Two Sum

Return the indices of two numbers that add up to the target.

const complement = target - nums[i];
Your question

Give me a hint without revealing the full answer.

Think about what information you need to remember as you scan the array once.

Try this nextStore each value with its index, then look for its complement.

Three languages.
One local runtime.

JS

JavaScriptNative browser execution

TS

TypeScriptReal-time transpilation

Py

PythonCPython through Pyodide

No account. No telemetry. Your attempts stay on your machine.

Download AlgoLocal.

Free and open source, for macOS, Windows and Linux.

View all releases
First launch on macOS. These builds are signed ad-hoc rather than with an Apple Developer ID, so macOS will say it cannot verify the app.
  1. Open AlgoLocal from Applications and click Done on the warning.
  2. Go to System Settings → Privacy & Security, scroll to Security, and click Open Anyway.

Practice anywhere.
Even offline.