Skip to content

Latest commit

 

History

History
311 lines (234 loc) · 13 KB

File metadata and controls

311 lines (234 loc) · 13 KB

LeetCode Pattern Tracker

LeetCode Pattern Tracker

Stop memorizing solutions. Start mastering patterns.
A modern, pattern-based DSA learning platform for serious coding interview preparation.

🌐 Live Demo  ·  🐛 Report Bug  ·  ✨ Request Feature

Stars Forks License Vercel


✨ Features

Feature Description
📊 Pattern-Based Learning Problems organized by DSA patterns — Arrays & Hashing, Strings, Linked Lists, Dynamic Programming, Graphs, Trees
Progress Tracking Mark questions as Solved, Revision, or Unsolved with persistent state
🔗 LeetCode Sync Connect your LeetCode profile and auto-sync solved problems
📈 Dashboard Analytics Visual progress stats — overall completion %, difficulty breakdown (Easy / Medium / Hard)
🔐 Firebase Authentication Google sign-in to save and sync progress across devices
🌗 Dark / Light Theme System-aware theme toggle with smooth transitions
📝 Markdown Solutions Rich solutions with syntax-highlighted code blocks
🎯 Smart Filtering Filter by difficulty, status, and pattern within each topic
🏷️ Interview Tips Memory tricks and interview-focused notes for each problem
📱 PWA Ready Installable as a Progressive Web App with manifest and icons
🔍 SEO Optimized Dynamic meta tags, Open Graph, Twitter cards, sitemap, and robots.txt
📊 Analytics Firebase Analytics + Vercel Analytics for usage insights

🛠️ Tech Stack

Layer Technology
Framework Next.js 16 (App Router)
Language TypeScript
Styling Tailwind CSS v4
UI Components Radix UI · Lucide Icons
Animations Framer Motion
State Management Zustand
Auth & Database Firebase (Auth + Firestore)
Markdown react-markdown · react-syntax-highlighter
Analytics Vercel Analytics · Firebase Analytics
Deployment Vercel

🚀 Getting Started

Prerequisites

  • Node.js >= 18
  • npm or yarn
  • A Firebase project with Auth & Firestore enabled

Installation

# Clone the repository
git clone https://github.com/AnkitRajCode/leetcode-pattern-tracker.git
cd leetcode-pattern-tracker

# Install dependencies
npm install

# Create environment variables
cp .env.example .env.local

Environment Variables

Create a .env.local file in the root directory:

NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id

Run Locally

npm run dev

Open http://localhost:3000 in your browser.

Build for Production

npm run build
npm start

📁 Project Structure

leetcode-pattern-tracker/
├── app/
│   ├── page.tsx              # Homepage — topic cards & hero section
│   ├── layout.tsx            # Root layout with providers & metadata
│   ├── dashboard/            # Dashboard with progress stats & LeetCode sync
│   ├── topics/[topic]/       # Dynamic topic pages with question tables
│   ├── api/                  # API routes
│   ├── robots.ts             # SEO robots configuration
│   └── sitemap.ts            # Dynamic sitemap generation
├── components/
│   ├── table/                # Interactive question table with filters
│   ├── topic/                # Topic page components
│   ├── ui/                   # Reusable UI primitives (Button, Dialog, etc.)
│   ├── LeetcodeSync.tsx      # LeetCode profile sync component
│   ├── FirebaseSync.tsx      # Firebase data sync on auth state
│   ├── FirebaseAnalytics.tsx # Analytics tracking
│   ├── MarkdownRenderer.tsx  # Syntax-highlighted markdown rendering
│   ├── ThemeToggle.tsx       # Dark / Light mode toggle
│   ├── UserNav.tsx           # User navigation & auth controls
│   └── Footer.tsx            # Global footer
├── context/
│   └── AuthContext.tsx       # Firebase auth context provider
├── data/
│   ├── arrays.json           # Arrays & Hashing problems
│   ├── strings.json          # String Manipulation problems
│   ├── linkedlist.json       # Linked Lists problems
│   ├── dp.json               # Dynamic Programming problems
│   ├── graph.json            # Graph problems
│   └── tree.json             # Tree problems
├── store/
│   └── questionStore.ts      # Zustand store for question state
├── lib/                      # Firebase config & utilities
├── public/                   # Static assets, icons, manifest
└── types/                    # TypeScript type definitions

📸 Screenshots

Home Page Topic Page
Pattern-based topic cards with stats Interactive table with filters & solutions
Dashboard Dark Mode
Progress analytics & LeetCode sync Full dark theme support

📚 Curated Resources

LeetCode Lists & Problem Sets

Comprehensive Lists

Grind 75

Blind 75

Neetcode 150


DSA Sheets & Roadmaps


Interview Preparation

Data Structures Visualization


System Design

📘 Courses & Roadmaps

🔧 LLD Resources

📦 HLD / System Design Repositories

🧠 Deep Dives


Backend Development

Spring & Spring Boot

Backend Fundamentals


GitHub Repositories

Area Repository
Java Java Code Examples — navinreddy20
Spring 6 Spring 6 Course — navinreddy20
Microservices Microservices Tutorials — navinreddy20
AI/ML LangChain and Ollama — laxmimerit
Angular Angular Interview Questions — sudheerj

Additional References


🤝 Contributing

Contributions are welcome! Feel free to open issues and submit pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📄 License

This project is open source and available under the MIT License.


👤 Author

Ankit Raj

🌐 Portfolio  ·  GitHub  ·  Twitter  ·  LinkedIn


⭐ Star this repo if it helped your interview prep!