halkyon/halkyon_learn_server
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 72c15300ed
fix: Serverpod v4.0.4 and serverpod_offline_sync v0.0.10
serverpod_offline_sync v0.0.10 collects outbound changes in one
consistent snapshot, so a sync no longer fails on writes made while it
runs (upstream #84, #163), keeps checkpoints per author, so a device
clock moving backwards no longer stalls sync or resends data, and keeps
unique conflicts and foreign key defaults alike on every device. Its
tables and its messages are unchanged: no migration, and apps on v0.0.8
keep syncing. It needs Serverpod >=4.0.4 <4.1.0 (v4.0.4 is fixes only),
so the root overrides that held the workspace on one Serverpod go: each
package pins v4.0.4 itself. The generated code is identical under the
v4.0.4 CLI, which CI now uses.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-09 18:09:27 +02:00
..
bin chore: scaffold the Serverpod 4 build 2026-09-24 15:32:29 +02:00
config feat(server): studysets, the first synced table (migration pending) 2026-09-30 20:38:14 +02:00
dictionaries feat(server): dictionaries, loaded from files and searched 2026-10-09 18:09:25 +02:00
lib feat(app): tags keep their case; dictionary tags read JLPT-N5, Noun 2026-10-09 18:09:27 +02:00
migrations feat(server): dictionaries, loaded from files and searched 2026-10-09 18:09:25 +02:00
test/integration chore(server): generated code as the generator writes it 2026-10-09 18:09:26 +02:00
.gitignore feat(server): dictionaries, loaded from files and searched 2026-10-09 18:09:25 +02:00
analysis_options.yaml build: Serverpod v4.0.3 2026-09-30 20:38:15 +02:00
CHANGELOG.md chore: scaffold the Serverpod 4 build 2026-09-24 15:32:29 +02:00
dart_test.yaml chore: scaffold the Serverpod 4 build 2026-09-24 15:32:29 +02:00
Dockerfile feat(curator): turn JMdict and the JLPT lists into dictionary files 2026-10-09 18:09:25 +02:00
LICENSE docs: licences and how to contribute 2026-09-30 20:38:16 +02:00
pubspec.yaml fix: Serverpod v4.0.4 and serverpod_offline_sync v0.0.10 2026-10-09 18:09:27 +02:00
README.md feat(server): dictionaries, loaded from files and searched 2026-10-09 18:09:25 +02:00

halkyon_learn_server

This is the starting point for your Serverpod server.

Start your server by running:

cd halkyon_learn
serverpod start

When you are finished, you can shut down the running server with Q.

Dictionaries

The dictionaries people look words up in (JMdict, …) are reference data the server holds for everyone. They come as dictionary files, which halkyon_learn_curator makes from the sources' downloads (its README says how). At every start, the server loads the files in its dictionaries folder that changed since they were last loaded (by their SHA-256): in the background, a source at a time, and all at once, so searches meanwhile still find the old entries. A file it can't read is logged and left out.

  • Development: put the file into halkyon_learn_server/dictionaries/ and restart serverpod start.
  • An instance: put it into deploy/dictionaries/ beside compose.yaml (mounted read-only as /app/dictionaries) and restart the server container. DICTIONARIES_DIR names another folder.

JMdict in English, with the JLPT levels, is about 17 MB gzipped and takes the server half a minute to load (219,000 entries). Its licence (CC BY-SA 4.0) asks for attribution: the app lists the credits each file carries.

Licence

Copyright (C) 2026 The Halkyon Learn contributors

Licensed under the Server Side Public License, version 1 (SSPL-1.0); the full text is in LICENSE.