/cpp-dsa-sheet-testing

Open-source template of DSAMate UI – built with Next.js, Tailwind CSS & TypeScript. For GSSoC '25 contributions.

Primary LanguageTypeScriptMIT LicenseMIT

DSAMate Template – GSSoC '25




🚀 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.

🔍 About the Project

DSAMate Template helps contributors explore the frontend logic, filters, UI components, and page structure of a full-featured DSA practice site.

🌟 Features

  • 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

📊 Progress Tracking Features

The template now includes a comprehensive progress tracking system to help users monitor their DSA learning journey:

🎯 Key Components

  1. 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
  2. Topic Progress Visualization

    • Progress bars for each topic showing completion percentage
    • Color-coded indicators for different completion levels
    • Quick identification of completed topics
  3. Activity Calendar

    • GitHub-style activity heatmap showing daily solving patterns
    • Streak calculation and visualization
    • Historical activity tracking over the last 12 weeks
  4. Recent Activity Feed

    • Chronological list of recently solved problems
    • Difficulty badges and review status indicators
    • Notes and timestamps for each solved problem
  5. Progress Summary Widget

    • Integrated into the practice sheet page
    • Quick overview with circular progress indicator
    • Direct link to detailed progress analytics

🔧 Technical Implementation

  • 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

🚀 Open Source Contributions

Please read the CONTRIBUTING GUIDELINES if you're a contributor.


🛠️ Tech Stack

  • Next.js
  • TypeScript
  • Tailwind CSS
  • Framer Motion
  • React Icons

📁 Project Folder Structure

📦 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

🌐 Original DSAMate Website

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.)


📚 New to Open Source?

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!


Learn More

To learn more about Next.js, take a look at the following resources:


👥 Contributors

Thanks to all the amazing people who have contributed! 💖

✨ Our Valuable Contributors

Line

Contributions of any kind are welcome!

License

This project is licensed under the MIT License.
See the LICENSE file for details.