Skip to content

Deepayan-Thakur/grind-exe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

 β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—  β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•”β•β•β•β•β• β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•”β•β•β•β•β•
β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—   β•šβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—  
β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•   β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•”β•β•β•  
β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•”β• β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
 β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•šβ•β•β•šβ•β•  β•šβ•β•β•β•β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β•β•šβ•β•  β•šβ•β•β•šβ•β•β•β•β•β•β•

βš™ GRIND.EXE

Your personal DSA & Aptitude tracker β€” synced to GitHub, available everywhere.


Live Demo GitHub Pages No Framework Storage


"The grind never stops. Every problem solved is a weapon forged."



πŸ“Œ Table of Contents


🧠 What is GRIND.EXE?

GRIND.EXE is a production-ready, single-file web application built to track your DSA (Data Structures & Algorithms) problem-solving journey and aptitude preparation β€” all synced automatically to your private GitHub Gist, meaning your progress is never lost, even across devices, browsers, and days.

Built as part of a DPIIT internship portfolio and personal development toolkit by a CS Engineering student and ML Engineer, GRIND.EXE is designed to:

  • Make you feel the urgency to solve more problems every time you open it
  • Keep your progress safe in the cloud (your GitHub account) with zero cost
  • Work offline first with smart local caching, and sync when connected
  • Give you data-driven insights on exactly where to improve
  • Run anywhere β€” desktop, mobile, tablet β€” with zero installation

🌐 Live Demo

https://Deepayan-Thakur.github.io/grind-exe

Open the link, paste your GitHub Personal Access Token once, and you're ready to track your grind. Your data will persist forever in a private Gist under your own GitHub account.


✨ Features

πŸ”΄ DSA Problem Tracker

  • Add unlimited DSA problems with title, LeetCode URL, difficulty (Easy / Medium / Hard), and topic tag
  • Click any problem card to open its LeetCode link directly in a new tab
  • Click the checkbox to mark a problem as solved β€” triggers a particle burst animation
  • Filter problems by difficulty or solved/unsolved status
  • Search problems by title or topic tag in real time
  • Delete any problem with confirmation

🧠 Aptitude Tracker

  • Three dedicated categories: Logical Reasoning, Quantitative Aptitude, General Intelligence
  • Same difficulty system (Easy / Medium / Hard) as DSA
  • Per-category progress bars with live counters
  • Search across all categories simultaneously

☁ GitHub Gist Cloud Sync

  • All data saves to a private GitHub Gist in your account
  • Auto-syncs after every action (debounced 1.8s to batch updates)
  • Manual sync button in the settings panel
  • Conflict-free merge: remote wins for solved status, local wins for new additions
  • Offline-first: works from local cache when no internet, syncs when reconnected

πŸ“Š Analytics Dashboard

  • Animated donut chart β€” Easy / Medium / Hard breakdown of solved problems
  • Aptitude breakdown β€” per-category progress bars
  • Overall completion rate with motivational tier labels
  • 28-day activity heatmap β€” visualises your daily grind history

🎯 Improvement Radar

  • Personalised insights generated from your actual data
  • Identifies weak areas: unattempted problem types, low completion rates
  • Flags if you're ignoring aptitude entirely
  • Streak warnings and encouragement
  • Colour-coded severity: 🟒 Good / 🟑 Warning / πŸ”΄ Danger

πŸ”₯ Streak & Rank System

  • Tracks your daily solving streak β€” increments when you solve at least one problem per day
  • 7 rank tiers based on total problems solved: NEWBIE β†’ BEGINNER β†’ INTERMEDIATE β†’ ADVANCED β†’ EXPERT β†’ MASTER β†’ LEGENDARY
  • Rank displayed prominently in the sidebar with dynamic colour

🎬 Cinematic Intro Animation

Every page load plays a 7-second animated story:

  1. Logo reveal with glitch effect and star field
  2. Grinder at desk β€” SVG illustration of a programmer coding
  3. Brain on fire β€” animated sparks and lightning bolts around the figure
  4. Victory stand β€” arms raised with energy rays
  5. Gold medal drop β€” #1 medal falls with animated confetti
  6. Bubble wave transition β€” 4 expanding colour circles sweep into the app

πŸ“± Fully Responsive

  • Works on all screen sizes: mobile, tablet, desktop
  • Sidebar stacks above content on small screens
  • Navigation tabs scroll horizontally on mobile
  • Problem cards, analytics, and modals all adapt cleanly

πŸ–Ό Screenshots

Intro Animation Setup Screen DSA Tracker
Cinematic 7s story Two-panel GitHub connect Problem cards with tags
Analytics Improvement Radar Mobile View
Donut + Heatmap Personalised insights Fully responsive

Screenshots can be added by capturing the live site at https://Deepayan-Thakur.github.io/grind-exe


πŸ›  Tech Stack

Layer Technology Why
UI Pure HTML5 + CSS3 + Vanilla JS Zero dependencies, fast load, no build step
Fonts Google Fonts (Space Mono, Syne, JetBrains Mono) Distinctive cyberpunk aesthetic
Storage GitHub Gist API (REST) Free, private, tied to your account
Hosting GitHub Pages Free, permanent, no backend
Auth GitHub Personal Access Token (PAT) Scoped to gist only β€” minimal permissions
Animations CSS keyframes + SVG SMIL Pure CSS/SVG, no animation library needed
Caching Browser localStorage Offline-first, instant load

Zero npm packages. Zero build tools. Zero backend servers. One HTML file.


πŸ” How Data Storage Works

Your Browser
     β”‚
     β”œβ”€β”€ localStorage (cache)  ←── instant load on every visit
     β”‚
     └── GitHub Gist API  ←── cloud sync after every change
              β”‚
              └── Private Gist in YOUR GitHub account
                   └── grind-exe-data.json  (your progress)

Sync Flow

  1. On page load β†’ Load from localStorage cache immediately (instant)
  2. In background β†’ Fetch latest data from your private Gist
  3. Merge strategy β†’ Remote solved-status wins (handles multi-device edits); local new items are preserved
  4. On any change β†’ Wait 1.8 seconds (debounce), then push to Gist
  5. On error β†’ Save to localStorage only, show warning toast, retry next time

What is a GitHub Gist?

A Gist is like a mini-repository in your GitHub account for storing small files. GRIND.EXE creates one private Gist named grind-exe-data.json in your account. You can view it at https://gist.github.com/YOUR_USERNAME. Only you can see it.


πŸš€ Getting Started

Prerequisites

Clone or Fork

Option A β€” Fork (recommended)

  1. Go to https://github.com/Deepayan-Thakur/grind-exe
  2. Click Fork (top right)
  3. Your copy is now at https://github.com/YOUR_USERNAME/grind-exe
  4. Enable GitHub Pages in your fork's Settings β†’ Pages

Option B β€” Clone fresh

git clone https://github.com/Deepayan-Thakur/grind-exe.git
cd grind-exe

Option C β€” Start from scratch (what we did)

# Create folder, add index.html manually, then:
git init
git add .
git commit -m "Initial commit: GRIND.EXE tracker"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/grind-exe.git
git push -u origin main --force

πŸ”‘ GitHub Token Setup

This is the one-time setup you do after opening the live site for the first time.

Step 1 β€” Go to GitHub Token Settings

Open: https://github.com/settings/tokens/new

Step 2 β€” Fill in the form

Field Value
Note grind-exe
Expiration No expiration
Scopes βœ… gist only β€” nothing else

Step 3 β€” Generate and copy

Click Generate token β†’ Copy the token starting with ghp_

⚠️ Save this token somewhere safe. GitHub shows it only once. If you lose it, generate a new one at the same URL.

Step 4 β€” Connect in the app

Open your live site β†’ paste the ghp_... token β†’ click Connect & Start Grinding β†’

The app will:

  • Verify your token with the GitHub API
  • Search for an existing grind-exe-data.json Gist in your account
  • Load your previous data if it exists
  • Create a new private Gist if it's your first time

πŸ“¦ Deploying to GitHub Pages

Step 1 β€” Create repository on GitHub

  • Go to github.com/new
  • Name: grind-exe
  • Visibility: Public (required for free GitHub Pages)
  • Do not initialise with README

Step 2 β€” Push code from VS Code terminal

cd path/to/your/grind-exe/folder

git init
git add .
git commit -m "Initial commit: GRIND.EXE tracker"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/grind-exe.git
git push -u origin main --force

Step 3 β€” Enable GitHub Pages

  1. Go to your repo on GitHub
  2. Click Settings tab
  3. In left sidebar β†’ Pages
  4. Under Branch β†’ select main
  5. Folder β†’ / (root)
  6. Click Save

Step 4 β€” Wait 1–2 minutes

Your site goes live at:

https://YOUR_USERNAME.github.io/grind-exe

GitHub will show a green banner in the Pages settings when it's ready.


πŸ“– Usage Guide

Adding a DSA Problem

  1. Go to the βš™ DSA Problems tab
  2. Click + Add Problem
  3. Fill in:
    • Title β€” e.g. Two Sum
    • LeetCode URL β€” e.g. https://leetcode.com/problems/two-sum/
    • Difficulty β€” Easy / Medium / Hard
    • Topic β€” e.g. Arrays, DP, Binary Tree
  4. Click Add β†’
  5. Problem appears instantly, auto-saved to GitHub

Marking a Problem as Solved

  • Click the checkbox on the left of any problem card
  • A particle burst animation fires from your click position
  • The problem is marked with a green βœ“ and strikethrough
  • Your streak counter increments if it's your first solve today
  • Data saves to GitHub automatically

Opening a LeetCode Problem

  • Click anywhere on the problem card body (not the checkbox)
  • The LeetCode URL opens in a new tab
  • Or click the πŸ”— link button on the right of the card

Adding Aptitude Questions

  1. Go to the 🧠 Aptitude tab
  2. Click + Add Question
  3. Select category: Logical Reasoning, Quantitative Aptitude, or General Intelligence
  4. Set difficulty and title
  5. Click Add β†’

Viewing Analytics

  • Go to the πŸ“Š Analytics tab
  • View donut chart, aptitude breakdown, completion rate, 28-day heatmap
  • The heatmap updates automatically as you solve problems each day

Reading Improvement Insights

  • Go to the 🎯 Improve tab
  • Insights are generated live from your current data
  • Colour-coded: 🟒 strong area / 🟑 needs work / πŸ”΄ urgent gap
  • Updates every time you switch to this tab

Settings Panel

  • Click the βš™ button in the top-right header
  • View connected GitHub username, Gist ID, last sync time
  • ↻ Sync Now β€” force a manual push + pull
  • ⬇ Export JSON Backup β€” download your full data as a .json file
  • Disconnect Account β€” removes token from browser (data stays safe in Gist)

πŸ† Rank System

Rank Problems Solved Colour
NEWBIE 0 – 4 Grey
BEGINNER 5 – 14 πŸ”΄ Red
INTERMEDIATE 15 – 29 🟠 Orange
ADVANCED 30 – 59 🟒 Green
EXPERT 60 – 99 πŸ”΅ Cyan
MASTER 100 – 199 🟣 Purple
LEGENDARY 200+ πŸ₯‡ Gold

Total count includes both DSA and Aptitude problems solved.


πŸ“ Project Structure

grind-exe/
β”‚
β”œβ”€β”€ index.html          ← The entire application (HTML + CSS + JS)
β”‚
└── README.md           ← This file

The entire app lives in a single index.html file. No node_modules, no package.json, no build process, no backend.

Why single-file?

  • βœ… Zero build step β€” edit and push, done
  • βœ… Deploys instantly to any static host
  • βœ… No dependency vulnerabilities
  • βœ… Anyone can read the entire codebase in one scroll
  • βœ… Works by just opening the file locally in a browser

Internal Architecture

index.html
β”‚
β”œβ”€β”€ <style>
β”‚   β”œβ”€β”€ CSS Variables (design tokens)
β”‚   β”œβ”€β”€ Cinematic Intro Animation styles
β”‚   β”œβ”€β”€ Setup Screen styles
β”‚   β”œβ”€β”€ App layout (header, nav, sidebar, content)
β”‚   β”œβ”€β”€ Component styles (cards, modal, analytics, improve)
β”‚   └── Responsive breakpoints (720px, 900px, 600px)
β”‚
β”œβ”€β”€ <body>
β”‚   β”œβ”€β”€ #introScreen     ← 7s cinematic story animation
β”‚   β”œβ”€β”€ #setupScreen     ← GitHub token connect UI
β”‚   β”œβ”€β”€ .header          ← Sticky top bar
β”‚   β”œβ”€β”€ .nav-tabs        ← DSA / Aptitude / Analytics / Improve
β”‚   β”œβ”€β”€ .sidebar         ← Stats, progress bars, filters
β”‚   β”œβ”€β”€ .content
β”‚   β”‚   β”œβ”€β”€ #page-dsa
β”‚   β”‚   β”œβ”€β”€ #page-aptitude
β”‚   β”‚   β”œβ”€β”€ #page-analytics
β”‚   β”‚   └── #page-improve
β”‚   β”œβ”€β”€ .settings-panel  ← Slide-in settings drawer
β”‚   └── #modal           ← Add problem/question modal
β”‚
└── <script>
    β”œβ”€β”€ Constants & State
    β”œβ”€β”€ Intro Animation (story phases + bubble wave)
    β”œβ”€β”€ Boot function (localStorage β†’ Gist β†’ show app)
    β”œβ”€β”€ GitHub Gist API (load, save, merge, debounce)
    β”œβ”€β”€ Render functions (DSA, Aptitude, both)
    β”œβ”€β”€ Toggle solved + particle animation
    β”œβ”€β”€ Stats updater + Rank system
    β”œβ”€β”€ Analytics (donut, heatmap, breakdown)
    β”œβ”€β”€ Improve insights generator
    β”œβ”€β”€ Settings panel + export
    └── Toast notification system

πŸ”„ How to Update the Code

Whenever you make changes to index.html in VS Code:

# Stage all changes
git add .

# Commit with a description
git commit -m "feat: describe what you changed"

# Push to GitHub
git push

GitHub Pages auto-rebuilds within 1–2 minutes. Refresh your live site and changes appear.

Common update examples

# Added new quotes
git commit -m "chore: add motivational quotes"

# Fixed mobile layout
git commit -m "fix: mobile nav tab overflow"

# Added new feature
git commit -m "feat: add notes field to problem cards"

# Visual update
git commit -m "style: improve analytics card spacing"

πŸ’Ύ Data Backup & Recovery

Automatic Backup

Your data automatically lives in a private Gist at:

https://gist.github.com/YOUR_USERNAME

Look for the file named grind-exe-data.json.

Manual Backup

  1. Open the app β†’ click βš™ (settings)
  2. Click ⬇ Export JSON Backup
  3. A .json file downloads to your device

Restore from Backup

If you ever lose access or switch accounts:

  1. Open your backup .json file
  2. Go to https://gist.github.com β†’ create a new private Gist
  3. Name the file grind-exe-data.json
  4. Paste your backup JSON content β†’ Save
  5. Open GRIND.EXE with a new token β†’ it will find and load your Gist

What happens if I clear my browser?

Your data is safe. It lives in GitHub's servers, not your browser. Just reconnect with your token and everything loads back.

What if I use multiple devices?

Open GRIND.EXE on any device β†’ paste your GitHub token once β†’ your full history loads. Changes sync across devices via the Gist.


πŸ”’ Privacy & Security

Concern Answer
Where is my token stored? Only in your browser's localStorage β€” never on any server
Can anyone see my data? No β€” your Gist is private. Only you can access it
What does the token have access to? Only the gist scope β€” cannot read code, repos, or anything else
Is data sent anywhere else? No β€” only to api.github.com to read/write your own Gist
What if I share my screen? Token is in a password input field β€” masked by default

To revoke access at any time: Go to https://github.com/settings/tokens β†’ delete the grind-exe token. The app will stop syncing.


πŸ—Ί Roadmap

These features are planned for future versions:

  • Notes field β€” add personal notes to each problem
  • Company tags β€” tag problems by company (Google, Amazon, etc.)
  • Timed practice mode β€” solve problems against a countdown
  • Import from LeetCode β€” paste a LeetCode problem URL and auto-fill details
  • Weekly goal setting β€” set a target of N problems per week
  • PDF progress report β€” export a formatted PDF of your stats
  • Dark / Light theme toggle
  • Custom categories β€” create your own aptitude categories
  • Spaced repetition reminders β€” remind you to revisit unsolved problems

πŸ‘¨β€πŸ’» Author

Deepayan Thakur

CS Engineering Student | ML Engineer | Builder

  • πŸ”— GitHub: @Deepayan-Thakur
  • 🧠 Focus: AI/ML, DSA, Trade Analytics, Human-Computer Interaction
  • πŸ›  Projects: LIS Hybrid BCI System, Medicinal Plant Detection, HSN Trade Analytics Suite, VibezLang

πŸ“„ License

This project is open-source. Feel free to fork, modify, and use it for your own grinding journey.

If you find it useful, give it a ⭐ β€” it means a lot!


Built with πŸ’» and zero sleep.

GRIND.EXE β€” because dream companies don't hire people who give up.

About

A DSA & Aptitude tracker synced to GitHub Gist, works on any device. Track LeetCode problems, aptitude questions, streaks, analytics & improvement insights.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages