{"id":31370088,"url":"https://github.com/commjoen/speller","last_synced_at":"2026-02-22T07:17:24.807Z","repository":{"id":315810210,"uuid":"1060901614","full_name":"commjoen/Speller","owner":"commjoen","description":"Game to learn spelling in Dutch, German, English","archived":false,"fork":false,"pushed_at":"2025-09-28T21:56:03.000Z","size":190,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-28T22:13:58.516Z","etag":null,"topics":["free","game","learn","spelling","teach"],"latest_commit_sha":null,"homepage":"https://commjoen.github.io/Speller/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/commjoen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T20:32:30.000Z","updated_at":"2025-09-28T21:52:15.000Z","dependencies_parsed_at":"2025-09-20T22:19:03.732Z","dependency_job_id":"b7f66310-948d-4c66-a150-86fabf608486","html_url":"https://github.com/commjoen/Speller","commit_stats":null,"previous_names":["commjoen/speller"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/commjoen/Speller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commjoen%2FSpeller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commjoen%2FSpeller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commjoen%2FSpeller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commjoen%2FSpeller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commjoen","download_url":"https://codeload.github.com/commjoen/Speller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commjoen%2FSpeller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278457469,"owners_count":25989956,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["free","game","learn","spelling","teach"],"created_at":"2025-09-27T18:25:49.019Z","updated_at":"2025-10-05T12:55:20.750Z","avatar_url":"https://github.com/commjoen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Speller\n\nA multilingual spelling game that helps users learn vocabulary in English, Dutch, and German. Players see a sentence with a missing word and an accompanying image that provides a visual clue for the correct answer.\n\n🚀 **[Play the game live on GitHub Pages!](https://commjoen.github.io/Speller/)**\n\n![Speller Game Screenshot](https://github.com/user-attachments/assets/154b5bc0-62b4-41b4-80b5-69f688f7965a)\n\n## Features\n\n- **Multilingual Support**: Practice spelling in English, Dutch, and German\n- **Visual Learning**: Each word is accompanied by a helpful image\n- **Interactive Sentences**: Fill in the missing word directly in the sentence\n- **Score Tracking**: Keep track of correct answers\n- **Responsive Design**: Works on desktop and mobile devices\n- **Immediate Feedback**: Get instant feedback on your answers\n\n## How to Play\n\n1. Select your preferred language from the dropdown menu\n2. Look at the image to understand what word is missing\n3. Read the sentence with the blank space\n4. Type the missing word in the input field\n5. Click \"Check\" to submit your answer\n6. Review the feedback and click \"Next Question\" to continue\n7. Complete all questions to see your final score\n\n## Supported Languages\n\n- **English**: 5 vocabulary words (cat, house, sun, apple, fish)\n- **Dutch**: 5 vocabulary words (kat, huis, zon, appel, vis)\n- **German**: 5 vocabulary words (katze, haus, sonne, apfel, fisch)\n\n## Getting Started\n\n### Play Online\n\n🌐 **[Play immediately on GitHub Pages](https://commjoen.github.io/Speller/)** - No setup required!\n\n### Running Locally\n\n1. **Simple HTTP Server** (for development):\n\n   ```bash\n   # Using Python 3\n   python3 -m http.server 8000\n\n   # Using Python 2\n   python -m SimpleHTTPServer 8000\n\n   # Using Node.js (if you have it installed)\n   npx http-server\n   ```\n\n2. **Open in Browser**: Navigate to `http://localhost:8000`\n\n### File Structure\n\n```\nSpeller/\n├── .github/\n│   └── workflows/\n│       ├── deploy.yml    # GitHub Pages deployment workflow\n│       ├── test.yml      # Automated testing workflow\n│       └── docker.yml    # Container build and push workflow\n├── test/                 # Test files\n│   ├── SpellerGame.js    # Testable version of game class\n│   ├── setup.js          # Jest test setup\n│   └── speller.test.js   # Unit tests\n├── images/               # Word images\n│   ├── cat.svg\n│   ├── house.svg\n│   ├── sun.svg\n│   ├── apple.svg\n│   └── fish.svg\n├── index.html            # Main game interface\n├── style.css             # Game styling\n├── script.js             # Game logic and functionality\n├── data.json             # Multilingual word data\n├── package.json          # Node.js dependencies and scripts\n├── Dockerfile            # Container configuration\n├── .dockerignore         # Docker build exclusions\n├── .gitignore            # Git exclusions\n└── README.md             # This file\n```\n\n## Technical Details\n\n- **Frontend**: HTML5, CSS3, JavaScript (ES6+)\n- **Images**: SVG format for scalability\n- **Data Format**: JSON for easy multilingual content management\n- **Browser Compatibility**: Modern browsers (Chrome, Firefox, Safari, Edge)\n- **Deployment**: Automatic deployment to GitHub Pages via GitHub Actions\n- **Testing**: Jest framework with comprehensive unit tests\n- **Containerization**: Docker support with Node.js Alpine base image\n- **Registry**: GitHub Container Registry (GHCR) for container distribution\n\n## Deployment\n\nThe game is automatically deployed to GitHub Pages using GitHub Actions whenever changes are pushed to the main branch. The deployment workflow:\n\n1. **Triggers**: Automatically on push to main branch, or manually via GitHub Actions tab\n2. **Build**: Sets up GitHub Pages environment and prepares static files\n3. **Deploy**: Deploys the game to GitHub Pages at `https://commjoen.github.io/Speller/`\n\nNo build process is required since this is a static HTML/CSS/JavaScript application.\n\n### Container Deployment\n\nThe application is also available as a Docker container published to GitHub Container Registry:\n\n```bash\n# Pull and run the latest container\ndocker pull ghcr.io/commjoen/speller:latest\ndocker run -p 8080:8000 ghcr.io/commjoen/speller:latest\n\n# Access the game at http://localhost:8080\n```\n\n### Local Development\n\n1. **Clone and install dependencies**:\n\n   ```bash\n   git clone https://github.com/commjoen/Speller.git\n   cd Speller\n   npm install\n   ```\n\n2. **Run locally**:\n\n   ```bash\n   # Option 1: Using npm\n   npm start\n\n   # Option 2: Using Docker\n   docker build -t speller-local .\n   docker run -p 8080:8000 speller-local\n   ```\n\n3. **Run tests**:\n\n   ```bash\n   # Run all tests\n   npm test\n\n   # Run tests in watch mode\n   npm run test:watch\n   ```\n\n4. **Development Tools**:\n\n   ```bash\n   # Install pre-commit hooks (requires pip install pre-commit)\n   pre-commit install\n\n   # Run linting\n   npm run lint\n   npm run lint:fix\n\n   # Format code\n   npm run format\n   npm run format:check\n\n   # Run pre-commit hooks manually\n   pre-commit run --all-files\n   ```\n\n## Adding New Content\n\nTo add new words or languages, edit the `data.json` file:\n\n```json\n{\n  \"language_code\": [\n    {\n      \"sentence\": \"Example sentence with {blank} placeholder.\",\n      \"word\": \"answer\",\n      \"image\": \"images/answer.svg\",\n      \"hint\": \"Optional hint text\"\n    }\n  ]\n}\n```\n\n## Game Mechanics\n\n- **Scoring**: 1 point per correct answer\n- **Case Insensitive**: Answers are checked regardless of capitalization\n- **Visual Feedback**: Correct answers show in green, incorrect in red\n- **Progress Tracking**: Shows current question number and total questions\n- **Language Reset**: Changing language resets the game and score\n\n## Educational Value\n\nThis game is designed to help with:\n\n- **Vocabulary Building**: Learn new words in multiple languages\n- **Spelling Practice**: Improve spelling accuracy\n- **Visual Association**: Connect words with images for better retention\n- **Language Comparison**: See how the same concepts are expressed in different languages\n\n## Security and Maintenance\n\nThis repository includes automated security and dependency management:\n\n- **CodeQL Security Analysis**: Automated code scanning for security vulnerabilities and coding errors runs on every push, pull request, and weekly\n- **Renovate Bot**: Automated dependency updates for npm packages, Docker base images, and GitHub Actions\n- **Vulnerability Alerts**: Automatic security alerts for known vulnerabilities in dependencies\n\n### Versioning and Releases\n\nThe project uses [Semantic Versioning](https://semver.org/) and automated releases:\n\n- **Semantic Release**: Automatically generates version numbers and changelogs based on commit messages\n- **Version Display**: The current version is displayed in the web app UI with multilingual support\n- **Automated Tagging**: GitHub releases are automatically created with each version bump\n- **Changelog**: All changes are documented in `CHANGELOG.md`\n\n#### Release Process\n\nReleases are triggered automatically when changes are pushed to the `main` branch:\n\n1. **Commit Analysis**: Semantic Release analyzes commit messages to determine version bump\n2. **Version Update**: Updates `package.json` and generates changelog\n3. **GitHub Release**: Creates a tagged release with release notes\n4. **NPM Publish**: Publishes the package to npm (if configured)\n\n#### Version Display\n\nThe application displays the current version in the header:\n\n- **English**: \"Version: X.Y.Z\"\n- **Dutch**: \"Versie: X.Y.Z\"  \n- **German**: \"Version: X.Y.Z\"\n\n### Dependency Management\n\nRenovate is configured to:\n\n- Group related updates together (e.g., all GitHub Actions updates in one PR)\n- Schedule updates for Monday mornings to minimize disruption\n- Automatically merge trusted updates like GitHub Actions\n- Maintain separate groups for development vs production dependencies\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommjoen%2Fspeller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommjoen%2Fspeller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommjoen%2Fspeller/lists"}