A safari-themed math practice game designed to make learning arithmetic fun and accessible.
SumSafari challenges players to solve math problems (Addition, Subtraction, Multiplication, Division) against the clock to "collect" animals. It features adaptive difficulty, comprehensive scoring, and a focus on accessibility.
- Customizable Sessions: Toggle operations, set difficulty (Easy/Medium/Hard), and choose session duration.
- Fun Rewards: Collect unique animal emojis for every correct answer.
- Accessible Design: Full keyboard navigation, screen reader support (ARIA), and reduced motion compliance.
- Robust Scoring: Points for speed, accuracy, and difficulty multipliers.
- Framework: Vue 3 + TypeScript
- Build Tool: Vite
- State Management: Vue Composables (Pinia-like pattern)
- Testing:
- Unit/Component: Vitest + Vue Test Utils
- E2E: Playwright
- Styling: Vanilla CSS (Variables + Scoped)
- Node.js (v18+)
- npm
# Clone the repository
git clone https://github.com/pyroxene-labs/sum-safari.git
# Navigate to directory
cd sum-safari
# Install dependencies
npm installnpm run devVisit http://localhost:5173 to start exploring.
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build locally |
npm run lint |
Run ESLint to fix code style issues |
npm run test:unit |
Run Unit & Component tests (Vitest) |
npm run test:e2e |
Run End-to-End tests (Playwright) |
We use Vitest for unit logic (e.g., scoring math) and Playwright for full customer journeys.
# Run Unit Tests
npm run test:unit
# Run E2E Tests
npm run test:e2e- Fork the repo
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.