[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80773":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":16,"starSnapshotCount":16,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},80773,"450-dsa","mohitkumhar\u002F450-dsa","mohitkumhar","Repository with 450+ DSA problems covering all major patterns like arrays, DP, graphs, trees, and more. Includes clean, optimized solutions focused on pattern-based learning for coding interviews and problem-solving.","https:\u002F\u002F450-ds.vercel.app",null,"Python",54,69,1,154,0,4,10,14,12,5.54,false,"main",true,[],"2026-06-12 02:04:06","# 450 DSA Tracker\n\n🌐 **Live Demo:** [https:\u002F\u002F450-ds.vercel.app](https:\u002F\u002F450-ds.vercel.app)\n\nTrack your progress through Love Babbar's 450 DSA problems — with platform sync, leaderboard, and more.\n\n[![Open For PR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOpen%20For-PR-orange?style=for-the-badge&logo=github)](https:\u002F\u002Fgithub.com\u002Fmohitkumhar\u002F450-dsa)\n![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10+-blue?style=flat&logo=python)\n![Flask](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFlask-2.3-black?style=flat&logo=flask)\n![MongoDB](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FMongoDB-Atlas-green?style=flat&logo=mongodb)\n\n---\n\n## What is this?\n\nA full-stack Flask web app to help you track, manage, and share your DSA journey. Originally a React + LocalBase project, it's been completely rewritten in Python with MongoDB as the database.\n\n---\n\n## Features\n\n- **Topic-wise tracking** — browse all 24 DSA topics and mark questions done\n- **Bookmarks** — save questions for quick review\n- **Notes** — write and save personal notes per question\n- **Search** — full-text search with topic, difficulty, platform, and status filters\n- **OAuth login** — sign in with GitHub or Google, or register with email\u002Fpassword\n- **Platform sync** — connect LeetCode, GFG, GitHub, HackerRank, Coding Ninjas and pull your stats\n- **Profile dashboard** — activity heatmap, rating chart, difficulty breakdown, badges\n- **Leaderboard** — ranked by C-Score (composite score across all platforms)\n- **Public profiles** — shareable profile cards\n- **Admin panel** — manage users and content\n- **Export notes** — download your notes as Markdown\n- **Docker support** — run the whole app with one command\n\n---\n\n## Quick Start\n\n### Option 1 — Local setup\n\n**1. Clone and set up environment**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmohitkumhar\u002F450-dsa.git\ncd 450-dsa\npython -m venv venv\n\n# Windows\nvenv\\Scripts\\activate\n\n# macOS\u002FLinux\nsource venv\u002Fbin\u002Factivate\n\npip install -r requirements.txt\n\n# For development, linting, and tests\npip install -r requirements-dev.txt\n```\n\n**2. Configure environment variables**\n```bash\ncp .env.example .env   # macOS\u002FLinux\ncopy .env.example .env  # Windows\n```\n\nEdit `.env` and fill in your values:\n```env\n# REQUIRED - generate your own first:\n# python -c \"import secrets; print(secrets.token_hex(32))\"\nSECRET_KEY=replace-this-with-a-real-secret\n\n# MongoDB — use Atlas (free) or local\nMONGO_URI=mongodb+srv:\u002F\u002F\u003Cuser>:\u003Cpassword>@cluster.mongodb.net\u002Fdsa_tracker\n\n# GitHub OAuth (optional)\nGITHUB_CLIENT_ID=your-github-client-id\nGITHUB_CLIENT_SECRET=your-github-client-secret\n\n# Google OAuth (optional)\nGOOGLE_CLIENT_ID=your-google-client-id\nGOOGLE_CLIENT_SECRET=your-google-client-secret\n\n# Cloudinary — for profile photo uploads (optional)\nCLOUDINARY_CLOUD_NAME=your-cloud-name\nCLOUDINARY_API_KEY=your-api-key\nCLOUDINARY_API_SECRET=your-api-secret\n```\n\nThe app warns and generates a temporary `SECRET_KEY` if the variable is missing or still set to an insecure placeholder. Set a real generated secret in deployed environments so user sessions persist across restarts. If a secret was ever committed or shared, rotate it before running the app again.\n\n**3. Run**\n```bash\npython run.py\n```\n\nOpen `http:\u002F\u002Flocalhost:5000` in your browser. The app seeds all 450+ questions from `data.json` on first run.\n\n---\n\n### Option 2 — Docker\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmohitkumhar\u002F450-dsa.git\ncd 450-dsa\ndocker compose up\n```\n\nOpen `http:\u002F\u002Flocalhost:5000`.\n\n---\n\n## Project Structure\n\n```\n450-dsa\u002F\n├── app\u002F\n│   ├── __init__.py          # App factory\n│   ├── extensions.py        # Shared Flask extensions (db, bcrypt, limiter...)\n│   ├── utils.py             # Helpers, search logic, leaderboard scoring\n│   ├── auth\u002F                # Login, register, OAuth (GitHub, Google)\n│   ├── tracker\u002F             # Topics, questions, bookmarks, notes\n│   ├── profile\u002F             # Profile page, platform sync, photo upload\n│   ├── search\u002F              # Search API with filters\n│   ├── leaderboard\u002F         # Leaderboard routes and API\n│   ├── admin\u002F               # Admin dashboard\n│   ├── public\u002F              # Public profile pages\n│   ├── faq\u002F                 # FAQ page\n│   └── platforms\u002F\n│       └── fetchers.py      # LeetCode, GFG, GitHub, HackerRank, Coding Ninjas fetchers\n├── templates\u002F               # Jinja2 HTML templates\n├── static\u002F                  # CSS and JS assets\n├── tests\u002F                   # Pytest test suite\n├── data.json                # All 450+ DSA questions\n├── run.py                   # App entry point\n├── requirements.txt         # Python dependencies\n├── requirements-dev.txt     # Dev\u002Ftest dependencies\n├── .env.example             # Environment variable template\n├── Dockerfile\n└── docker-compose.yml\n```\n\n---\n\n## Database\n\nThe app uses **MongoDB** (via Flask-PyMongo). There is no SQLite or SQLAlchemy — those were part of an earlier version.\n\n**Collections:**\n- `user` — user accounts, progress, platform usernames, external stats\n- `topic` — DSA topic names and ordering\n- `question` — all 450+ problems with URLs\n\nMongoDB is accessed through `app.extensions.db` (a `LocalProxy` to `mongo.db`). All indexes are created on startup in `app\u002F__init__.py`.\n\nYou can use [MongoDB Atlas](https:\u002F\u002Fcloud.mongodb.com) (free M0 tier) or a local MongoDB instance.\n\n---\n\n## API Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| GET | `\u002F` | Dashboard — all topics with progress |\n| GET | `\u002Ftopic\u002F\u003Cid>` | Questions for a topic |\n| GET | `\u002Fsearch` | Search page |\n| GET | `\u002Fbookmarks` | Saved bookmarks |\n| GET | `\u002Fprofile` | User profile dashboard |\n| GET | `\u002Fleaderboard` | Global leaderboard |\n| GET | `\u002Fu\u002F\u003Cuser_id>` | Public profile |\n| GET | `\u002Fapi\u002Fsearch_questions` | Search API (supports `q`, `topic_id`, `difficulty`, `platform`, `status`, `limit`) |\n| GET | `\u002Fapi\u002Fleaderboard` | Leaderboard API (supports `mode`: cscore, questions, rating, college) |\n| POST | `\u002Fupdate_question\u002F\u003Cid>` | Update done\u002Fbookmark\u002Fnotes for a question |\n| POST | `\u002Fsync_platforms` | Sync external platform stats |\n| POST | `\u002Fedit_profile` | Update profile fields |\n| POST | `\u002Fupload_photo` | Upload profile photo |\n| POST | `\u002Fdelete_account` | Permanently delete account (GDPR) |\n| GET | `\u002Fsearch_universities` | University autocomplete |\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|-----------|\n| Backend | Flask 2.3 |\n| Database | MongoDB (Flask-PyMongo) |\n| Auth | Flask-Login, Flask-Bcrypt, Authlib (OAuth) |\n| Rate limiting | Flask-Limiter |\n| Frontend | Jinja2, Bootstrap Icons, Chart.js |\n| Photo storage | Cloudinary |\n| Testing | Pytest |\n| Deployment | Docker, Vercel |\n\n---\n\n## Running Tests\n\n```bash\npip install -r requirements-dev.txt\npytest\n```\n\n---\n\n## Environment Variables Reference\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `SECRET_KEY` | Recommended | Flask session secret. Must be a real generated secret, not a placeholder. Missing or insecure values fall back to a temporary key and reset sessions on restart. |\n| `MONGO_URI` | Yes | MongoDB connection string |\n| `GITHUB_CLIENT_ID` | No | GitHub OAuth app client ID |\n| `GITHUB_CLIENT_SECRET` | No | GitHub OAuth app client secret |\n| `GOOGLE_CLIENT_ID` | No | Google OAuth client ID |\n| `GOOGLE_CLIENT_SECRET` | No | Google OAuth client secret |\n| `CLOUDINARY_CLOUD_NAME` | No | Cloudinary cloud name for photo uploads |\n| `CLOUDINARY_API_KEY` | No | Cloudinary API key |\n| `CLOUDINARY_API_SECRET` | No | Cloudinary API secret |\n\n---\n\n## Credits\n\n- DSA problem set curated by **[Love Babbar](https:\u002F\u002Fwww.youtube.com\u002F@LoveBabbar)** — [450 DSA Cracker Sheet](https:\u002F\u002F450dsa.com)\n- Flask conversion and ongoing development by the open-source community\n\n---\n\n## Contributing\n\nPRs are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) before opening one.\n","该项目是一个包含450多个数据结构与算法问题的全栈Flask Web应用，覆盖了数组、动态规划、图论、树等多种主要模式，旨在帮助用户通过模式化学习提升编程面试和解决问题的能力。其核心功能包括基于主题的问题跟踪、书签保存、个人笔记记录、全文搜索、OAuth登录（支持GitHub和Google）、平台同步（如LeetCode、GFG等）以及个人资料仪表板等。技术上采用Python 3.10+开发，并利用MongoDB作为数据库存储解决方案。该工具非常适合准备技术面试或希望系统性提高数据结构与算法技能的开发者使用。",2,"2026-06-11 04:01:57","CREATED_QUERY"]