No description
  • Dart 78.6%
  • PLpgSQL 19.3%
  • Kotlin 1.1%
  • C++ 0.4%
  • CMake 0.2%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tizian 「ティツィアーン」 1b62c8098c
docs: one repository for every app and shared package (ADR 0015)
The root AGENTS.md holds what applies to every app and package (how
work is done, Serverpod, checks with Melos and the tools, CI); Learn's
own is apps/learn/AGENTS.md, Todo's a note that it is still the
scaffold. The root README introduces the project, Learn's moves to its
folder; LICENSE.md says which licence covers which directory, Todo's
packages unlicensed until decided; one CONTRIBUTING.md. ADR 0015
records the decision; ADR 0014 and 0003 note what moved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 18:11:04 +02:00
.forgejo/workflows build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
.vscode build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
apps docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
deploy build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
docs/adr docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
packages docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
snap build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
test build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
tool build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
.dockerignore build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
.gitignore feat(deploy): sidecars beside the instance, Jellyfin the first, behind an edge network 2026-10-14 00:33:51 +02:00
AGENTS.md docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
analysis_options.yaml chore(lint): LeanCode's strict rules and a pre-push check 2026-09-29 23:06:29 +02:00
CLAUDE.md chore: scaffold the Serverpod 4 build 2026-09-24 15:32:29 +02:00
CONTRIBUTING.md docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
LICENSE.md docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00
pubspec.lock build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
pubspec.yaml build: Melos, a Dart check and every path for the single repository 2026-10-22 18:11:04 +02:00
README.md docs: one repository for every app and shared package (ADR 0015) 2026-10-22 18:11:04 +02:00

Halkyon

Halkyon's apps and the packages they share, in one repository. Each app is a Flutter app for Linux, Windows, macOS, Android and iOS with a Serverpod server of its own, offline-first, and anyone may run an instance of it: the apps, the servers and everything needed to host an instance are published.

App What it is Where
Halkyon Learn Creating, sharing and studying study material, flashcards scheduled with FSRS apps/learn/, at learn.halkyon.eu
Halkyon Todo To-dos; still Serverpod's scaffold apps/todo/

Halkyon Train and Halkyon Meditate are to follow.

Layout

  • apps/<app>/: each app's server, generated client and Flutter app.
  • packages/: what the apps share, taken by path: halkyon_ui (the look: theme, bundled Noto Sans, layout, shared widgets), halkyon_app (instances, signing in, each person's data and its sync), halkyon_base (what every server has, as a Serverpod module with its generated client halkyon_base_client: signing in, the account and its deletion, the pruning, the instance's basics), halkyon_core (low-level primitives) and halkyon_interop (contracts between apps).
  • deploy/: what runs an instance (Docker Compose: Caddy, the server, PostgreSQL), learn.halkyon.eu's today.
  • tool/: the checks, the pre-push hook and the release scripts. docs/adr/: the decisions and their reasons.

One pub workspace holds every package: one pubspec.lock, one version of each dependency. Melos runs scripts across them.

Getting started

  • Flutter v3.47.5, the version CI uses (FLUTTER_VERSION in .forgejo/workflows/ci.yaml), with each platform you build for set up by Flutter's own guides; what an app needs beyond that is in its README.
  • The Serverpod CLI v4.0.4: dart install serverpod_cli@4.0.4. Pass --no-analytics to every call; otherwise it reports the commands run to Serverpod.
  • A C++ compiler, for flutter test too: a dependency of Learn's compiles MeCab as it builds.
flutter pub get                               # every package of the workspace
dart run melos list                           # the packages
ln -s ../../tool/pre-push .git/hooks/pre-push # the checks before every push
dart run tool/check.dart                      # format, analysis, every package's tests

dart run tool/check.dart --changed-since=origin/main tests only what changed since main and what depends on it; dart run melos run test:flutter --scope=<package> one package's Flutter tests. Each server's tests start an embedded PostgreSQL (no Docker) and need test passwords in the server's git-ignored config/passwords.yaml (the module's README and each app's say which). How the code is organised and the rules it follows are in AGENTS.md and each app's own.

Licences

The servers and the server module are under the Server Side Public License 1.0, the apps, the client packages and the other shared packages under the GNU Affero General Public License 3.0 or later; Todo's packages have none yet. LICENSE.md says which covers what, CONTRIBUTING.md how to contribute.