0%
LEETFOLIO
Chrome Extension · Zero Backend · Free Forever

Code.
Analyze.
Ship.

Your LeetCode solutions deserve better than being buried in a browser tab. Leetfolio auto-syncs every accepted submission to GitHub — with complexity analysis, spaced repetition, and zero backend.

0
Backend servers
13
Core features
8
Build phases
Solutions synced
Auto Sync · Complexity Analysis · Spaced Repetition · Zero Backend · Solution Versioning · Offline Queue · Diff Viewer · Multi Profile · Tag Inference · Company Tags · AI Walkthroughs · Open Source · Auto Sync · Complexity Analysis · Spaced Repetition · Zero Backend · Solution Versioning · Offline Queue · Diff Viewer · Multi Profile · Tag Inference · Company Tags · AI Walkthroughs · Open Source ·
System Output

Watch it
work.

leetfolio — background.js
$
GitHub Repository — LeetCode-Solutions
📁 LeetCode/
📄 README.md ← dashboard
📁 Arrays/
📁 TwoSum/
📄 solution.java
📄 solution_v2.java ← improved
📄 README.md
📄 diff_v1_v2.md ← new
📁 MaxSubarray/
📄 solution.py
📄 README.md
📁 DynamicProgramming/
📁 CoinChange/
📄 solution.cpp
📄 README.md
📁 .leetfolio/
📄 manifest.json

Everything.
Nothing missing.

13 features built into a single Chrome extension. No subscriptions, no servers, no data collection. Your code stays yours — locally encrypted, GitHub-synced.

01
Auto Sync

Detects accepted submissions via DOM observer + network intercept. No button clicks required.

MutationObserver
02
🧠
Complexity Analyzer

Local AST/regex engine detects O(n), O(log n), O(n²) and space complexity — no API needed.

100% Local
03
🔁
Spaced Repetition

SM-2 algorithm surfaces problems you need to re-solve. Never forget a pattern again.

SM-2 Algorithm
04
📜
Solution Versioning

Re-solve a problem? Keeps v1, v2, v3 side by side. Visual proof of your growth.

Git-style
05
↔️
Diff Viewer

Auto-generates a unified diff between versions. See exactly what you optimized.

jsdiff
06
📴
Offline Queue

Solutions queued in IndexedDB when offline. Auto-flush with exponential backoff when back online.

IndexedDB
07
👤
Multi Profile

Separate environments for interview prep vs personal practice. Switch repos with one click.

Namespace Isolated
08
🏷️
Tag Inference

Automatically reads LeetCode topic tags post-submission. Your folders self-organize.

DOM Scraping
09
🏢
Company Tags

Annotate solutions with company tags (Google, Amazon). Searchable prep portfolio.

Custom Metadata
10
📝
README Generator

Template-driven README with approach, complexity table, tags, and review date. Zero AI required.

Template Engine
11
🤖
AI Walkthroughs

Optional Claude/OpenAI integration for deep explanations. Your API key, your data.

Optional
12
🔐
Zero Backend

100% client-side. OAuth via chrome.identity. No middleman. No telemetry. No servers.

Privacy First
Process

Six steps.
Fully automatic.

1
Submit on LeetCode

You click submit as usual. Leetfolio watches silently in the background using a MutationObserver and fetch interceptor.

// content.js
observer.observe(document, {
  subtree: true,
  childList: true
});
2
Accepted? Extract everything

On "Accepted" status, Leetfolio extracts: code from Monaco editor, problem title, difficulty, topic tags, and language.

// Payload object
{ title: "Two Sum",
  difficulty: "Easy",
  tags: ["Array", "HashMap"],
  code: <editor.value> }
3
Analyze complexity locally

The complexity engine scans your code with regex + pattern matching. Detects loops, nesting depth, recursion, binary search patterns — no API call needed.

// complexity.js result
{ time: "O(n)",
  space: "O(n)",
  reason: "HashMap lookup" }
4
Generate README from template

A fully populated markdown README is generated locally — complexity table, approach, tags, company annotations, and next SRS review date.

// readme.js fills slots
# Two Sum
**Difficulty:** Easy
**Time:** O(n) — HashMap
**Space:** O(n)
5
Push to your GitHub repo

Files are pushed directly via GitHub REST API — no server involved. If offline, they queue in IndexedDB and flush automatically when back online.

// github.js
PUT /repos/user/LeetCode/
  Arrays/TwoSum/
  solution.java
  README.md
6
Schedule your next review

SM-2 algorithm records the solve and computes the next review date. Problem appears in "Due Today" when it's time to re-solve for retention.

// spaced.js — SM-2
nextInterval = 6 days
easeFactor = 2.5
dueDate = "2024-04-08"
Under the hood

Complexity
without the cloud.

Input → Two Sum (Java)
public int[] twoSum(int[] nums, int target) {
  Map<Integer, Integer> map = new HashMap<>();
  for (int i = 0; i < nums.length; i++) {
    int comp = target - nums[i];
    if (map.containsKey(comp))
      return new int[]{map.get(comp), i};
    map.put(nums[i], i);
  }
  return new int[0];
}
⏱ Time: O(n)
💾 Space: O(n)
Detected: single loop + HashMap → linear time, linear space
Input → Bubble Sort (Python)
def bubble_sort(arr):
  n = len(arr)
  for i in range(n):
    for j in range(0, n-i-1):
      if arr[j] > arr[j+1]:
        arr[j], arr[j+1] = arr[j+1], arr[j]
  return arr
⏱ Time: O(n²)
💾 Space: O(1)
Detected: nested for-loops at depth 2 → quadratic time, in-place
From the community

Devs who
get it.

Finally a LeetCode tool that doesn't just dump files. The complexity annotations alone are worth it — I've learned more reviewing my own READMEs than any tutorial.

KD
Khushi Dhir.
SDE-2 @ Amazon

The spaced repetition feature is the hidden gem. I stopped forgetting sliding window after a week of reviews. This is Anki for algorithms.

MS
Malay Shikhar.
CS Final Year → SDE @ Flipkart

Zero backend sold me immediately. I've had other sync tools leak tokens. Leetfolio stores everything locally, pushes directly via GitHub API. Clean.

RT
Ronit Thakur.
Security Eng @ Razorpay

Your portfolio
is waiting.

148 problems solved. Zero visible on GitHub. Start syncing — it takes 60 seconds to set up and runs silently from there.