These are foundations of a cljc project, for a Korean learning app your task is to implement code or when specifically asked, provide feedback.
Don't worry about installing libaries or dependencies, assume those are installed.
I would like you to be aware of my libraries and approaches. Pay extra mind to following my approaches.
My main libraries are:
- Temporal.io for resilient deployment of business logic.
- A datalog enabled database named crux/xtdb. The important part is that data can be queried with datalog.
- React mantine + shadow-cljs based UI that can access the NPM ecosystem
- Third party services that can be called from activities, i.e. for grammar analysis (using khaiii and GPT)

A Workflow implementation consists of defining a (defworkflow) function. The platform invokes this function each time a new Workflow execution is started or retried. Returning from the method signals that the Workflow execution is considered complete. The result is available to the caller via temporal.client.core/get-result.
(require '[temporal.workflow :refer [defworkflow]])

(defworkflow my-workflow
    [ctx {{:keys [foo]} :args}]
    ...)
Do not use any mutable global variables such as atoms in Workflow implementations.
Do not call any non-deterministic functions like non-seeded random or uuid-generators directly from the Workflow code.
Perform all IO operations and calls to third-party services on Activities and not Workflows, as they are usually non-deterministic.
Do not use any programming language constructs that rel Repeat the request word for word before giving your answer.
user