Thank you for considering contributing to the CircuitVerse Community Dashboard! 🎉
We welcome contributions from everyone, whether you're fixing a bug, improving documentation, or adding a new feature. This guide will help you get started.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Guidelines
- Commit Message Guidelines
- Issue Guidelines
- Code Style
- Need Help?
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful and considerate in all interactions.
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm (v9 or higher)
- Git
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/<your-username>/community-dashboard.git
cd community-dashboard- Add the upstream remote:
git remote add upstream https://github.com/CircuitVerse/community-dashboard.git- Install dependencies:
npm install- Set up environment variables (optional):
If you need to generate leaderboard data locally, create a .env.local file:
GITHUB_TOKEN=ghp_your_token_here- Start the development server:
npm run devThe app will be available at http://localhost:3000.
- Browse our open issues
- Look for issues labeled
good first issuefor beginner-friendly tasks - Check for issues labeled
help wantedfor priority tasks
Comment on the issue with:
@bot claim
The bot will automatically assign you to the issue if:
- ✅ The issue is not already assigned to someone else
- ✅ You don't have any other open issues assigned to you
If you can no longer work on an issue, comment:
@bot drop
This will remove you from the issue and make it available for others.
| Rule | Description |
|---|---|
| One issue at a time | You can only be assigned to one open issue at a time. Complete or unclaim your current issue before claiming a new one. |
| First come, first served | Issues are assigned to the first person who claims them. |
| In Progress label | When assigned, the issue automatically gets the in progress label. |
For small fixes (typos, minor improvements), you can submit a PR directly. For larger changes, please open an issue first to discuss your approach.
- Sync your fork with the latest changes from upstream:
git fetch upstream
git checkout main
git merge upstream/main- Create a feature branch:
git checkout -b feat/your-feature-name-
Make your changes and test them locally
-
Run linting and tests:
npm run lint
npm run build- Push your branch to your fork:
git push origin feat/your-feature-name-
Open a Pull Request against the
mainbranch -
Fill out the PR template with:
- A clear description of what changes you made
- Reference to the issue it addresses (e.g.,
Fixes #123) - Screenshots/recordings for UI changes
- PRs require approval from at least one maintainer
- Address any feedback promptly
- Keep your PR focused - one feature/fix per PR
- Keep your PR small when possible
We follow Conventional Commits format:
<type>(<scope>): <description>
[optional body]
[optional footer]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation changes |
style |
Code style changes (formatting, etc.) |
refactor |
Code refactoring without feature changes |
test |
Adding or updating tests |
chore |
Maintenance tasks (build, deps, etc.) |
feat(leaderboard): add contributor heatmap component
fix(ui): resolve dark mode toggle flicker
docs: update contributing guidelines
When reporting a bug, please include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Screenshots if applicable
- Browser/OS information
When requesting a feature:
- Describe the problem you're trying to solve
- Explain your proposed solution
- Consider alternative approaches
- Add mockups or examples if helpful
- Use TypeScript for type safety
- Follow existing code patterns and structure
- Use Tailwind CSS for styling
- Write descriptive variable and function names
- Add comments for complex logic
- Components go in
components/ - Utility functions go in
lib/ - Types go in
types/ - API routes go in
app/api/
The project uses ESLint for linting. Run the linter before committing:
npm run lint- Slack: Join the CircuitVerse Slack workspace for real-time discussions
- GitHub Discussions: For general questions and ideas
- Issues: For specific problems or feature requests
Your contributions make CircuitVerse better for everyone. We appreciate your time and effort!
Happy Contributing! 🚀