How to Contribute
There are many ways to contribute to Repolyze:Report Bugs
Found an issue? Open a bug report
Suggest Features
Have an idea? Start a discussion
Improve Documentation
Help make our docs better
Submit Code
Fix bugs or add new features
Commit Conventions
We follow Conventional Commits to maintain a clean and readable git history.Commit Message Format
Commit Types
| Type | Description | Example |
|---|---|---|
feat | New feature | feat: add branch comparison view |
fix | Bug fix | fix: resolve memory leak in file tree |
docs | Documentation changes | docs: update API documentation |
style | Code formatting (no logic change) | style: fix indentation in components |
refactor | Code restructuring | refactor: simplify auth logic |
perf | Performance improvement | perf: optimize image loading |
test | Adding or updating tests | test: add unit tests for validators |
chore | Maintenance tasks | chore: update dependencies |
Examples
Keep the first line under 72 characters. Use the body to explain what and why, not how.
Pull Request Process
Before Submitting
Ensure your PR meets these requirements:Code follows existing style
Review the coding standards below and ensure your code matches the existing patterns in the codebase.
Changes are tested
Test your changes thoroughly:
- Test in the browser during development
- Test the production build
- Test edge cases and error scenarios
PR Checklist
Before submitting your PR, verify:- Code follows existing style and conventions
-
pnpm lintpasses without errors -
pnpm type-checkpasses without errors - Changes tested locally
- Commit messages follow convention
- Documentation updated (if needed)
- PR description clearly explains changes
- Related issues are referenced (e.g., “Closes #123”)
PR Description Template
Use this template for your PR description:Coding Standards
TypeScript
Type Safety
Type Safety
- Always use TypeScript types, avoid
any - Define interfaces for complex objects
- Use type inference when types are obvious
- Export types that might be reused
Naming Conventions
Naming Conventions
- Use
camelCasefor variables and functions - Use
PascalCasefor components and types - Use
UPPER_SNAKE_CASEfor constants - Use descriptive names that indicate purpose
Function Design
Function Design
- Keep functions small and focused
- Extract complex logic into separate functions
- Add JSDoc comments for exported functions
- Use async/await instead of raw promises
React Components
Component Structure
Component Structure
- Use functional components with hooks
- Keep components focused on a single responsibility
- Extract reusable logic into custom hooks
- Use
"use client"directive only when necessary
Props & Types
Props & Types
- Define prop interfaces for all components
- Use destructuring for props
- Provide default values when appropriate
Styling
Styling
- Use Tailwind CSS for styling
- Use the
cn()utility for conditional classes - Follow existing spacing and color patterns
File Organization
- Place components in
components/directory - Place API routes in
app/api/directory - Place utilities in
lib/directory - Place type definitions in
types.tsfiles alongside related code - Group related components in subdirectories
Issue Guidelines
Reporting Bugs
When reporting a bug, include:Environment details
- OS: [e.g., macOS 13.0]
- Browser: [e.g., Chrome 120]
- Node.js version: [e.g., 18.17.0]
Requesting Features
When requesting a feature, include:- Problem: What problem does this solve?
- Proposed solution: How would you implement this?
- Alternatives: What other solutions did you consider?
- Use case: How would you use this feature?
Good First Issues
Looking for a place to start? Check out issues labeled:good first issue
Perfect for newcomers to the project
help wanted
We need your help with these
Code of Conduct
Repolyze follows the Contributor Covenant Code of Conduct.Our Pledge
We pledge to make participation in our community a harassment-free experience for everyone, regardless of:- Age, body size, disability, ethnicity
- Gender identity and expression
- Level of experience, education
- Nationality, personal appearance, race
- Religion, or sexual identity and orientation
Our Standards
Positive behaviors include:- Demonstrating empathy and kindness
- Being respectful of differing opinions
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and learning from mistakes
- Focusing on what is best for the community
- Sexualized language or imagery
- Trolling, insulting comments, or personal attacks
- Public or private harassment
- Publishing others’ private information
- Other conduct inappropriate in a professional setting
Enforcement
Instances of unacceptable behavior may be reported to [email protected]. All complaints will be reviewed and investigated promptly and fairly.Getting Help
Need assistance? We’re here to help:GitHub Discussions
Ask questions and share ideas
Quick questions and updates
Remember: there are no stupid questions! We’re happy to help contributors at any skill level.