Welcome Contributors!
Thank you for your interest in contributing to Orphelix! We welcome contributions from everyone, whether you’re fixing a typo, adding a feature, or improving documentation.Before contributing, please read our Code of Conduct.
Ways to Contribute
Code
Fix bugs, add features, improve performance
Documentation
Improve docs, add examples, fix typos
Testing
Write tests, report bugs, test features
Design
UI/UX improvements, accessibility
Getting Started
1. Fork and Clone
1
Fork repository
Click “Fork” on GitHub
2
Clone your fork
3
Add upstream remote
4
Install dependencies
5
Start development
2. Find Something to Work On
- Good First Issues
- Help Wanted
- Propose New Feature
Look for issues labeled
good first issueThese are:- Well-documented
- Not too complex
- Great for beginners
- Have clear acceptance criteria
3. Claim an Issue
Comment on the issue:I’d like to work on this issue. Could you assign it to me?Wait for confirmation before starting work.
Development Workflow
Create Feature Branch
feature/- New featuresfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringtest/- Test improvementschore/- Build, dependencies, etc.
Make Changes
Follow our coding standards:Code Style
Code Style
TypeScript:
- Use TypeScript for all new code
- Avoid
anytype - Add JSDoc comments for public APIs
- Prettier handles formatting (runs on save)
- 2 spaces for indentation
- Single quotes for strings
- Semicolons optional
camelCasefor variables and functionsPascalCasefor components and typesUPPER_SNAKE_CASEfor constantskebab-casefor file names
React/Next.js
React/Next.js
Components:
- Use functional components with hooks
- Prefer named exports over default exports
- Keep components under 300 lines
- Extract reusable logic to custom hooks
- Name custom hooks
use* - Keep hooks under 150 lines
- Use TanStack Query for data fetching
- Use Zustand for global state
- One component per file
- Co-locate types with components
- Use
@/path alias for imports
API Routes
API Routes
Structure:
- One route per file
- Export named functions (GET, POST, etc.)
- Keep routes under 200 lines
- Extract business logic to lib/
- Always try-catch async operations
- Return appropriate HTTP status codes
- Include error messages in response
- Log errors for debugging
Testing
Testing
Required:
- Add unit tests for new features
- Add E2E tests for user flows
- Ensure all tests pass before PR
- Aim for 80%+ coverage
- Test edge cases and errors
- Mock external dependencies
Commit Your Changes
Follow Conventional Commits:feat:- New featurefix:- Bug fixdocs:- Documentation onlystyle:- Code style (formatting, semicolons, etc.)refactor:- Code change that neither fixes bug nor adds featureperf:- Performance improvementtest:- Adding or updating testschore:- Build process, dependencies, etc.
Push Changes
Pull Request Process
1. Create Pull Request
Go to your fork on GitHub and click “New pull request” PR Title: Follow conventional commit format:2. Code Review
What reviewers look for:- Code quality and readability
- Test coverage
- Documentation updates
- Breaking changes
- Performance implications
- Security concerns
- Make requested changes
- Push to same branch (PR updates automatically)
- Respond to comments
- Mark conversations as resolved
3. CI Checks
Automated checks that must pass:- TypeScript compilation
- ESLint (no errors)
- Unit tests
- E2E tests
- Build succeeds
4. Merge
Once approved and CI passes:- Maintainer will merge your PR
- Your branch will be deleted
- Congratulations! 🎉
Code Review Guidelines
For Contributors
Self-Review
Self-Review
Before requesting review:
- Read your own code
- Check for typos
- Remove debug code
- Add comments where needed
- Update documentation
Be Patient
Be Patient
Maintainers review PRs in their free time. It may take a few days.
Be Responsive
Be Responsive
Respond to feedback within a week. PRs may be closed if inactive for >2 weeks.
Be Respectful
Be Respectful
Feedback is about the code, not you. Stay professional and courteous.
For Reviewers
What to Check
What to Check
- Code correctness
- Test coverage
- Documentation
- Performance
- Security
- Accessibility
Feedback Style
Feedback Style
- Be specific and constructive
- Explain the “why”
- Suggest alternatives
- Praise good work
- Use “we” not “you”
Response Time
Response Time
- Review within 1-2 days if possible
- Leave comment if you need more time
- Request changes or approve clearly
Documentation
When to Update Docs
Update documentation when you:- Add new feature
- Change existing behavior
- Add new API endpoint
- Modify configuration
- Update dependencies
Documentation Locations
Writing Good Docs
Style
Style
- Clear and concise
- Active voice
- Short sentences
- Examples with code
- Screenshots when helpful
Structure
Structure
- Start with overview
- Prerequisites section
- Step-by-step instructions
- Troubleshooting section
- Next steps / related pages
Code Examples
Code Examples
- Include complete examples
- Add comments
- Show input and output
- Use realistic data
- Test all examples
Reporting Bugs
Before Reporting
- Search existing issues - Check if already reported
- Update to latest - Bug may be fixed
- Test in demo mode - Isolate from cluster issues
- Reproduce consistently - Document exact steps
Bug Report Template
Suggesting Features
Feature Request Template
Community Guidelines
Code of Conduct
We follow the Contributor Covenant:- Be respectful and inclusive
- Welcome newcomers
- Focus on what’s best for the community
- Show empathy towards others
- Accept constructive criticism gracefully
Communication Channels
GitHub Issues
Bug reports and feature requests
GitHub Discussions
General questions and ideas
Discord
Real-time chat (coming soon)
Updates and announcements
Getting Help
I have a question
I have a question
Ask in GitHub Discussions
I found a bug
I found a bug
Create an issue
I have an idea
I have an idea
Start a discussion
I need dev help
I need dev help
Ask in Discord or Discussions
Recognition
Contributors
All contributors are recognized in:- CONTRIBUTORS.md
- GitHub contributors page
- Release notes
Types of Contributions
We recognize all contributions:- Code (features, fixes, refactoring)
- Documentation (guides, API docs, examples)
- Testing (writing tests, reporting bugs)
- Design (UI/UX, logos, screenshots)
- Community (answering questions, mentoring)
- Infrastructure (CI/CD, deployments)
Becoming a Maintainer
Active contributors may be invited to become maintainers: Criteria:- 10+ merged PRs
- 3+ months of active contribution
- Good understanding of codebase
- Helpful to community
- Follows guidelines
- Review PRs
- Triage issues
- Mentor contributors
- Maintain code quality
Advanced Topics
Working with Forks
Keep fork updated:Draft Pull Requests
Create draft PR for work in progress:- Open PR as normal
- Click “Create draft pull request”
- Mark ready for review when done
- Get early feedback
- Show progress
- Run CI checks
- Collaborate with others
Multiple Commits in PR
Option 1: Squash before merge- GitHub can squash on merge
- All commits become one
- Clean history
- Each commit is meaningful
- Good commit messages
- Logical progression
Co-authoring Commits
Give credit to collaborators:Troubleshooting
Common Issues
Merge conflicts
Merge conflicts
CI failing
CI failing
Tests failing
Tests failing
Can't push to main
Can't push to main
Main branch is protected. Always work in feature branches:
Additional Resources
Getting Started
Set up development environment
Architecture
Understand system design
Testing Guide
Write and run tests
API Reference
API documentation
Thank You!
Thank you for contributing to Orphelix! Every contribution, no matter how small, makes a difference.Questions? Ask in GitHub Discussions or create an issue.