Ikna is an learning web application based on flashcards and spaced repetition, akin to Anki. It provides a modern web interface with a self-hosting server to create and review cards for learning languages, preparing for exams, or anything else that requires memorizing and long-term retention.
Copy the source code in a folder and make it your working directory. Then, set up the necessary packages in the client folder with npm init and run the app.
cd .\client\
npm init
npm run devIn a separate terminal, innitizlize server packages, then run it.
cd .\server\
npm init
node app.mjsNow you should be able to access the web interface by http://localhost:5173/.
Important
There are two config.EXAMPLE.json files in /client and /server folders accordingly. Make sure to rename both files to config.json.
serverBaseUrl— URL of the server API.http://127.0.0.1:3000/apiby default.
db.host— domain name to access database. If the database is hosted on the same machine as the server, it should stay unchanged.localhostby default.db.port— port to access database.3000by default.db.user— MySQL username to be used to access the app's database.rootby default.db.password— MySQL password for the chosen user. Empty by default.db.name— MySQL database name.iknaby default.db.schemaLocation— location of the file that contains the innitial database schema that will be applied on the first run. Changing this value is not recommended../schema.sqlby default.db.tableCleanup(testing only) — when settrue, the database tables will be truncated on every run.falseby default.secretKeySize— the number of random bytes that will be used to sign authentification tokens. Those bytes are saved assecret.keyon the first run.128by default.jwtExpirationTime- the time allowed for tokens to stay valid before expiring.1dby default.
