๐Ÿ›ก๏ธ Privacy Policy

YOUR DATA,
YOUR CONTROL

DsGit is built by developers, for developers. We believe you should know exactly what data the extension touches โ€” nothing more, nothing less.

Last updated: April 24, 2025 ย ยทย  Version 1.0.2

๐Ÿ›ก๏ธ

Overview

DsGit ("we", "our", "the Extension") is a Chrome browser extension that automatically pushes your DSA (Data Structures & Algorithms) solutions to GitHub, tracks your solving streak, and enables competitive battles with peers.

We are committed to transparency. This Privacy Policy explains exactly what data we collect, why we collect it, where it is stored, and how you can delete it. We follow the principle of minimum data collectionโ€” we only touch data that is strictly necessary to provide the extension's features.

Effective date: April 24, 2025 ย ยทย  Extension version: 1.0.2

๐Ÿ“ฆ

Data We Collect

The following table lists every piece of data the extension interacts with, where it lives, and why it is needed.

DataStorage LocationPurpose
GitHub OAuth Access Tokenchrome.storage.local (device only)Authenticate API calls to create/push to your GitHub repo
GitHub Username, Avatar URL, GitHub User IDchrome.storage.local + DsGit backendDisplay your profile in the popup; identify you in battles
Target GitHub Repository Namechrome.storage.local (device only)Know which repo to push solutions into
Streak Data (current streak, longest streak, daily history, break dates)chrome.storage.local (device only)Power the streak tracker and daily reminder notifications
Push History (question name, platform, difficulty, language, date, day number, commit SHA)chrome.storage.local (device only, max 500 entries)Show recent submissions; build the GitHub README stats
Code Snapshots (your draft code + problem URL, timestamp)chrome.storage.local (device only, max 10 snapshots)Time-machine feature โ€” lets you restore earlier drafts
Battle Records (battle ID, opponent username, type, status, duration)chrome.storage.local + DsGit backendTrack active/completed competitive battles
Badgeschrome.storage.local (device only)Display achievement badges in the popup
Signup Datechrome.storage.local (device only)Track how long you have been using the extension
Stats Cache (aggregated solve counts per platform/difficulty)chrome.storage.local (device only)Fast popup load without repeated API calls
โœ… We do NOT collect:
  • Your full code solutions (these go directly to your GitHub repo)
  • Browsing history outside the supported coding platforms
  • Any data from pages that are not LeetCode, GeeksforGeeks, CodingNinjas, or Nados.io
  • Passwords or payment information of any kind
  • Analytics, telemetry, or crash reports beyond what the extension needs to function
๐Ÿ”

Chrome Permissions Explained

DsGit requests the following Chrome permissions. Each permission is justified below.

storage

Save your GitHub token, streak data, push history, and settings locally on your device using chrome.storage.local.

identity

Launch the GitHub OAuth 2.0 sign-in flow securely using chrome.identity.launchWebAuthFlow.

notifications

Send daily streak reminders (e.g., 'You haven't pushed today!') and battle event alerts.

alarms

Schedule the daily reminder alarm and periodic battle-sync polling without requiring the popup to be open.

tabs

Open LeetCode when you click 'Open LeetCode' in a reminder notification.

scripting

Inject the content script that extracts your accepted solution code from the coding platform page when you click Push.

host_permissions โ€” leetcode.com, geeksforgeeks.org, naukri.com (CodingNinjas), nados.io

Read the problem page DOM to detect the question name, difficulty, language, and extract code from the Monaco/CodeMirror editor on these platforms only.

host_permissions โ€” api.github.com

Create repositories, push files (solutions + README + stats.json), and read your public profile via the GitHub REST API.

๐Ÿ™

GitHub Integration

When you click Push Solution, the extension calls the GitHub REST API directly from your browser using your own OAuth token. The request goes browser โ†’ github.com โ€” your code never passes through our servers.

The OAuth token is exchanged through a minimal Cloudflare Worker proxy solely because GitHub requires a server-side secret to complete the OAuth code exchange. The proxy receives the one-time OAuth code, exchanges it for an access token with GitHub, and returns the token to your extension. The proxy stores nothing.

We request the following GitHub OAuth scopes: repo (create & push to repos), user:email (read your email for profile), read:user (read your public GitHub profile). We do not request write access to other repos, organizations, or any scope beyond what is listed.

๐Ÿ–ฅ๏ธ

DsGit Backend & Real-Time Battles

To power the real-time Battle Arena feature, the extension connects to our backend at api-dsgit.onrender.com via HTTPS and WebSocket (WSS).

The data sent to our backend is limited to:

  • User sync โ€” your GitHub ID, username, and avatar URL (sent once on login to register your account).
  • Battle activity โ€” question name, platform, difficulty level, and battle ID when you push a solution during an active battle (so your score updates in real-time for your opponent).
  • Challenge events โ€” sending or accepting a battle invite (your username, opponent username, battle type, duration).

Battle data is stored in our database only while a battle is active. We retain it for leaderboard and historical purposes unless you request deletion.

๐Ÿ”—

Third-Party Services

GitHub (github.com / api.github.com)

Used for OAuth authentication and storing your solution files. Subject to GitHub's Privacy Policy.

View their Privacy Policy โ†’

Cloudflare Workers

A minimal server-side proxy to exchange the GitHub OAuth code for an access token. No data is logged or persisted by this worker.

View their Privacy Policy โ†’

DsGit Backend (Render.com)

Hosts our Node.js backend for the Battle Arena feature. Render may log standard infrastructure metrics (CPU, memory). No personally identifiable data beyond username is stored.

View their Privacy Policy โ†’
๐Ÿ’พ

Local Storage & Data Retention

The vast majority of your data is stored locally on your device using chrome.storage.local. This data never leaves your machine except when it is explicitly needed to call the GitHub API or our battle backend.

OAuth TokenUntil you log out
User ProfileUntil you log out
Push HistoryStored locally, max 500 entries
Streak DataStored locally indefinitely
Code SnapshotsStored locally, max 10 snapshots
Battle Records (backend)Retained until you request deletion
โš–๏ธ

Your Rights & Data Deletion

You have full control over your data:

  • โ†’Log out anytime from the extension popup. This clears your GitHub token and profile from chrome.storage.local instantly.
  • โ†’Uninstall the extension to delete all locally stored data permanently.
  • โ†’Request backend deletion โ€” contact us at the email below to request deletion of your account data (username, avatar URL, battle records) from our backend database.
  • โ†’Revoke GitHub access at any time from github.com/settings/applications.
๐Ÿ”’

Security

Your GitHub access token is stored using chrome.storage.local, which is sandboxed to the extension and not accessible by web pages or other extensions. It is never transmitted to our servers.

All communication with our backend and GitHub uses HTTPS / WSS (TLS encrypted) connections. Our backend does not log or cache your GitHub token.

The OAuth flow uses a cryptographically random state parameter (via crypto.randomUUID()) to prevent CSRF attacks.

๐Ÿ‘ถ

Children's Privacy

DsGit is not directed at children under the age of 13. We do not knowingly collect personal information from children. If you believe a child has provided us with personal information, please contact us and we will delete it promptly.

๐Ÿ“‹

Changes to This Policy

We may update this Privacy Policy from time to time. When we do, we will update the effective date at the top of this page. Significant changes will also be noted in the Chrome Web Store listing update notes. Continued use of the extension after changes constitutes acceptance of the updated policy.

โœ‰๏ธ

Contact Us

If you have questions, concerns, or data deletion requests, reach out at:

DsGit โ€” Privacy Inquiries

GitHub: github.com/deenu-cse

We aim to respond to all privacy requests within 7 business days.

DsGit is open-source. You can inspect every line of code that runs in your browser. We believe in earning trust through transparency.