Thank you for considering contributing to StackCode! This guide provides all the information you need to contribute effectively to the project.
- Architecture Overview - Understand the project structure
- Development Setup - Get your environment ready
- Contributing Types - Different ways to contribute
- Code Standards - Follow our guidelines
- Internationalization - Help with translations
Before contributing, familiarize yourself with the project architecture:
- 📐 Architecture Guide - Complete overview of the monorepo structure, design principles, and component interactions
- 🏛️ ADRs - Architectural decision records explaining key design choices
- 🛠️ Technology Stacks - Supported frameworks and project templates
Understanding the architecture will help you:
- Choose the right package for your changes
- Follow established patterns and conventions
- Understand cross-package dependencies
- Write better tests and documentation
-
Fork and Clone
git clone https://github.com/your-username/StackCode.git cd StackCode -
Install Dependencies
npm install
-
Build the Project
npm run build
-
Test Your Setup
# Run tests npm test # Test CLI locally node packages/cli/dist/index.js --help
- Check existing issues first
- Provide clear reproduction steps
- Include environment details (OS, Node.js version, etc.)
- Use the bug report template
- Open an issue to discuss the feature first
- Explain the use case and benefits
- Consider if it fits the project's scope
- Provide implementation ideas if possible
- Fix typos, improve clarity, add examples
- Update docs when adding new features
- Help with translations (see Internationalization)
- Pick up issues labeled
good-first-issueorhelp-wanted - Follow the development workflow
- Ensure all tests pass
- Add tests for new functionality
See the comprehensive guide in main CONTRIBUTING.md.
Important: When adding new stacks, ensure you update the dependency validation system by:
- Adding stack dependencies to
getStackDependencies()inpackages/core/src/utils.ts - Adding installation instructions to i18n files (
packages/i18n/src/locales/) - Testing the validation flow with and without required tools installed
-
Create a Feature Branch
git checkout develop git pull origin develop git checkout -b feat/your-feature-name
-
Make Your Changes
- Follow coding standards
- Add tests for new functionality
- Update documentation as needed
-
Test Thoroughly
npm test npm run lint npm run build -
Commit Your Changes
# Use conventional commits with emojis git commit -m "feat(cli): ✨ add new project template"
-
Push and Create PR
git push origin feat/your-feature-name # Open PR against develop branch
- Clean Code: Write readable, maintainable code
- SOLID Principles: Follow SOLID design principles
- Single Responsibility: Each function/class should have one purpose
- Documentation: Use TSDoc comments for public APIs
- Use strict TypeScript configuration
- Prefer explicit types over
any - Use interfaces for object shapes
- Follow ESLint rules
- Add unit tests for new functionality
- Maintain or improve test coverage
- Test both success and error scenarios
- Use descriptive test names
We welcome contributions to support more languages:
packages/i18n/src/locales/
├── en.json # English (primary)
└── pt.json # Portuguese
-
Create Locale File
# Example for Spanish cp packages/i18n/src/locales/en.json packages/i18n/src/locales/es.json -
Translate Strings
{ "commands": { "init": { "description": "Inicializar un nuevo proyecto" } } } -
Test the Translation
STACKCODE_LANG=es node packages/cli/dist/index.js --help
docs/
├── pt-BR/ # Portuguese (Brazil)
├── es/ # Spanish
├── fr/ # French
└── de/ # German
- Keep PRs focused and small
- Write clear PR descriptions
- Respond to feedback promptly
- Update documentation as needed
- Code quality and maintainability
- Test coverage and quality
- Documentation completeness
- Adherence to project standards
- Breaking change considerations
good-first-issue- Perfect for newcomershelp-wanted- Community help neededbug- Something isn't workingenhancement- New feature or improvementdocumentation- Documentation relatedquestion- Further information needed
Before submitting your PR, ensure:
- Code follows project standards
- Tests are added and passing
- Documentation is updated
- Commit messages follow convention
- PR targets the
developbranch - Breaking changes are documented
- Performance impact is considered
Need help contributing?
- GitHub Discussions - Ask questions
- Discord/Slack - Real-time community chat (if available)
- Issues - Report problems
All contributors are recognized in:
- Contributors section in README
- Git commit history
- Release notes for significant contributions
Thank you for helping make StackCode better! 🚀
For more details, see:
- Main README - Project overview
- Architecture Guide - Technical details
- Self-Hosting Guide - Deployment options