Enhance your study strategy by creating your own questions using a single window desktop application built with JetBrains Compose for Desktop, Ktor, and Exposed.
A minimalist desktop application for generating quiz collections, using dual-mode interactive flash cards.
Every quiz question comes with an optional review slot that accepts detailed text (currently only with basic formatting), as well as links to external resources.
Switching to quiz mode currently only blocks access to the review slots and forces progression forward by requiring a chosen answer for each question.
- UI events trigger Ktor HTTP client
SQClientin common module to make requests to server Tablayout allows easy switching between question and review slots or navigating an entire collection in either slot- Pop-up dialogs triggered by either requesting data deletion or attempting to leave a form without saving
- Custom input forms with input validation
- Robust UI (unit and integration) test suites
A self-hosted Ktor server application with persistence via an H2 embedded database.
Collections are saved in build/demodb.mv.db, based on specifications set in
application.conf.
- Exposed framework's typesafe DSL
- JDBC connection pooling using HikariCP framework
- Type-safe routing using the
Resourcesplugin inResources.kt - JSON deserialization into data objects using the
ContentNegotiationplugin - Both server DAO unit tests and routing tests using a custom
testApplication
-
Clone the repository
-
Open the project in IntelliJ IDEA and run
Server.ktfrom the server module -
Once the server has started, run
Main.ktfrom the desktop module
Note that the server will automatically shut down as a part of the application exit process.
Clone the repository then pick an option:
-
Open the project in IntelliJ IDEA then choose specific tests using gutter icons in either the desktop or server module
-
Open the Gradle toolbar and select
server/Tasks/verification/testto run server-side tests or selectdesktop/Tasks/verification/testto run client-side tests -
./gradlew :server:testor./gradlew :desktop:testfrom an open terminal in the root of the project

