Keep every solution.
Automatically sync accepted coding solutions, notes, and metadata to GitHub.
- Automatic Solution Syncing: Instantly pushes accepted code submissions to your GitHub repository without interrupting your solving workflow.
- GitHub Integration: Direct communication with the GitHub API using personal access tokens (PAT) for custom repository sync paths.
- Problem Notes: Keep track of key findings, edge cases, and learnings by appending revision notes to each problem path.
- Submission Metadata Tracking: Captures and saves detailed runtime metrics, memory usage, language, difficulty, timestamps, and other submission details in a structured
metadata.jsonfile. - Session Tracking: Measures active focus time spent solving problems and stores it alongside each solution.
- Local Storage Fallback: Gracefully caches configuration and session data using Chrome storage to prevent data loss.
- Future Platform Support: Built with a modular architecture that can be extended beyond LeetCode to additional coding platforms.
When practicing coding problems, it is surprisingly easy to lose track of previous solutions, revision notes, and learning progress. While coding platforms provide submission history, they are not designed to be a long-term, searchable archive of your journey.
Kepr acts as a background sync agent. When an accepted submission is detected, it captures your solution, metadata, notes, and activity information, then automatically commits everything to your personal GitHub repository. Over time, this creates a searchable, version-controlled archive of your coding progress.
- Visit the Releases page.
- Download the latest
kepr-<version>.ziparchive. - Extract the archive locally.
-
Open Chrome (or any Chromium-based browser).
-
Navigate to:
chrome://extensions/ -
Enable Developer Mode.
-
Click Load unpacked.
-
Select the extracted extension folder.
Click the Kepr icon from the browser toolbar to open the settings panel.
Kepr requires a one-time setup before syncing solutions.
-
Open GitHub Settings.
-
Navigate to:
Developer Settings → Personal Access Tokens → Fine-grained Tokens -
Create a token with repository content read/write permissions.
Enter your repository in the following format:
owner/repository-name
Example:
octocat/my-solutions
Click Test Connection to verify access.
Optionally specify a directory inside your repository:
DSA/LeetCode
or
Solutions
If left empty, solutions will be synced directly to the repository root.
Click Save Settings to persist the configuration.
Kepr is built with:
- Plasmo
- React
- TypeScript
- Tailwind CSS
- Chrome Extension APIs
- Node.js v22+
- pnpm
Clone the repository:
git clone https://github.com/ArNAB-0053/kepr.git
cd keprInstall dependencies:
pnpm installStart the development server:
pnpm devLoad the generated development build:
build/chrome-mv3-dev
through Chrome's Load unpacked option.
Generate a production-ready extension:
pnpm buildOutput:
build/chrome-mv3-prod
This folder can be packaged and distributed manually or attached to GitHub Releases.
├── assets/ # Logos, icons, screenshots, design assets
├── build/ # Generated builds (ignored by Git)
├── src/
│ ├── background/ # Background service worker
│ ├── contents/ # Content scripts and page observers
│ ├── lib/
│ │ ├── constants/ # Shared constants
│ │ ├── github/ # GitHub API integration
│ │ ├── leetcode/ # Platform-specific logic
│ │ ├── storage/ # Chrome storage abstraction
│ │ └── types/ # TypeScript definitions
│ └── popup/ # Extension popup UI
├── package.json
└── tsconfig.json
- Support additional coding platforms (Codeforces, HackerRank, GeeksforGeeks, etc.)
- Enhanced metadata tracking and analytics
- Repository bootstrap templates
- Progress dashboards and insights
- Better activity and revision tracking
- Cross-browser support
Contributions are welcome.
If you would like to contribute:
- Fork the repository.
- Create a feature branch.
- Make your changes.
- Submit a pull request.
Please use Conventional Commits whenever possible:
feat: add Codeforces support
fix: prevent duplicate syncs
docs: improve installation guide
This project is licensed under the MIT License. See LICENSE for details.

