{"id":15978709,"url":"https://github.com/bog-walk/self-quest","last_synced_at":"2025-04-04T18:14:03.398Z","repository":{"id":241489159,"uuid":"553287149","full_name":"bog-walk/self-quest","owner":"bog-walk","description":":books: Desktop study quiz generator built with Compose for Desktop, backed by Ktor \u0026 Exposed.","archived":false,"fork":false,"pushed_at":"2024-12-04T02:01:30.000Z","size":1457,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T03:22:17.273Z","etag":null,"topics":["compose-for-desktop","exposed","h2-database","hikaricp","jetpack-compose","kotlin","ktor","ktor-client","ktor-server"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/bog-walk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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":"2022-10-18T01:57:07.000Z","updated_at":"2024-12-04T02:01:34.000Z","dependencies_parsed_at":"2024-05-28T18:45:24.864Z","dependency_job_id":null,"html_url":"https://github.com/bog-walk/self-quest","commit_stats":null,"previous_names":["bog-walk/self-quest"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bog-walk%2Fself-quest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bog-walk%2Fself-quest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bog-walk%2Fself-quest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bog-walk%2Fself-quest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bog-walk","download_url":"https://codeload.github.com/bog-walk/self-quest/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247226194,"owners_count":20904465,"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":["compose-for-desktop","exposed","h2-database","hikaricp","jetpack-compose","kotlin","ktor","ktor-client","ktor-server"],"created_at":"2024-10-07T23:22:10.277Z","updated_at":"2025-04-04T18:14:03.379Z","avatar_url":"https://github.com/bog-walk.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :rocket: Self Quest :star::books:\n\nEnhance your study strategy by creating your own questions using a single window desktop application built\nwith **JetBrains** [Compose for Desktop](https://www.jetbrains.com/lp/compose-desktop/), [Ktor](https://ktor.io/), and [Exposed](https://github.com/JetBrains/Exposed).\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"screenshots/sq_final_demo.gif\" alt=\"Self Quest desktop basic demo\"/\u003e\n\u003c/div\u003e\n\n## :memo: Desktop App details\n\nA minimalist desktop application for generating quiz collections, using dual-mode interactive flash cards.\n\nEvery quiz question comes with an optional review slot that accepts detailed text (currently only with basic formatting), \nas well as links to external resources.\n\nSwitching to quiz mode currently only blocks access to the review slots and forces progression forward by requiring a \nchosen answer for each question.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"screenshots/sq_quiz_demo.gif\" alt=\"Self Quest desktop quiz demo\"/\u003e\n\u003c/div\u003e\n\n## :briefcase: Desktop features\n\n- UI events trigger Ktor HTTP client [`SQClient`](common/src/commonMain/kotlin/dev/bogwalk/client/SQClient.kt) in common \nmodule to make requests to server\n- `Tab` layout allows easy switching between question and review slots or navigating an entire collection in either slot\n- Pop-up dialogs triggered by either requesting data deletion or attempting to leave a form without saving\n- Custom input forms with input validation\n- Robust UI (unit and integration) test suites\n\n## :memo: Server details\n\nA self-hosted Ktor server application with persistence via an [H2 embedded database](https://www.h2database.com/html/features.html#connection_modes). \nCollections are saved in `build/demodb.mv.db`, based on specifications set in \n[`application.conf`](server/src/main/resources/application.conf).\n\n## :briefcase: Server features\n\n- [Exposed](https://github.com/JetBrains/Exposed) framework's typesafe DSL\n- JDBC connection pooling using [HikariCP](https://github.com/brettwooldridge/HikariCP) framework\n- Type-safe routing using the `Resources` plugin in[`Resources.kt`](common/src/commonMain/kotlin/dev/bogwalk/routes/Resources.kt)\n- JSON deserialization into data objects using the `ContentNegotiation` plugin\n- Both server DAO unit tests and routing tests using a custom `testApplication`\n\n## :computer: Run desktop application\n\n- Clone the repository\n\n- Open the project in IntelliJ IDEA and run `Server.kt` from the server module\n\n- Once the server has started, run `Main.kt` from the desktop module\n\nNote that the server will automatically shut down as a part of the application exit process.\n\n## :microscope: Run tests\n\nClone the repository then pick an option:\n\n- Open the project in IntelliJ IDEA then choose specific tests using gutter icons in either the desktop or server module\n\n- Open the Gradle toolbar and select `server/Tasks/verification/test` to run server-side tests or select \n`desktop/Tasks/verification/test` to run client-side tests \n\n- `./gradlew :server:test` or `./gradlew :desktop:test` from an open terminal in the root of the project","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbog-walk%2Fself-quest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbog-walk%2Fself-quest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbog-walk%2Fself-quest/lists"}