Thank you for your interest in contributing to DeployStack! This document provides guidelines and instructions for contributing to our project.
- Code of Conduct
- Getting Started
- Development Workflow
- Coding Standards
- Testing
- Documentation
- Release Process
We expect all contributors to follow our Code of Conduct. Please read CODE_OF_CONDUCT.md before contributing.
DeployStack uses a monorepo structure:
deploystack/
├── services/
│ ├── frontend/ # Vue.js frontend application
│ ├── backend/ # Fastify backend API
│ ├── gateway/ # DeployStack Gateway application
│ └── shared/ # Shared code and utilities
├── scripts/ # Build and deployment scripts
└── ...-
Prerequisites:
- Node.js (v18 or higher)
- npm (v8 or higher)
- Docker
-
Setup:
# Clone the repository git clone https://github.com/your-username/deploystack.git cd deploystack # Install dependencies npm install # Start development servers npm run dev:frontend # In one terminal npm run dev:backend # In another terminal
main- Production-ready codefeature/*- New featuresfix/*- Bug fixesdocs/*- Documentation changes
Always create a new branch for your changes based on the latest main.
🚨 IMPORTANT: Scopes are MANDATORY in our monorepo!
We follow the Angular commit convention with mandatory scoped messages. This is crucial for automatic versioning and changelog generation per service.
Format: type(scope): subject
Mandatory Scopes:
frontend: Changes to the Vue.js frontend applicationbackend: Changes to the Fastify backend APIgateway: Changes to the DeployStack Gateway applicationshared: Changes affecting shared code and utilitiesall: Changes affecting multiple services or project-wide changesci: CI/CD pipeline changesdeps: Dependency updates
Types:
feat: A new feature (minor version bump)fix: A bug fix (patch version bump)docs: Documentation changesstyle: Changes that don't affect the code's meaningrefactor: Code changes that neither fix bugs nor add featuresperf: Performance improvementstest: Adding or correcting testsbuild: Changes affecting the build systemchore: Changes to the build process or tools
Examples:
feat(frontend): add dark mode supportfix(backend): resolve database connection timeoutfeat(gateway): implement MCP server auto-discoveryrefactor(shared): extract common validation utilitiesdocs(all): update installation instructionschore(deps): update all dependencies to latestci(all): add automated security scanning
Why Scopes Matter:
- Automatic Changelog Generation: Each service gets its own changelog with only relevant commits
- Independent Releases: Frontend, backend, and gateway can be released independently
- Clear Impact: Instantly see which part of the system is affected
VS Code Integration:
We've configured GitHub Copilot to automatically suggest scoped commit messages. Just click the sparkle ✨ button in the commit message box!
Rules:
- ✅ ALWAYS include a scope - commits without scopes will not appear in service-specific changelogs
- ✅ Use lowercase for scopes and types
- ✅ Keep subject under 72 characters
- ✅ Use imperative mood ("add feature" not "added feature")
- ✅ No period at the end of the subject line
- ✅ Use
allscope sparingly - only for true cross-cutting changes
- Create a new branch for your feature or fix
- Make your changes with appropriate tests
- Ensure your code passes linting:
npm run lint - Submit a pull request to the
mainbranch - Update the PR based on review feedback
- Once approved, maintainers will merge your PR
- Follow existing code style and patterns
- Write clear, self-documenting code
- Add comments for complex logic
- Keep functions small and focused
- Write tests for new features
- Follow Vue.js best practices
- Use composition API for new components
- Utilize TypeScript for type safety
- Follow the UI component structure
- Use i18n for all user-facing text
- Follow RESTful API design principles
- Validate all inputs
- Properly handle errors and return appropriate status codes
- Document API endpoints
- Write unit tests for business logic
- Follow Node.js and TypeScript best practices
- Implement secure credential handling
- Write comprehensive error handling for MCP server interactions
- Document CLI commands and configuration options
- Test process management and lifecycle operations
- Write unit tests for business logic
- Write integration tests for API endpoints
- Ensure existing tests pass before submitting a PR
- Aim for high test coverage for critical paths
- Update documentation when introducing new features
- Document API changes
- Update the README if necessary
- Add JSDoc comments to functions and methods
For detailed information about our release process, please refer to RELEASE.md.
Thank you for contributing to DeployStack!