🚀 This repository is a template version of DSAMate — your all-in-one platform for practicing DSA (Data Structures & Algorithms) questions.
This version is open for contributions as a part of GirlScript Summer of Code (GSSoC) 2025.
🚧 Disclaimer: This repository is a template clone created for open-source learning under GSSoC '25.
It uses only placeholder content and UI logic — no real DSA questions are included.
The real DSAMate site with full question lists is live at dsamate.vercel.app.
DSAMate Template helps contributors explore the frontend logic, filters, UI components, and page structure of a full-featured DSA practice site.
- Practice Sheet UI with advanced filter options (difficulty, status, platform, etc.)
- Progress Tracking with comprehensive analytics and visualizations
- Interactive progress charts and difficulty breakdowns
- Topic-wise progress tracking with completion percentages
- Activity calendar showing daily solving patterns
- Streak tracking to maintain consistency
- Recent activity feed and performance insights
- Responsive Design optimized for all devices using Tailwind CSS
- Built using Next.js + TypeScript for modern web development
- Smooth animations via Framer Motion
- Local Storage persistence for tracking progress across sessions
- Starter structure for adding your own question list
The template now includes a comprehensive progress tracking system to help users monitor their DSA learning journey:
-
Progress Dashboard (
/progress
)- Overview cards showing total solved problems, current streak, completion rate, and problems marked for review
- Interactive charts displaying difficulty-wise progress breakdown
- Performance statistics including daily averages and weekly goals
-
Topic Progress Visualization
- Progress bars for each topic showing completion percentage
- Color-coded indicators for different completion levels
- Quick identification of completed topics
-
Activity Calendar
- GitHub-style activity heatmap showing daily solving patterns
- Streak calculation and visualization
- Historical activity tracking over the last 12 weeks
-
Recent Activity Feed
- Chronological list of recently solved problems
- Difficulty badges and review status indicators
- Notes and timestamps for each solved problem
-
Progress Summary Widget
- Integrated into the practice sheet page
- Quick overview with circular progress indicator
- Direct link to detailed progress analytics
- Data Persistence: Progress data is stored in localStorage for persistence across sessions
- Real-time Updates: Progress updates automatically when problems are marked as solved
- Responsive Design: All progress components are fully responsive and mobile-friendly
- Smooth Animations: Framer Motion animations for engaging user experience
Please read the CONTRIBUTING GUIDELINES if you're a contributor.
- Next.js
- TypeScript
- Tailwind CSS
- Framer Motion
- React Icons
📦 saumyayadav25
├─ 📂 .github # GitHub workflows, issue/PR templates, CI/CD configs
├─ 📂 app # Next.js App Router pages & features
│ ├─ 📂 (auth) # Authentication-related routes
│ ├─ 📂 api # API endpoints (server actions, handlers)
│ ├─ 📂 code-analyzer # Code analysis feature pages
│ ├─ 📂 companies # Company-wise interview prep & progress
│ ├─ 📂 contributors # Contributor-related pages
│ ├─ 📂 cp-tracker # Competitive Programming tracker pages
│ ├─ 📂 email-preference # Email subscription & preference settings
│ ├─ 📂 flashcards # Flashcards for study/revision
│ ├─ 📂 interview-experiences # User shared interview experiences
│ ├─ 📂 notes # Notes-related pages
│ ├─ 📂 privacy-terms # Privacy policy & terms pages
│ ├─ 📂 profile # User profile system
│ │ ├─ 📂 [userId] # Dynamic user profile pages
│ │ └─ 📂 settings # Profile settings
│ │ └─ 📄 avatar # Avatar upload/change page
│ ├─ 📂 progress # User progress tracking pages
│ ├─ 📂 question # Question detail pages
│ │ └─ 📂 [slug] # Dynamic route for each question
│ ├─ 📂 sheet # Curated DSA sheets
│ ├─ 📂 theory-cheatsheets # Theory-based cheatsheets
│ ├─ 📂 timequiz # Timed quiz feature
│ ├─ 📄 globals.css # Global CSS styles
│ ├─ 📄 layout.tsx # Root app layout
│ └─ 📄 page.tsx # Homepage
│
├─ 📂 components # Reusable UI components
│ ├─ 📂 charts # Chart visualizations (LeetCode, Codeforces stats)
│ ├─ 📂 magicui # Special UI widgets (e.g., TestimonialPrompt)
│ └─ 📂 ui # Common UI components (Navbar, Footer, Flashcard, etc.)
│
├─ 📂 constant # Project constants
│ └─ 📄 dbName.ts # Stores DB name (`DSAMate`)
│
├─ 📂 contexts # React Context providers (global state management)
│
├─ 📂 data # Static datasets
│ ├─ 📄 companyQuestions.ts # Company-wise interview questions
│ ├─ 📄 flashcards.ts # Flashcard data
│ ├─ 📄 questions.json # DSA questions dataset (used in quizzes)
│ └─ 📄 questions.ts # TS-based question data
│
├─ 📂 db # Database connection setup
│ └─ 📄 config.ts # MongoDB connection logic with Mongoose
│
├─ 📂 design # Design assets
│ └─ 📂 logo-submissions # Logo design submissions
│
├─ 📂 lib # Helpers, services & API integrations
│ ├─ 📂 cp # CP tracker related helpers
│ ├─ 📄 awardBadges.ts # Logic for awarding badges
│ ├─ 📄 mail.ts # Email sending (OAuth support)
│ ├─ 📄 openaiAnalyze.ts # Integration with OpenAI API
│ ├─ 📄 sendOTP.ts # OTP sending logic (auth)
│ ├─ 📄 types.ts # TypeScript type definitions
│ ├─ 📄 useLocalStorage.ts # Custom React hook for localStorage
│ └─ 📄 utils.ts # General helper functions
│
├─ 📂 middleware # Request middleware utilities
│ └─ 📄 rateLimiter.ts # Rate limiting using IP (protects API routes)
│
├─ 📂 models # Mongoose models (MongoDB collections)
│ ├─ 📄 Badge.model.ts # User badges
│ ├─ 📄 CpStats.ts # CP stats tracking
│ ├─ 📄 InterviewExperience.model.ts # Interview experiences
│ ├─ 📄 JobRun.model.ts # Scheduled jobs (cron/mail runs)
│ ├─ 📄 Progress.model.ts # User progress tracking
│ ├─ 📄 Testimonials.ts # User testimonials
│ ├─ 📄 User.model.ts # User schema (profile, settings, etc.)
│ └─ 📄 quizSchema.ts # Quiz schema (questions, attempts, scores)
│
├─ 📂 pages # Legacy Next.js `pages` dir (mostly API routes)
│ └─ 📂 api # API routes (old-style)
│
├─ 📂 public # Static assets
│ ├─ 📂 assets # Other assets
│ ├─ 📂 icons # Icons
│ ├─ 📂 images # Images (avatars, hero, quiz, etc.)
│ ├─ 📂 sounds # Sound files
│ ├─ 📄 manifest.json # PWA manifest
│ ├─ 📄 sw.js # Service Worker
│ └─ 📄 workbox-*.js # Workbox caching script
│
├─ 📂 scripts # Migration & maintenance scripts
│ └─ 📄 migrateBadges.ts # Converts old badge data into new schema
│
├─ 📂 utils # External API fetchers & helpers
│ ├─ 📄 codeforces.ts # Codeforces data fetcher
│ ├─ 📄 getPOTD.ts # Fetch Problem of the Day
│ ├─ 📄 githubContributions.ts # GitHub contributions fetcher
│ └─ 📄 leetcode.ts # LeetCode data fetcher
│
├─ 📄 .gitignore # Git ignore rules
├─ 📄 CODE_OF_CONDUCT.md # Contributor code of conduct
├─ 📄 CONTRIBUTING.md # Guidelines for contributors
├─ 📄 LEARN.md # Learning guide/docs
├─ 📄 LICENSE # Project license
├─ 📄 README.md # Project documentation
├─ 📄 components.json # shadcn/ui config
├─ 📄 contributors-data.md # Contributor details
├─ 📄 get-ip.js # Utility to fetch client IP
├─ 📄 issue-tracker.txt # Internal issue tracker notes
├─ 📄 middleware.ts # Root Next.js middleware
├─ 📄 next.config.ts # Next.js configuration
├─ 📄 package-lock.json # Dependency lockfile
├─ 📄 package-lock 2.json # Duplicate lockfile (cleanup candidate)
├─ 📄 package.json # Dependencies & scripts
├─ 📄 postcss.config.mjs # PostCSS (Tailwind) config
└─ 📄 tsconfig.json # TypeScript config
Looking for the actual live version with the complete list of real DSA questions and features?
⚠️ NOTE: The link below is for the official, fully functional DSAMate site — not this template project.
👉 Visit DSAMate Original
(Includes 450+ topic-wise questions with solutions, filters, and daily practice features.)
Don’t worry if you’re just getting started - we’ve got you covered! Check out this blog to kickstart your open-source journey with GSSoC (no experience needed):
👉 Kickstart Your Open Source Journey with GSSoC – No Experience Needed
We’re here to guide you — don’t hesitate to ask in the Discord group or comment directly on the GitHub issue!
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
Thanks to all the amazing people who have contributed! 💖
Contributions of any kind are welcome!
This project is licensed under the MIT License.
See the LICENSE file for details.