{"id":25596198,"url":"https://github.com/dasvh/go-learn-vim","last_synced_at":"2025-02-28T20:33:22.563Z","repository":{"id":272177286,"uuid":"900740705","full_name":"dasvh/go-learn-vim","owner":"dasvh","description":"An interactive terminal-based application designed to teach users the basics of Vim motions in a fun and engaging way","archived":false,"fork":false,"pushed_at":"2025-02-11T17:03:09.000Z","size":2213,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-21T12:02:29.612Z","etag":null,"topics":["bubbletea","go","golang","tui","vim"],"latest_commit_sha":null,"homepage":"https://github.com/dasvh/go-learn-vim","language":"Go","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/dasvh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-12-09T11:41:45.000Z","updated_at":"2025-02-09T17:39:03.000Z","dependencies_parsed_at":"2025-01-12T18:41:57.330Z","dependency_job_id":null,"html_url":"https://github.com/dasvh/go-learn-vim","commit_stats":null,"previous_names":["dasvh/go-learn-vim"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fgo-learn-vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fgo-learn-vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fgo-learn-vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fgo-learn-vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasvh","download_url":"https://codeload.github.com/dasvh/go-learn-vim/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241226912,"owners_count":19930489,"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","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":["bubbletea","go","golang","tui","vim"],"created_at":"2025-02-21T12:01:25.469Z","updated_at":"2025-02-28T20:33:22.542Z","avatar_url":"https://github.com/dasvh.png","language":"Go","readme":"# Go Learn Vim\n\n## About the project\n\n**Go Learn Vim** is an interactive terminal-based application designed to teach users the basics of Vim motions in a fun and engaging way.\nUsing the [Bubble Tea](https://github.com/charmbracelet/bubbletea) framework, this project combines learning with game mechanics,\nmaking it easier for beginners to get started with Vim's navigation system.\n\n![Demo gif](docs/gifs/demo.gif)\n\n### Built with\n\nThe application is written in Go and uses the following libraries:\n\n* [Bubble Tea](https://github.com/charmbracelet/bubbletea): Core framework for building reactive terminal UIs.\n* [Bubbles](https://github.com/charmbracelet/bubbles): Prebuilt components for UI interactions  \n* [Lip Gloss](https://github.com/charmbracelet/lipgloss): Tools for styling and layout of terminal UIs\n\n### Features\n\n* **Adventure Mode**: Navigate through various levels and solve challenges while learning essential Vim motions\n* **Visual Feedback**: Track your movements with visual markers that display your path on the screen\n* **Dynamic Statistics**: Real-time updates on keystrokes, elapsed time, and progress\n* **High Scores**: Compete for the best scores based on your efficiency in time and keystrokes\n* **Modular Design**: Built with a clean and reusable component architecture for easy expansion\n* **Interactive UI**: Intuitive navigation using Vim-like commands and smooth transitions between menus\n\n## Installation\n\n### Prerequisites\n\n- Go 1.23.4\n\n### Setup\n\n*It is recommended to run the application in a dedicated terminal window (e.g. not in an IDE terminal) with a minimum size of 135x45.*\n\n```sh\n# clone the repository\ngit clone github.com/dasvh/go-learn-vim\ncd go-learn-vim\n\n# builds the application and saves the binary in the /tmp/bin directory\nmake build\n\n# runs the application from the /tmp/bin directory\nmake run\n```\n\n## Development\n\n### Project Structure\n\n```\n.\n├── cmd\n│   └── main.go               # application entry point\n└── internal\n    ├── app                   # core application logic\n    │   ├── controllers       # game, level and screen business logic\n    │   └── screens           # application screens\n    │       ├── adventure     # adventure mode screen\n    │       │   └── level     # level specific logic\n    │       ├── info          # info screens\n    │       ├── leaderboards  # high scores and stats\n    │       ├── menus         # main menu and other menus\n    │       └── selection     # player, level and game save selection\n    ├── components            # reusable UI components\n    ├── models                # data models for players, stats, and levels\n    ├── storage               # application persistence\n    ├── style                 # UI styling\n    └── views                 # reusable UI views\n```\n\n### Available Make Commands\n\n```sh\nmake help      # shows available commands\nmake build     # build the application\nmake run       # run the application\nmake test      # run tests\nmake audit     # run quality control checks\nmake tidy      # format code and tidy dependencies\n```\n\n## License\n\n[MIT](https://github.com/dasvh/go-learn-vim/raw/main/LICENSE)\n\n## Acknowledgments\n\nThis project was created as part of a learning exercise and serves primarily as a proof of concept rather than a production-ready application.\nThe primary focus was on exploring the user interface design and interaction patterns using the [Bubble Tea](https://github.com/charmbracelet/bubbletea) framework.\nAs such, certain aspects of the application, such as game mechanics and backend implementation, are intentionally simplified.\n\nSpecial thanks to the following resources and communities that supported the development of this project:\n\n  * [charm_](https://charm.sh/) for the Bubble Tea framework and its related tools, which served as the backbone for building the terminal-based UI\n  * [Charm-In-The-Wild](https://github.com/charm-and-friends/charm-in-the-wild) collection of community projects built with the [Charm](https://github.com/charmbracelet/) stack\n\n\n## Disclaimer\n\nThis project emphasizes UI functionality and modularity. While it offers foundational mechanics for Vim-inspired learning, key features such as advanced game logic, robust error handling, and extended testing are not fully developed.\nThese areas can serve as potential enhancements for future iterations or real-world implementations.","funding_links":[],"categories":["Applications"],"sub_categories":["Games"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasvh%2Fgo-learn-vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasvh%2Fgo-learn-vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasvh%2Fgo-learn-vim/lists"}