Thank you for your interest in contributing to AlgoBuddy! We welcome and appreciate contributions from the community to help make this project better.
Join our community — Discord Server: https://discord.gg/Gv2N4U3KAc
- Contribution Areas
- Tech Stack
- Getting Started
- Development Workflow
- Issue Assignment Process
- Pull Request Guidelines
- Reporting Issues
- Need Help?
We accept contributions in the following areas:
| Area | Description |
|---|---|
| Bug Fixes | Resolve existing bugs and issues |
| UI/UX Improvements | Enhance responsiveness, accessibility, and design |
| New Visualizers | Add new DSA visualizers and animations |
| Documentation | Improve guides, README, and contributor docs |
| Performance | Optimize application performance and efficiency |
| Theme Enhancements | Improve dark/light mode experience |
Feel free to suggest new contribution ideas by opening an issue first.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Library | React.js |
| Styling | Tailwind CSS |
| Language | JavaScript |
| Database / Auth | Supabase |
| Animation | GSAP, Framer Motion |
| Charts | Recharts |
| Nodemailer (Gmail) | |
| Captcha | Cloudflare Turnstile |
Follow these steps to set up the project locally.
Click the Fork button at the top-right corner of this repository.
git clone https://github.com/your-username/AlgoBuddy.gitcd AlgoBuddynpm installCopy the example env file and fill in the required values:
cp .env.example .env.local| Variable | Description |
|---|---|
EMAIL_USER |
Gmail address used to send contact/review emails |
EMAIL_PASSWORD |
Gmail App Password (not your account password) |
NEXT_PUBLIC_GA_ID |
Google Analytics Measurement ID |
NEXT_PUBLIC_SUPABASE_URL |
Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous/public key |
SUPABASE_SERVICE_KEY |
Supabase service role key (server-side only) |
NEXT_PUBLIC_TURNSTILE_SITE_KEY |
Cloudflare Turnstile site key |
TURNSTILE_SECRET_KEY |
Cloudflare Turnstile secret key |
TURNSTILE_BYPASS |
Bypass Turnstile locally (set to true to bypass) |
UPSTASH_REDIS_REST_URL |
Upstash Redis REST URL for rate limiting |
UPSTASH_REDIS_REST_TOKEN |
Upstash Redis REST Token for rate limiting |
GEMINI_API_KEY |
Google Gemini API key for AI chatbot |
AUTO_CONFIRM_EMAIL |
Auto confirm user email in Supabase (if set) |
NEXT_PUBLIC_SHOW_COMMUNITY_BADGE |
Toggle visibility of community badge in UI |
NEXT_PUBLIC_USE_SPRING_BOOT_API |
Route requests to Java Spring Boot API locally |
NEXT_PUBLIC_SPRING_BOOT_API_URL |
URL of local Java Spring Boot API (default http://localhost:8080) |
⚠️ Never commit.env.localto version control. It is already listed in.gitignore.
npm run devThe application will start locally at http://localhost:3000.
Follow the workflow below while contributing to the project.
Create a separate branch before making any changes.
Syntax
git checkout -b feature/your-feature-nameExample
git checkout -b fix/navbar-responsive-issueYou can now start working on:
- Bug fixes
- UI/UX improvements
- Documentation updates
- Performance enhancements
- New visualizers
Write clear and meaningful commit messages.
Syntax
git commit -m "type: short-description"Example
git commit -m "fix: improve navbar responsiveness"Recommended Commit Types
| Type | Purpose |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation updates |
style |
UI/styling changes |
refactor |
Code improvements |
perf |
Performance optimization |
Push your branch to your forked repository.
git push origin feature/your-branch-nameAfter pushing your changes:
- Open your fork on GitHub
- Click Compare & Pull Request
- Add a clear title and description
- Submit the pull request
To ensure fair and efficient issue management, please follow these steps:
- Browse open issues — Check the Issues tab for tasks labelled
good first issueorhelp wanted. - Comment to request assignment — Leave a comment on the issue you'd like to work on (e.g., "I'd like to work on this"). Do not open a PR without being assigned first.
- Wait for assignment — A maintainer will assign the issue to you. Work will only be reviewed from the assigned contributor.
- Submit within the deadline — If a deadline is mentioned on the issue, please try to submit your PR within that timeframe. If you need more time, let us know in the issue thread.
- Avoid duplicate work — Before starting, check that no one else is already assigned to the same issue.
If you find a bug or want to suggest a feature that isn't already an issue, please open one first before working on it.
Before submitting a PR:
- Ensure the project builds and runs correctly (
npm run dev) - Test changes on multiple screen sizes (mobile, tablet, desktop)
- Follow clean coding practices
- Avoid committing unnecessary files (e.g.,
.env.local,node_modules) - Use meaningful commit messages following the conventions above
- Keep PRs focused on a single issue or topic
- Add screenshots or screen recordings for UI-related changes
When creating issues, please include:
- A clear, descriptive title
- A proper explanation of the problem
- Steps to reproduce the issue
- Expected vs. actual behaviour
- Screenshots or error logs, if applicable
If you need help while contributing:
- Open an issue on GitHub
- Start a discussion in the Discussions tab
- Ask in Discord — discord.gg/Gv2N4U3KAc
We're happy to help new contributors!
Thank you for contributing to AlgoBuddy 💙
Your contributions help make learning Data Structures & Algorithms more interactive and accessible for everyone.