{"id":48020664,"url":"https://github.com/cadentdev/vim-motions-arcade","last_synced_at":"2026-04-04T13:46:49.340Z","repository":{"id":323204818,"uuid":"1092462667","full_name":"cadentdev/vim-motions-arcade","owner":"cadentdev","description":"A JavaScript game that teaches vim motions","archived":false,"fork":false,"pushed_at":"2025-12-24T04:24:38.000Z","size":697,"stargazers_count":0,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-25T16:55:16.768Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cadentdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP.md","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-11-08T17:11:03.000Z","updated_at":"2025-12-23T00:46:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cadentdev/vim-motions-arcade","commit_stats":null,"previous_names":["cadentdev/vim-motions-arcade"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cadentdev/vim-motions-arcade","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cadentdev%2Fvim-motions-arcade","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cadentdev%2Fvim-motions-arcade/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cadentdev%2Fvim-motions-arcade/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cadentdev%2Fvim-motions-arcade/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cadentdev","download_url":"https://codeload.github.com/cadentdev/vim-motions-arcade/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cadentdev%2Fvim-motions-arcade/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31402276,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-04-04T13:46:49.175Z","updated_at":"2026-04-04T13:46:49.313Z","avatar_url":"https://github.com/cadentdev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vim Motions Arcade 🎮⌨️\n\n\u003e Master vim motions through addictive arcade gameplay\n\n[![CI](https://github.com/cadentdev/vim-motions-arcade/actions/workflows/ci.yml/badge.svg)](https://github.com/cadentdev/vim-motions-arcade/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript\u0026logoColor=000)](https://www.ecma-international.org/)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n\n**Vim Motions Arcade** is an open-source browser-based game that teaches vim text editor motions through engaging arcade gameplay. Learn to navigate like a vim master by collecting power-ups, dodging obstacles, and racing against the clock in procedurally-generated levels that look like vim documents.\n\n[Play the Game](#) • [Read the Docs](./docs/) • [Report Bug](../../issues) • [Request Feature](../../issues)\n\n---\n\n## 🎯 What is This?\n\nOne of the most compelling aspects of vim is its video-game-like use of key sequences that feel like gaming combos. **Vim Motions Arcade** transforms the daunting task of learning vim into an addictive arcade experience where you build muscle memory naturally while having fun.\n\nNavigate a cursor block through \"documents\" made of word-like blocks, collect coins and power-ups that unlock new vim commands, avoid obstacles, and master efficient movement patterns—all while racing against the clock.\n\n**Core Hook**: Instead of reading documentation, you'll _play_ your way to vim mastery.\n\n---\n\n## 🕹️ Key Features\n\n- **🎮 Arcade Gameplay**: Fast-paced action that makes learning vim motions engaging and fun\n- **📚 Progressive Learning**: Start with `hjkl`, unlock advanced motions like `w`, `b`, `{`, `}`, and beyond\n- **🎨 Retro Aesthetic**: Beautiful monospaced terminal style with vibrant arcade colors\n- **⚡ Visual Effects**: Motion blur, particle effects, and satisfying feedback for every action\n- **🔄 Procedural Generation**: Every level is unique—no memorization, just pure vim skill\n- **🏆 Progression System**: Level up, unlock themes, and earn permanent upgrades\n- **🎵 Dynamic Audio**: Sound effects and music that respond to your gameplay\n- **♿ Accessibility**: Colorblind modes, reduced motion options, and keyboard-only controls\n\n---\n\n## 🎓 What are Vim Motions?\n\n[Vim](\u003chttps://en.wikipedia.org/wiki/Vim_(text_editor)\u003e) is a modal text editor that runs on virtually every computer platform. Based on [vi](\u003chttps://en.wikipedia.org/wiki/Vi_(text_editor)\u003e), first released by [Bill Joy](https://en.wikipedia.org/wiki/Bill_Joy) in 1976, vim works in text-only environments where there's no mouse or graphical interface.\n\nVim uses a modal system where different modes (normal, visual, insert, command) perform different operations. The default \"normal\" mode supports a vast array of powerful motions to navigate text documents. These **vim motions** become extraordinarily powerful once an experienced user has installed them in \"muscle memory\"—enabling navigation at the speed of thought.\n\n**Vim Motions Arcade** teaches you these essential movements through gameplay:\n\n| Motion        | Command         | What it Does                 |\n| ------------- | --------------- | ---------------------------- |\n| **Character** | `hjkl`          | Move left, down, up, right   |\n| **Word**      | `w` `b` `e`     | Jump between words           |\n| **Line**      | `0` `$` `^`     | Jump to line start/end       |\n| **Paragraph** | `{` `}`         | Navigate by paragraphs       |\n| **Search**    | `f` `F` `/`     | Find characters and patterns |\n| **Visual**    | `v` `y` `d` `p` | Select, copy, delete, paste  |\n\n---\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- A modern web browser (Chrome, Firefox, Safari, Edge)\n- A physical keyboard (Bluetooth keyboards work on mobile devices!)\n\n### Installation\n\n1. **Clone the repository**\n\n   ```bash\n   git clone https://github.com/yourusername/vim-motions-arcade.git\n   cd vim-motions-arcade\n   ```\n\n2. **Install dependencies**\n\n   ```bash\n   npm install\n   ```\n\n3. **Start the development server**\n\n   ```bash\n   npm run dev\n   ```\n\n4. **Open your browser**\n\n   ```\n   Navigate to http://localhost:3000\n   ```\n\n### Quick Start\n\n```bash\n# Clone and play in 3 commands\ngit clone https://github.com/yourusername/vim-motions-arcade.git\ncd vim-motions-arcade \u0026\u0026 npm install \u0026\u0026 npm run dev\n```\n\n---\n\n## 🎮 How to Play\n\n### Basic Controls\n\n- **Movement**: Use `h` `j` `k` `l` (left, down, up, right)\n- **Command Mode**: Press `:` then type commands like `quit`, `help`, or `pause`\n- **Pause**: Type `:pause` or press `Esc` then `:`\n\n### Gameplay Loop\n\n1. **Navigate** the cursor block through the document-like map\n2. **Collect** coins (worth points) and power-ups (unlock vim motions)\n3. **Avoid** obstacles that damage your health\n4. **Master** new motions as you unlock them\n5. **Complete** levels before time runs out for bonus points\n6. **Level up** to unlock permanent upgrades and new challenges\n\n### Pro Tips\n\n- 💡 **Coins at word boundaries**: Use `w` and `b` to grab them efficiently\n- ⚡ **Build combos**: Chain efficient movements together for score multipliers\n- 🎯 **Perfect clears**: Collect all coins for a huge time bonus\n- 🚀 **Use power-ups wisely**: Some have cooldowns, so plan your route\n\n---\n\n## 🛠️ Technology Stack\n\n### Why JavaScript?\n\nWe chose JavaScript to showcase what's possible in the browser. At [Cadent Technologies Corp.](https://cadent.net), we specialize in fun, interactive web experiences. This project is our way of exploring JavaScript as a game-development tool while giving back to the vim community.\n\n### Built With\n\n- **JavaScript (ES6+)**: Pure vanilla JS for maximum compatibility\n- **HTML5 Canvas / DOM**: Hybrid rendering for performance and flexibility\n- **Web Audio API**: Dynamic sound effects and music\n- **LocalStorage**: Save progress and unlocks\n- **CSS3**: Modern UI styling and animations\n\n### Architecture\n\n```\nvim-motions-arcade/\n├── src/\n│   ├── core/           # Game engine, state management\n│   ├── entities/       # Player, obstacles, power-ups\n│   ├── rendering/      # Canvas/DOM rendering systems\n│   ├── audio/          # Sound effects and music\n│   ├── levels/         # Procedural generation\n│   └── ui/             # HUD, menus, popups\n├── assets/\n│   ├── sounds/         # Audio files\n│   └── themes/         # Visual themes\n├── docs/               # Documentation\n└── tests/              # Unit and integration tests\n```\n\n---\n\n## 📖 Documentation\n\n- **[Product Requirements Document](./docs/PRD.md)**: Complete game design specification\n- **[Development Roadmap](./docs/ROADMAP.md)**: Phased development plan\n- **[Testing Guide](./docs/TESTING.md)**: How to run tests and CI/CD setup\n- **[Contributing Guide](./CONTRIBUTING.md)**: How to contribute to the project\n- **[Vim Motion Reference](./docs/VIM_MOTIONS.md)**: Complete list of vim commands in the game\n\n---\n\n## 🗺️ Roadmap\n\n[View detailed roadmap →](./docs/ROADMAP.md)\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or designing levels, your help is appreciated.\n\n### How to Contribute\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/AmazingFeature`)\n3. **Commit** your changes (`git commit -m 'Add some AmazingFeature'`)\n4. **Push** to the branch (`git push origin feature/AmazingFeature`)\n5. **Open** a Pull Request\n\n### Contribution Ideas\n\n- 🎨 **Design**: Create new themes, visual effects, or UI improvements\n- 🎵 **Audio**: Compose music or create sound effects\n- 🎮 **Gameplay**: Design new mechanics, power-ups, or obstacles\n- 📝 **Documentation**: Improve guides, add tutorials, or write blog posts\n- 🐛 **Bug Fixes**: Find and fix issues\n- ✨ **Features**: Implement items from the roadmap\n- 🧪 **Testing**: Write tests or do manual QA\n\nPlease read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct and development process.\n\n---\n\n## 📊 Project Status\n\n**Current Version**: 0.1.0 (Alpha)\n**Development Phase**: Phase 1 - Core Prototype Complete (~95%) - Polish In Progress\n**Status**: Active Development 🚧\n\n### Quick Stats\n\n- **Tasks Completed**: 160+ across 19 major sections\n- **Test Coverage**: 20+ unit test files + 16 E2E tests (all passing ✅)\n- **CI/CD**: Fully automated with GitHub Actions\n- **Contributors**: 1\n- **Open Issues**: 0\n- **Stars**: ⭐ Help us reach 100!\n\n### What's Working Now\n\n- ✅ **Fully playable game** from start to finish\n- ✅ Interactive main menu with retro arcade aesthetic\n- ✅ Tutorial Level 0: \"How to Quit Vim\"\n- ✅ Screen transitions (menu, tutorial, game, level complete/failed)\n- ✅ Procedural map generation with coins\n- ✅ Player movement with hjkl controls\n- ✅ Coin collection and scoring system\n- ✅ 60-second countdown timer\n- ✅ HUD with score, timer, and mode indicator\n- ✅ Win/lose conditions with end screens\n- ✅ Save/Continue game functionality\n- ✅ Local leaderboard (top 10 scores)\n- ✅ Command mode (`:q`, `:quit`, `:help`)\n- ⏳ Final polish (playtesting, performance tuning, documentation)\n\n---\n\n## 🎯 Goals \u0026 Philosophy\n\n### Project Goals\n\n1. **Make vim accessible**: Lower the barrier to learning vim through gamification\n2. **Build muscle memory**: Create lasting habits through repetition and reward\n3. **Showcase JavaScript**: Demonstrate browser-based game development\n4. **Community-driven**: Create an open-source project that grows with contributions\n5. **Educational excellence**: Provide the best vim learning experience available\n\n### Design Philosophy\n\n- **Fun first**: If it's not fun, it's not effective education\n- **Progressive disclosure**: Introduce complexity gradually\n- **Immediate feedback**: Every action should feel responsive and satisfying\n- **Accessibility**: Everyone should be able to play and learn\n- **Open source**: Transparent development, community ownership\n\n---\n\n## 📜 License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- **[Bram Moolenaar](https://en.wikipedia.org/wiki/Bram_Moolenaar)**: Creator of Vim (1991-2023)\n- **[Bill Joy](https://en.wikipedia.org/wiki/Bill_Joy)**: Creator of vi (1976)\n- **Vim Community**: For decades of amazing tools and learning resources\n- **Open Source Contributors**: Everyone who helps make this project better\n\n---\n\n## 🔗 Links\n\n- **Website**: [Coming Soon](#)\n- **Demo**: [Play Now](#)\n- **Documentation**: [Read the Docs](#)\n- **Blog**: [Development Updates](#)\n- **Discord**: [Join the Community](#)\n- **Twitter**: [@VimMotionsGame](#)\n\n---\n\n## 💬 Get in Touch\n\n- **Issues**: [GitHub Issues](../../issues)\n- **Discussions**: [GitHub Discussions](../../discussions)\n- **Email**: hello@cadent.net\n- **Website**: [cadent.net](https://cadent.net)\n\n---\n\n## 🎓 Learn More About Vim\n\nNew to vim? Check out these resources:\n\n- **[Vim Documentation](https://www.vim.org/docs.php)**: Official vim docs\n- **[OpenVim](https://www.openvim.com/)**: Interactive vim tutorial\n- **[Vim Adventures](https://vim-adventures.com/)**: Another vim game (inspiration!)\n- **[Practical Vim](https://pragprog.com/titles/dnvim2/practical-vim-second-edition/)**: Excellent book by Drew Neil\n- **[r/vim](https://www.reddit.com/r/vim/)**: Active vim community on Reddit\n\n---\n\n## 📈 Stats \u0026 Metrics\n\n![GitHub stars](https://img.shields.io/github/stars/yourusername/vim-motions-arcade?style=social)\n![GitHub forks](https://img.shields.io/github/forks/yourusername/vim-motions-arcade?style=social)\n![GitHub watchers](https://img.shields.io/github/watchers/yourusername/vim-motions-arcade?style=social)\n![GitHub last commit](https://img.shields.io/github/last-commit/yourusername/vim-motions-arcade)\n![GitHub issues](https://img.shields.io/github/issues/yourusername/vim-motions-arcade)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/yourusername/vim-motions-arcade)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ by [Cadent Technologies Corp.](https://cadent.net)**\n\n_Empowering developers, one vim motion at a time_\n\n[⬆ Back to Top](#vim-motions-arcade-)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcadentdev%2Fvim-motions-arcade","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcadentdev%2Fvim-motions-arcade","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcadentdev%2Fvim-motions-arcade/lists"}