KodeKloud streak tracker (browser extension + recon; code only)
  • JavaScript 57.9%
  • Python 19.1%
  • CSS 13.3%
  • HTML 9.7%
Find a file
2026-06-14 18:23:49 +04:00
extension Add KodeStreaks browser extension 2026-06-14 18:23:49 +04:00
recon Add KodeStreaks browser extension 2026-06-14 18:23:49 +04:00
tools Add KodeStreaks browser extension 2026-06-14 18:23:49 +04:00
.gitignore Add KodeStreaks browser extension 2026-06-14 18:23:49 +04:00
README.md Add KodeStreaks browser extension 2026-06-14 18:23:49 +04:00

KodeStreaks

A browser extension that turns your KodeKloud learning into a TryHackMe-style daily-streak system — built to keep you consistent on the road to a DevOps career.

It quietly watches your real KodeKloud session and tracks the things that matter: which lessons you complete, how long you study, your daily streak, and your progress toward each certification — all stored 100% locally in your browser.

Status: working (v0.2.0). Runs on Brave/Chrome and Firefox.

Features

  • 🔥 Daily streak with streak freezes (earn 1 per 15 study days; a missed day spends a freeze instead of breaking the chain)
  • 🎉 Milestone celebrations at 7 / 30 / 90 / 180 / 270 / 365 days (desktop notifications)
  • 🎯 Daily goal (lessons or minutes per day) with progress
  • 🧭 Certification checkpoints — Terraform / CKA / AWS / Azure with exam countdowns, auto-linked to your KodeKloud courses
  • 📚 Courses tab — per-lesson completion (done / in-progress / not-started)
  • 🕘 Study-time tracking and an activity log with real lesson names
  • 📊 Dashboard page — 30/90-day charts, "when you study" by weekday & hour
  • 💾 Data safety — auto-backup, plus export / import / restore
  • 🦊 Cross-browser: Brave/Chrome (MV3) and Firefox

How it works

KodeKloud's learn-api is authenticated with a Firebase Bearer token. A content script running in the page sniffs that token off the page's own requests and reads the relevant endpoints (start_lesson, complete_lesson, submit_mcq_answer, course progress, profile). Events are stored in IndexedDB; everything else (streak, averages, charts) is derived from that local log.

KodeKloud page → inject.js (page world) → bridge.js → background.js → IndexedDB → popup / dashboard

Nothing is ever sent to any server. There is no backend.

Install (development / unpacked)

Brave / Chrome

  1. brave://extensions (or chrome://extensions) → enable Developer mode
  2. Load unpacked → select the extension/ folder

Firefox

  1. Build the Firefox copy: python tools/port_firefox.py
  2. about:debugging#/runtime/this-firefoxLoad Temporary Add-on → pick dist-firefox/manifest.json

Project layout

extension/        the extension (load this in Brave/Chrome)
  manifest.json   MV3 manifest
  inject.js       page-world fetch/XHR sniffer + token capture
  bridge.js       relays events to the worker + heartbeat
  background.js   service worker: DB, sessions, badge, milestones, backup
  db.js           IndexedDB wrapper
  util.js         shared streak / freeze logic
  popup.*         toolbar popup (Today / Log / Courses / Goals)
  dashboard.*     full-page analytics
  options.*       settings + data management
  icons/          generated icons
tools/
  gen_icons.py    regenerate icons (Pillow)
  port_firefox.py cross-browser alias + Firefox build

Privacy

All data stays in your browser (IndexedDB + local storage). The extension only talks to *.kodekloud.com to read your own progress. Export your data anytime from the popup or Options page.

License

Private / all rights reserved.