Thank you for wanting to help kids succeed in their 11+ exams! This guide will help you contribute effectively.
Found a question with a wrong answer? This is critical - wrong answers are worse than no tool at all.
- Note the question ID (shown in browser console or URL)
- Open an issue with:
- Question ID
- The wrong answer shown
- What the correct answer should be
- Your reasoning
Expand our synonym/antonym validation in scripts/validate_questions.py:
# Add to SYNONYM_PAIRS
('your_word', 'synonym'),
# Add to ANTONYM_PAIRS
('word1', 'opposite'),Add public domain passages to scripts/generate_english.py:
Good sources for public domain text:
- Aesop's Fables (we use these)
- Grimm's Fairy Tales
- Public domain children's literature
- Wikipedia (CC licensed)
Requirements:
- Age-appropriate (10-11 year olds)
- 150-300 words ideal
- Clear moral or main idea
- 5 comprehension questions per passage
Extend scripts/generate_nvr.py with new pattern types:
- Reflection patterns
- Color change sequences
- Multiple attribute changes
- More complex rotations
# Clone the repo
git clone https://github.com/YOUR_USERNAME/11plus-tutor.git
cd 11plus-tutor
# Python setup (3.12 recommended)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Frontend setup
cd web && npm install && cd ..
# Run the app
python scripts/start_app.py
# Run tests
python scripts/test_harness.py
python scripts/validate_questions.pyQuestions where answers are computed are guaranteed correct:
# Example: Number sequence
def generate_sequence():
start = random.randint(1, 20)
diff = random.randint(2, 7)
sequence = [start + i * diff for i in range(4)]
answer = sequence[-1] + diff # Computed, guaranteed correct
return sequence, answerQuestions using word lists need validation:
# Add words to SYNONYM_PAIRS in validate_questions.py
SYNONYM_PAIRS = {
('happy', 'joyful'), # Verified pair
# ... add more
}Complex questions need human review before merging.
- Python: Follow PEP 8
- TypeScript: ESLint + Prettier
- Commits: Conventional commits (
feat:,fix:,docs:) - PRs: Include test results from
test_harness.py
Before submitting a PR:
# 1. Run the test harness
python scripts/test_harness.py
# Expected: 57/57 passed
# 2. Validate questions
python scripts/validate_questions.py
# Check for any new issues
# 3. Test in browser
python scripts/start_app.py
# Try your new questions manually- More NVR pattern types (cube nets, paper folding)
- CEM-style questions (different from GL Assessment)
- More comprehension passages
- Mobile-responsive improvements
- Docker setup for easy deployment
- Printable worksheet generator
- Progress export for parents
- Timed mock exam mode improvements
- Spaced repetition algorithm
- Audio for younger kids
- Multiple language support
- Raspberry Pi deployment guide
- Browser extension for quick practice
We have most, but missing:
- Move a letter
- Word-number codes
- Number series (letter=number)
- Alphabet position questions
CEM tests are different from GL:
- Cloze passages (fill in blanks in text)
- Shuffled sentences
- Extended comprehension
- Verbal reasoning within passages
- Cube nets (which cube from this net?)
- Paper folding (punch hole, unfold)
- Hidden shapes (find shape in complex figure)
- 3D rotation
- Matrices (3x3 grid patterns)
Contributors will be added to README.md and the app's About page.
Thank you for helping kids succeed! 🎓