projects / codepop

CodePop

Chrome extension (Manifest V3) that records every LeetCode attempt — Accepted, Wrong Answer, TLE and errors — and commits each one to your GitHub repo.

Problem
Most LeetCode → GitHub tools only keep Accepted solutions. The failed attempts, where most of the learning happens, disappear.
Engineering approach
Plain ES modules, no bundler. Content scripts capture problem metadata and Monaco editor code on Submit, a MutationObserver reads the verdict, and a service worker drains a persistent queue into atomic Git commits via GitHub’s Git Data API. Auth supports a fine-grained PAT or GitHub OAuth; failed uploads retry automatically.
Technologies
  • Chrome Manifest V3
  • Vanilla JavaScript (ES modules)
  • chrome.storage / service workers
  • GitHub REST + Git Data API
  • OAuth / fine-grained PAT
Verified results
End-to-end loop: capture → queue → one commit per attempt → popup status. Closer to LeetHub/LeetSync in spirit, but oriented around every attempt, not only Accepted solutions.
Status
v0.1.1 — core loop complete; LeetCode DOM selectors remain the fragile spot.