Thank you for your interest in contributing to StackIt! This document provides guidelines and information for contributors.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/stackit-qa-platform.git cd stackit-qa-platform
-
Install dependencies:
npm run install-all
-
Set up environment variables:
cp server/env.example server/.env cp client/env.example client/.env
-
Start development servers:
npm run dev
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix- Write clean, readable code
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
# Run all tests
npm test
# Run linting
npm run lint
# Fix linting issues
npm run lint:fix
# Build the project
npm run buildgit add .
git commit -m "feat: add new feature description"Commit Message Format:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for formatting changesrefactor:for code refactoringtest:for adding testschore:for maintenance tasks
git push origin feature/your-feature-nameThen create a Pull Request on GitHub with:
- Clear description of changes
- Screenshots (if UI changes)
- Link to related issues
- Use ESLint and Prettier for code formatting
- Follow React best practices
- Use TypeScript for type safety (when possible)
- Write meaningful variable and function names
- Write unit tests for new features
- Ensure all tests pass before submitting PR
- Add integration tests for critical flows
- Maintain good test coverage
- Update README.md for new features
- Add JSDoc comments for functions
- Update API documentation
- Include usage examples
- Keep commits small and focused
- Use descriptive commit messages
- Rebase on main before submitting PR
- Squash commits when appropriate
When reporting bugs, please include:
- Description of the bug
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details (OS, browser, version)
- Screenshots (if applicable)
When requesting features, please include:
- Description of the feature
- Use case and benefits
- Implementation suggestions (if any)
- Mockups or wireframes (if UI feature)
- Node.js 16+
- npm or yarn
- MongoDB (local or Atlas)
- Git
# Install dependencies
npm run install-all
# Start development servers
npm run dev
# Run tests
npm test
# Run linting
npm run lint
# Build for production
npm run buildCreate .env files in both server/ and client/ directories:
Server (.env):
PORT=5000
MONGODB_URI=mongodb://localhost:27017/stackit
JWT_SECRET=your-secret-key
CLIENT_URL=http://localhost:3000
NODE_ENV=developmentClient (.env):
VITE_API_URL=http://localhost:5000/api# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage- Unit tests for individual components
- Integration tests for API endpoints
- E2E tests for critical user flows
- Mock external dependencies
# Build frontend
npm run build
# Build and start production server
npm start# Build Docker image
docker build -t stackit .
# Run with Docker Compose
docker-compose up-
Automated Checks
- Tests must pass
- Linting must pass
- Build must succeed
-
Manual Review
- Code quality review
- Security review
- Performance review
- Documentation review
-
Approval
- At least one maintainer approval required
- All CI checks must pass
- No merge conflicts
-
Version Bumping
- Update version in package.json
- Update CHANGELOG.md
- Create release notes
-
Deployment
- Deploy to staging environment
- Run integration tests
- Deploy to production
-
Post-Release
- Monitor for issues
- Update documentation
- Announce release
- Issues: Create an issue on GitHub
- Discussions: Use GitHub Discussions
- Email: Contact maintainers directly
- Documentation: Check README.md and docs/
Contributors will be recognized in:
- README.md contributors section
- Release notes
- Project documentation
- GitHub contributors page
By contributing to StackIt, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to StackIt! 🎉