{"id":20852408,"url":"https://github.com/ryouze/aegyo","last_synced_at":"2025-03-12T13:11:07.366Z","repository":{"id":258408801,"uuid":"873869016","full_name":"ryouze/aegyo","owner":"ryouze","description":"Cross-platform GUI app for learning Korean Hangul.","archived":false,"fork":false,"pushed_at":"2025-02-25T14:33:41.000Z","size":5987,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T15:19:46.144Z","etag":null,"topics":["cmake","cmake-fetchcontent","cpp","cross-platform","gui","korean","korean-language","korean-letters","learning","sfml"],"latest_commit_sha":null,"homepage":"https://ryouze.net/","language":"C++","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/ryouze.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-10-16T21:25:19.000Z","updated_at":"2025-02-25T14:33:46.000Z","dependencies_parsed_at":"2024-12-25T03:21:30.003Z","dependency_job_id":"b73bc7cc-141b-4ece-9ea3-8c9c08f8f106","html_url":"https://github.com/ryouze/aegyo","commit_stats":null,"previous_names":["ryouze/aegyo"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryouze%2Faegyo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryouze%2Faegyo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryouze%2Faegyo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryouze%2Faegyo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryouze","download_url":"https://codeload.github.com/ryouze/aegyo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243222205,"owners_count":20256227,"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":["cmake","cmake-fetchcontent","cpp","cross-platform","gui","korean","korean-language","korean-letters","learning","sfml"],"created_at":"2024-11-18T03:17:34.084Z","updated_at":"2025-03-12T13:11:07.360Z","avatar_url":"https://github.com/ryouze.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aegyo\n\n[![CI](https://github.com/ryouze/aegyo/actions/workflows/ci.yml/badge.svg)](https://github.com/ryouze/aegyo/actions/workflows/ci.yml)\n[![Release](https://github.com/ryouze/aegyo/actions/workflows/release.yml/badge.svg)](https://github.com/ryouze/aegyo/actions/workflows/release.yml)\n![Release version](https://img.shields.io/github/v/release/ryouze/aegyo)\n\naegyo is a cross-platform GUI app for learning Korean Hangul.\n\n![Screenshot](assets/screenshot.jpeg)\n\n\n## Motivation\n\nWhen I was learning Japanese kana, I liked the idea of drilling the characters into my memory through pure brute-force repetition. I found an iOS app called [Kana School](https://apps.apple.com/us/app/kana-school-japanese-letters/id1214626499) that did exactly that. Unfortunately, no similar app existed for Korean Hangul, so I decided to create one myself.\n\n\n## Features\n\n- Written in modern C++ (C++17).\n- Verified for accuracy by a Korean language teacher.\n- Comprehensive documentation with doxygen-style comments.\n- Automatic third-party dependency management using CMake's [FetchContent](https://www.foonathan.net/2022/06/cmake-fetchcontent/).\n- No missing STL headers thanks to [header-warden](https://github.com/ryouze/header-warden).\n\n\n### To-Do\n\n- [x] Upgrade to SFML v3.0.\n  - [ ] Wait for v3.0.x release for potential bug fixes.\n  - [x] Research why normal exit on macOS causes `libc++abi: terminating due to uncaught exception of type std::__1::system_error: mutex lock failed: Invalid argument`.\n    - ~~[ ] Possibly open an issue on SFML's GitHub.~~\n    - [x] Refactor font loading code to make it less ugly.\n- [x] Move the ugly category code from `app.cpp` to `ui`.\n- [ ] Create a hint button in the middle of the answer buttons that displays hint on click or on space press.\n- [ ] Find out how to properly package macOS binaries instead of copying icons and resources via `add_custom_command`.\n- [ ] Add version information to Windows binary.\n\n\n## Tested Systems\n\nThis project has been tested on the following systems:\n\n- macOS 15.2 (Sequoia)\n- Manjaro 24.0 (Wynsdey)\n- Windows 11 23H2\n\nAutomated testing is also performed on the latest versions of macOS, GNU/Linux, and Windows using GitHub Actions.\n\n\n## Pre-built Binaries\n\nPre-built binaries are available for macOS (ARM64), GNU/Linux (x86_64), and Windows (x86_64). You can download the latest version from the [Releases](../../releases) page.\n\nTo remove macOS quarantine, use the following commands:\n\n```sh\nxattr -d com.apple.quarantine aegyo-macos-arm64.app\nchmod +x aegyo-macos-arm64.app\n```\n\nOn Windows, the OS might complain about the binary being unsigned. You can bypass this by clicking on \"More info\" and then \"Run anyway\".\n\n\n## Requirements\n\nTo build and run this project, you'll need:\n\n- C++17 or higher\n- CMake\n\n\n## Build\n\nFollow these steps to build the project:\n\n1. **Clone the repository**:\n\n    ```sh\n    git clone https://github.com/ryouze/aegyo.git\n    ```\n\n2. **Generate the build system**:\n\n    ```sh\n    cd aegyo\n    mkdir build \u0026\u0026 cd build\n    cmake ..\n    ```\n\n    Optionally, you can disable compile warnings by setting `ENABLE_COMPILE_FLAGS` to `OFF`:\n\n    ```sh\n    cmake .. -DENABLE_COMPILE_FLAGS=OFF\n    ```\n\n3. **Compile the project**:\n\n    To compile the project, use the following command:\n\n    ```sh\n    cmake --build . --parallel\n    ```\n\nAfter successful compilation, you can run the program using `./aegyo` (`open aegyo.app` on macOS). However, it is highly recommended to install the program, so that it can be run from any directory. Refer to the [Install](#install) section below.\n\n\u003e [!TIP]\n\u003e The mode is set to `Release` by default. To build in `Debug` mode, use `cmake .. -DCMAKE_BUILD_TYPE=Debug`.\n\n\n## Install\n\nIf not already built, follow the steps in the [Build](#build) section and ensure that you are in the `build` directory.\n\nTo install the program, use the following command:\n\n```sh\nsudo cmake --install .\n```\n\nOn macOS, this will install the program to `/Applications`. You can then run `aegyo.app` from the Launchpad, Spotlight, or by double-clicking the app in Finder.\n\n\n## Usage\n\nTo start the program, simply run the `aegyo` executable (`aegyo.app` on macOS, `open /Applications/aegyo.app` to run from the terminal).\n\n\n### Controls\n\nYou can select the correct answer by clicking on it or by pressing the corresponding number key on your keyboard (1, 2, 3, 4).\n\nThe buttons in the top right corner toggle the vocabulary category:\n\n- `Vow` for Basic Vowels\n- `Con` for Basic Consonants\n- `DCon` for Double Consonants\n- `CompV` for Compound Vowels\n\nAll categories are enabled by default. You can disable a category by clicking on the corresponding button.\n\n\u003e [!TIP]\n\u003e If you're a beginner, start with the `Vow` categories and gradually enable the other categories as you continue to learn.\n\n\n## Testing\n\nTests are included in the project but are not built by default.\n\nTo enable and build the tests manually, run the following commands from the `build` directory:\n\n```sh\ncmake .. -DBUILD_TESTS=ON\ncmake --build . --parallel\nctest --output-on-failure\n```\n\n\n## Credits\n\n- [fmt](https://github.com/fmtlib/fmt)\n- [Language](https://macosicons.com/#/u/Bonjour)\n- [Let's Learn Hangul!](http://letslearnhangul.com/)\n- [Nanum Gothic](https://fonts.google.com/specimen/Nanum+Gothic)\n- [Simple and Fast Multimedia Library 3](https://github.com/sfml/sfml)\n\n\n## Contributing\n\nAll contributions are welcome.\n\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryouze%2Faegyo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryouze%2Faegyo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryouze%2Faegyo/lists"}