Thank you for your interest in contributing to our project! We appreciate your time and effort in making this project better.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Commit Message Guidelines
- Testing
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/website.git - Add upstream remote:
git remote add upstream https://github.com/ORIGINAL-OWNER/website.git - Create a new branch:
git checkout -b feature/your-feature-name
- Node.js 20.x or higher
- pnpm 9.x (recommended)
- Git
# Install dependencies
pnpm install
# Start development server
pnpm dev
# Run linting
pnpm lint
# Build for production
pnpm build# Start development environment
docker-compose -f docker-compose.dev.yml up
# Build production image
docker build -t website .
# Run production container
docker-compose up- Use the GitHub issue tracker
- Check if the issue already exists
- Use the bug report template
- Include as much detail as possible
- Add screenshots or code samples if applicable
- Use the feature request template
- Clearly describe the feature and its benefits
- Explain why this feature would be useful
- Consider providing implementation suggestions
- Ensure your code follows our coding standards
- Write clear, concise commit messages
- Add tests for new functionality
- Update documentation as needed
- Ensure all tests pass
- Submit a pull request
- Update the README.md or relevant documentation with details of changes
- Follow the pull request template
- Link any related issues
- Request review from maintainers
- Address review feedback promptly
- Ensure CI/CD checks pass
- Squash commits if requested
- Wait for approval from at least one maintainer
- Use TypeScript for all new files
- Follow the existing code style
- Use meaningful variable and function names
- Write self-documenting code with comments for complex logic
- Avoid any types; use proper type definitions
- Use functional components and hooks for React
- Use functional components
- Leverage React hooks appropriately
- Keep components small and focused
- Extract reusable logic into custom hooks
- Use proper prop types
- Follow the component structure:
- Imports
- Types/Interfaces
- Component definition
- Hooks
- Event handlers
- Render logic
- React components: PascalCase (e.g.,
UserProfile.tsx) - Utilities and helpers: camelCase (e.g.,
formatDate.ts) - Constants: UPPER_SNAKE_CASE in a
constants.tsfile - Test files:
ComponentName.test.tsx
- Use Tailwind CSS utility classes
- Follow mobile-first approach
- Keep custom CSS minimal
- Use CSS modules for component-specific styles if needed
We follow the Conventional Commits specification.
<type>(<scope>): <subject>
<body>
<footer>
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that don't affect code meaning (formatting, etc.)
- refactor: Code change that neither fixes a bug nor adds a feature
- perf: Performance improvements
- test: Adding or correcting tests
- chore: Changes to build process or auxiliary tools
- ci: Changes to CI configuration files and scripts
feat(auth): add social login integration
Implemented OAuth login flow with Google and GitHub providers.
Added user profile synchronization after successful authentication.
Closes #123
fix(api): resolve race condition in data fetching
Fixed an issue where concurrent API calls could result in stale data.
Added proper request cancellation and cleanup.
Fixes #456
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test:watch
# Run tests with coverage
pnpm test:coverage- Write tests for all new features
- Maintain test coverage above 80%
- Use descriptive test names
- Follow the AAA pattern: Arrange, Act, Assert
- Mock external dependencies
- Test edge cases and error conditions
If you have questions, feel free to:
- Open a discussion on GitHub
- Reach out to maintainers
- Check existing issues and PRs
Thank you for contributing!