Thank you for your interest in contributing to QA Test Prep! This document provides guidelines for contributing to the project.
We use a Git Flow-inspired branching model:
main- Production branch (protected, requires PR)develop- Development branch (default branch for new features)feature/*- Feature branches (branch from develop)bugfix/*- Bug fix branches (branch from develop)hotfix/*- Emergency fixes (branch from main)
-
Fork the repository and clone your fork
-
Create a feature branch from
develop:git checkout develop git pull origin develop git checkout -b feature/your-feature-name
-
Make your changes:
- Write clean, documented code
- Follow existing code style
- Add tests if applicable
- Update documentation
-
Commit your changes:
git add . git commit -m "feat: add new feature"
Follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changesrefactor:Code refactoringtest:Test changeschore:Build/tool changes
-
Push to your fork:
git push origin feature/your-feature-name
-
Open a Pull Request to
developbranch
- Target the
developbranch (notmain) - Provide a clear description of changes
- Reference any related issues
- Ensure all tests pass
- Update documentation if needed
- Request review from maintainers
Before submitting a PR:
# Install dependencies
npm install
# Run build
npm run build
# Run tests (if available)
npm test
# Check linting
npm run lint- Use GitHub Issues
- Provide clear reproduction steps
- Include browser/OS information
- Add screenshots if relevant
- Check existing issues first
-
Prerequisites:
- Node.js 18+
- npm 9+
-
Local development:
# Install dependencies npm install # Start dev server npm run dev # Build for production npm run build
To add new questions:
- Edit
src/data/questions.ts - Follow the existing format:
{ id: 'q171', topic: 'topic-id', text: 'Your question in Hebrew', options: ['Option 1', 'Option 2', 'Option 3', 'Option 4'], correctAnswer: 0, // Index of correct option explanation: 'Explanation in Hebrew', difficulty: 'easy' | 'medium' | 'hard', tags: ['tag1', 'tag2'] }
- Maintain mobile-first design
- Support RTL (Hebrew) layout
- Ensure dark mode compatibility
- Follow existing Tailwind CSS patterns
- Test on multiple screen sizes
- Use TypeScript for type safety
- Follow ESLint configuration
- Use meaningful variable names
- Add comments for complex logic
- Keep components small and focused
- Be respectful and inclusive
- Welcome newcomers
- Provide constructive feedback
- Focus on what's best for the community
For questions or discussions:
- Open a GitHub Issue
- Start a GitHub Discussion
- Contact maintainers through GitHub
Thank you for contributing! 🎉