Thank you for being part of the Easy Fixer development team! This document provides guidelines and instructions for contributing to this project.
- Team Standards
- Getting Started
- Development Workflow
- Pull Request Process
- Coding Standards
- Naming and Message Guidelines
- Testing Guidelines
- Branching Strategy
While we maintain coding standards and processes to ensure quality and consistency, we recognize that:
- Rules Are Guidelines - Standards exist to help, not hinder. If you have a valid reason to deviate from a rule, and provide explanation where needed.
- Growth Through Feedback - If you're new to these standards or feeling overwhelmed, just start coding! The team will provide constructive feedback to help you adapt gradually.
- Continuous Improvement - Our standards evolve based on team experiences and project needs. Suggestions for improving our practices are welcome.
As a private project development team, we strive to maintain high-quality code and productive collaboration. Please:
- Communicate regularly with the team
- Keep your assigned tasks updated in our project management system
- Follow the coding standards and guidelines in this document
- Review pull requests from team members promptly
We operate according to these core values:
- Collaboration - We work together, share knowledge, and support each other
- Quality - We strive for maintainable, well-tested, and reliable code
- Learning - We embrace continuous improvement and knowledge sharing
- Pragmatism - We value practical solutions over perfection
- Transparency - We communicate openly about progress, challenges, and decisions
- Respect - We value diverse perspectives and treat each other with respect
Remember that code reviews are collaborative learning opportunities, not criticisms. We're all working toward the same goal of learning and building a great product.
For detailed project information, please refer to these sections in the README.md:
- Quick Start - Installation prerequisites and step-by-step setup guide for local environment
- Development - Available commands and development workflow
- Project Structure - Explanation of the monorepo and file organization
- Architecture Principles - System design and code organization principles
- API Documentation - How to access and use the OpenAPI documentation
- Tech Stack - Overview of all technologies used in the project
- Always pull or fetch to stay in sync with the remote repo
- Create a new branch for your feature or bugfix
- Make your changes and ensure they follow our coding standards
- Test your changes
- Check code quality
- Commit your changes following commit message guidelines
- Push to the repository
- Create a Pull Request using our PR template
#0
git pull
#1
git switch -c [branch-name]
#2
#3 #4 those are also enforced through actions and hooks
npm run check:staged
npm run test
#5
git commit
#6
git push- Fill out the PR template completely
- Link any related issues in the PR description
- Request reviews from team members
- Address any feedback from code reviews
- Ensure all tests pass and code quality checks pass
- Update documentation as necessary
We use ESLint and Prettier to enforce coding standards:
- TypeScript: Follow TypeScript best practices
- React: Follow React best practices and hooks guidelines
- API: Follow RESTful API design principles
- Testing: Write meaningful tests with good coverage
To check your code against our standards:
# Check linting
npm run lint:check
# Check formatting
npm run format:checkTo automatically fix issues:
# Fix linting issues
npm run lint:fix
# Fix formatting issues
npm run format:fixFollow consistent naming and message conventions to improve clarity and organization.
Types:
feat: New featurefix: Bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: Code change that neither fixes a bug nor adds a featureperf: Code change that improves performancetest: Adding missing or correcting existing testschore: Changes to the build process or auxiliary toolshotfix: Urgent fixes applied directly to production coderelease: Changes related to preparing a new release version
We follow the Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
Example:
feat(client): add ability to create service requests
- Added form component for service requests
- Implemented validation using Zod
- Added connection to API
Closes #123
Use the type prefixes to categorize your branches:
<type>/<short-description>
Examples:
feat/user-authenticationfix/login-validation-errordocs/update-api-documentationrefactor/service-matching-algorithm
Use [WIP] prefix or draft PRs to communicate that the PR is not finished yet.
Use a similar format for pull request titles, with more detailed context:
<type>(<scope>): <description>
Examples:
feat(client): add service request creation workflowfix(api): resolve missing authentication tokensdocs(readme): update deployment instructions
- Write tests for new features and bug fixes
- Maintain test coverage
- Test both happy paths and edge cases
- Mock external dependencies appropriately
- balance between integration and unit tests
Run tests:
# Run all tests
npm test
# Run tests with coverage
npm run test:coverage
# Test Driven Development
npm run test:watch
# Vitest UI
npm run test:uiDuring initial development:
- All feature/fix branches are created from
main - All changes are merged back to
mainthrough pull requests - Simplified workflow for rapid development
main <──────────────────────┐
│ │
└──► branch ──────────────┘
As the project matures, we'll adopt a more structured branching strategy with three main patterns:
Feature and bug fix branches are created from and merged back to the development branch:
development
│
├──► feature/new-component ──┐
│ │
├──► fix/login-issue ────────┤
│ │
└──► feat/user-profile ──────┘
│
v
development
When ready for release, code flows from development to main:
development ──────► release/1.0 ──────► main
│
v
development
Emergency fixes go directly to main and are backported to development:
main
│
├──► hotfix/critical-bug ───┐
│ │
v v
main ────────────────► development
- main: Production code; always stable
- development: Integration branch where all features come together before release
- feature/bug branches: Individual features or bugfixes (from and to
development)
- feature/bug branches: Individual features or bugfixes (from and to
- release: Preparing for a new production release (from
developmenttomainand back todevelopment) - hotfix: Emergency fixes for production issues (from
maintomainanddevelopment)
This approach will provide better stability for production while allowing continuous development.
If you have questions or need help, please:
- Ask in the team communication channel
- Add a comment to the relevant issue or PR
Thank you for contributing to Easy Fixer!