halkyon_base: a Serverpod module for sign-in, accounts and instance basics
What every Halkyon server has, taken from Halkyon Learn's: anonymous,
GitHub and email-code sign-in with their endpoints, an account's ways
in and its deletion, the pruning of abandoned anonymous people, of
sign-up attempts and of expired codes, and the instance's basics (the
sign-in ways offered, the source link, the minimum app build, where
people's data and its backups are). Endpoints sit under the nickname
`base`. A host configures it in one place before its pod starts: its
name for the mails, its source link, its minimum build, and hooks that
delete its own data with a person.
The tables keep Learn's names, columns and indexes, so a host moving
onto the module migrates nothing but version rows. Server package under
the SSPL, client under the AGPL, as Learn's are.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 14:28:09 +02:00
|
|
|
/// halkyon_base for a host's own code: its configuration
|
|
|
|
|
/// (`HalkyonBase.configure`), how people authenticate, the account's
|
|
|
|
|
/// deletion and the pruning, email sign-in's helpers, the instance's
|
refactor(profile): handles and profiles move into halkyon_base
People's public profiles are the instance's register's (ADR 0016), so
the module now holds them: the public_profile table (unchanged, so
Learn's migration records versions only; devices get the table empty,
as they hold every module's tables), the profile and profiles
endpoints under `base`, the handle rules, the link checks and the page
at /@handle, whose foot names the app as the host's configuration says
(profilePageNote). Deleting a person deletes their profile in the
module's core.
Hosts read profiles through the module (profileOf, profilesOf,
personWithHandle, fixHandle; saveProfile for their tests), behind an
AccountRegister that is this server's own database for now. Learn's
feedback, discussions and publishing ask it; publishing fixes the
handle just before it writes the release, outside its transaction.
Explore still joins the table in its search, so Learn holds the
register wherever it runs. Learn's app calls the module's endpoints;
a profile not found is ProfileNotFoundException. Todo's database gets
the table too (it was never deployed).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 22:20:27 +02:00
|
|
|
/// basics, people's public profiles and their pages, the instance's register
|
|
|
|
|
/// (ADR 0016), and the module's models.
|
halkyon_base: a Serverpod module for sign-in, accounts and instance basics
What every Halkyon server has, taken from Halkyon Learn's: anonymous,
GitHub and email-code sign-in with their endpoints, an account's ways
in and its deletion, the pruning of abandoned anonymous people, of
sign-up attempts and of expired codes, and the instance's basics (the
sign-in ways offered, the source link, the minimum app build, where
people's data and its backups are). Endpoints sit under the nickname
`base`. A host configures it in one place before its pod starts: its
name for the mails, its source link, its minimum build, and hooks that
delete its own data with a person.
The tables keep Learn's names, columns and indexes, so a host moving
onto the module migrates nothing but version rows. Server package under
the SSPL, client under the AGPL, as Learn's are.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 14:28:09 +02:00
|
|
|
library;
|
|
|
|
|
|
|
|
|
|
export 'src/auth/account.dart';
|
|
|
|
|
export 'src/auth/auth_config.dart';
|
|
|
|
|
export 'src/auth/code_mail.dart';
|
|
|
|
|
export 'src/auth/email.dart';
|
|
|
|
|
export 'src/auth/github.dart';
|
|
|
|
|
export 'src/auth/identified.dart';
|
|
|
|
|
export 'src/auth/scopes.dart';
|
|
|
|
|
export 'src/common/short_code.dart';
|
|
|
|
|
export 'src/generated/protocol.dart' hide Protocol;
|
|
|
|
|
export 'src/halkyon_base.dart';
|
|
|
|
|
export 'src/instance/data_location.dart';
|
|
|
|
|
export 'src/instance/source_code.dart';
|
refactor(profile): handles and profiles move into halkyon_base
People's public profiles are the instance's register's (ADR 0016), so
the module now holds them: the public_profile table (unchanged, so
Learn's migration records versions only; devices get the table empty,
as they hold every module's tables), the profile and profiles
endpoints under `base`, the handle rules, the link checks and the page
at /@handle, whose foot names the app as the host's configuration says
(profilePageNote). Deleting a person deletes their profile in the
module's core.
Hosts read profiles through the module (profileOf, profilesOf,
personWithHandle, fixHandle; saveProfile for their tests), behind an
AccountRegister that is this server's own database for now. Learn's
feedback, discussions and publishing ask it; publishing fixes the
handle just before it writes the release, outside its transaction.
Explore still joins the table in its search, so Learn holds the
register wherever it runs. Learn's app calls the module's endpoints;
a profile not found is ProfileNotFoundException. Todo's database gets
the table too (it was never deployed).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-19 22:20:27 +02:00
|
|
|
export 'src/profile/link_verification.dart';
|
|
|
|
|
export 'src/profile/profile_page.dart' show addProfilePageRoute, profilePage;
|
|
|
|
|
export 'src/profile/profile_rules.dart'
|
|
|
|
|
show
|
|
|
|
|
accountDomain,
|
|
|
|
|
avatarPath,
|
|
|
|
|
avatarStorage,
|
|
|
|
|
isHandle,
|
|
|
|
|
maxAvatarBytes,
|
|
|
|
|
operatorAccountDomain,
|
|
|
|
|
profilePageUrl,
|
|
|
|
|
reservedHandles;
|
|
|
|
|
export 'src/profile/profiles.dart';
|
|
|
|
|
export 'src/register/account_register.dart';
|