🎉 Whether it's fixing a bug, adding a feature, or improving documentation — every contribution matters.
- 🛠️ How to Contribute
- 🔧 Local Development Setup
- ✨ Making Your Changes
- 📤 Submitting Your Changes
- 🔄 Keeping Your Fork Updated
- 🐛 Troubleshooting
- 🔖 GSSoC'25 Labels & Points
- 💡 Additional Tips
- 🎯 Project Structure
- 🌟 Features You Can Contribute To
Thank you for your interest in contributing to this project! Follow the steps below to make your contribution smoothly and effectively:
- Star this repository to show your support!
- Click on the Fork button at the top-right corner of the repository page. This will create a copy of the repository under your GitHub account.
- Go to the Issues tab and check if the task/feature/bug you want to work on already exists.
- If not, click on "New Issue" and clearly describe your suggestion or bug.
- Wait for a maintainer to assign you the issue before starting work. This helps avoid duplicate work and ensures coordination.
Clone the forked repository to your local machine:
git clone https://github.com/your-username/cpp-dsa-sheet-testing.git
cd cpp-dsa-sheet-testingReplace your-username with your GitHub username.
Always create a new branch before making changes:
git checkout -b feature/your-branch-nameUse a descriptive name like feature/sorting-improvement or fix/header-alignment.
Make sure you have the following installed on your system:
- Node.js (version 18 or higher) - Download from nodejs.org
- npm (comes with Node.js) or yarn
- Git - Download from git-scm.com
This project uses:
- Next.js 15.3.3 (with Turbopack for faster development)
- TypeScript for type safety
- React 19 for UI components
- Tailwind CSS for styling
- Framer Motion for animations
- MongoDB (via Mongoose) for database
- Authentication (Google OAuth, GitHub OAuth, JWT)
- Google Gemini AI for chatbot functionality
- Nodemailer for email services
npm installCreate a .env.local file in the root directory of the project:
# Required for Database Connection
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/?retryWrites=true&w=majority&appName=YourAppName
# Required for GitHub API integration (contributors page)
GITHUB_TOKEN=your_github_personal_access_token
# Required for AI Chatbot Feature
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_KEY=your_gemini_api_key_here
# Required for Authentication
JWT_SECRET=your_jwt_secret_here
# Optional: Google OAuth (for Google login)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:3000/api/auth/google/callback
# Optional: GitHub OAuth (for GitHub login)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_REDIRECT_URI=http://localhost:3000/api/auth/github/callback
# Optional: Email functionality
GOOGLE_APP_USER=your_gmail_address
GOOGLE_APP_PASSWORD=your_gmail_app_specific_password- Go to MongoDB Atlas
- Create a free account and cluster
- Get your connection string
- Replace
username,password, and cluster details inMONGO_URI
- Install MongoDB locally
- Use connection string:
mongodb://localhost:27017
Note: The database name "DSAMate" will be created automatically.
- Visit Google AI Studio
- Create an API key
- Add it to
GEMINI_API_KEYandGEMINI_KEY
- Go to GitHub Settings → Developer settings → Personal access tokens
- Generate a new token with
public_reposcope - Add it to
GITHUB_TOKEN
# Generate a random secret (you can use any long random string)
JWT_SECRET=your-super-secret-jwt-key-herenpm run dev🎉 Open http://localhost:3000 in your browser to see the application!
npm run dev # Start development server with Turbopack (faster)
npm run build # Build the application for production
npm run start # Start the production server
npm run lint # Run ESLint to check code quality- Work within the appropriate directories like
app/,components/, orlib/. - Follow the existing code structure and TypeScript conventions
- Ensure your code follows the project's style guide (ESLint will help)
- Test UI changes locally and ensure responsiveness across different screen sizes
- Update or add comments and documentation as needed
- Modify files under
app/api/for API endpoints - Work in
lib/,models/, ordb/for backend utilities - Follow backend conventions and maintain clean, modular code
- Test API endpoints using tools like Postman or browser dev tools
- Update any relevant API documentation or comments
- Use Tailwind CSS classes for styling
- Follow responsive design principles (
sm:,md:,lg:,xl:breakpoints) - Maintain consistency with existing design patterns
- Test on multiple screen sizes
Before submitting your PR:
- Run the project locally:
npm run dev - Test all functionality that your changes affect
- Check responsive design on different screen sizes
- Run linting:
npm run lint - Build the project:
npm run build(to catch TypeScript errors)
Check the status of your changes:
git statusAdd all changes:
git add .Commit your changes with a meaningful message:
git commit -m "Add feature: implemented binary search algorithm"Push your branch to your forked repository:
git push origin feature/your-branch-name- Open your forked repository on GitHub
- Click the "Compare & pull request" button
- Write a clear and concise title and description for your PR
- Include screenshots for UI changes (before vs after)
- Specify if your PR is for frontend or backend in the description
- Submit the PR
Whenever making changes, try sharing screenshots or visual proof of before vs after as it will be considered a positive way of handling and resolving issues.
- A project maintainer will review your pull request
- You may be asked to make changes — don't worry, that's part of the collaborative process
- Once approved, your code will be merged into the main branch
To avoid merge conflicts, keep your fork updated:
- Go to your forked repository on GitHub
- If it's behind the original repo, you'll see a "Sync fork" button
- Click it → then "Update branch"
✅ That's it! Your fork is now up to date 🎉
🔍 Note: If you don't see the button, your fork is already updated.
-
Port 3000 already in use:
npm run dev -- -p 3001
-
Module not found errors:
rm -rf node_modules package-lock.json npm install
-
Environment variables not working:
- Ensure
.env.localis in the root directory - Restart the development server after adding new variables
- Check that variable names match exactly (case-sensitive)
- Ensure
-
Database connection issues:
- Verify your MongoDB URI is correct
- Check if your IP is whitelisted in MongoDB Atlas
- Ensure the database user has proper permissions
-
Build errors:
npm run lint # Check for linting errors npm run build # Check for TypeScript errors
If you encounter issues:
- Check existing GitHub issues
- Create a new issue with detailed error descriptions
- Reach out to mentors in the Discord group
- Comment on your PR if you need guidance
If your Pull Request (PR) gets merged, please make sure it has the following labels:
gssoc25- Appropriate
levellabel (level1,level2,level3)
Sometimes, the admin or mentor might forget to add these labels. You are encouraged to politely remind them in the PR comments.
🧮 You can check your points in the contributors-data.md file — it is updated once a day only.
- Always sync your fork with the upstream repository to stay updated
- Be polite and collaborative in your interactions
- If you're new to open source, don't hesitate to ask for guidance — we're here to help!
- Test your changes thoroughly before submitting
- Follow the existing code style and conventions
- Write meaningful commit messages
- Keep your PRs focused on a single feature or fix
cpp-dsa-sheet-testing/
├── app/ # Next.js app directory
│ ├── api/ # API routes
│ ├── components/ # Page components
│ └── globals.css # Global styles
├── components/ # Reusable UI components
├── lib/ # Utility functions
├── models/ # Database models
├── data/ # Static data (questions.json)
├── db/ # Database configuration
├── public/ # Static assets
└── utils/ # Helper utilities
- UI/UX Improvements: Enhance the user interface and experience
- New Algorithms: Add more DSA problem solutions
- Progress Tracking: Improve analytics and visualizations
- Authentication: Enhance login/signup flows
- Responsive Design: Improve mobile experience
- Performance: Optimize loading times and animations
- Accessibility: Make the app more accessible
- Documentation: Improve guides and comments
- Testing: Add unit tests and integration tests
Thanks again for helping improve this project! 🙏
✨ If you are a complete beginner, read this: Kickstart Your Open Source Journey with GSSoC - No Experience Needed
If you have any doubts or questions regarding the issues or pull requests, feel free to reach out to the mentors:
Happy Contributing! 🚀