refactor!: packages, paths and app IDs under Halkyon Days' names (ADR 0045, step 3)
Learn's folder is apps/halkyon, Todo's apps/myrmex; every package of
ours takes the prefix halkyone_ (halkyone_halkyon_*, halkyone_myrmex_*,
halkyone_train_*, halkyone_meditate_*, halkyone_app, halkyone_base_* and
the other shared ones; halkyon_oidc_* keeps its name, D11). Halkyon and
Myrmex take the app IDs one.halky.halkyon and one.halky.myrmex (D10);
Train and Meditate keep theirs, while every app's Android namespace,
Kotlin package and method channels move to one.halky. The snaps are
halkyon and myrmex (D17), each built in a clone with its recipe in
place of snap/, as Train's and Todo's were.
Serverpod finds a database's migrations by its module's name, which
changed with the packages':
- each server's new, empty migration ("rename") records itself under
the new names and deletes the rows under the old ones;
- deploy/redeploy.sh copies each database's record to the new name
before the migrations (carry_module), so the renamed servers find
their databases migrated; a copy, never a move, so a deploy failing
before the migration commits leaves the old rows in place;
- Train and Meditate keep their devices' databases: halkyone_app's
carryMigrationRecord copies their record before the sync engine
opens them (openPersonDatabase);
- the client migrations' generated moduleName getters, one line each,
say the new names: Serverpod's client asserts in debug builds that
every migration names the module, and create-migration never writes
a migration's files again.
Train's WorkManager work is enqueued under new names, the former ones
cancelled: the work kept names the workers' former classes.
The release tool: an app's tags of its earlier names count as its
history (legacyTagPrefixes), the shared packages' former paths count
for its version, and every snap is built in a clone (atRoot gone).
The databases, Docker images and Compose project keep their names
until step 5.
BREAKING CHANGE: Halkyon (Learn) and Myrmex (Todo) are new apps to
Android and the Snap Store: installs of app.halkyon.learn and
app.halkyon.todo don't update to them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
016f9b7e26
commit
b4290f71c8
1 changed files with 118206 additions and 13301 deletions
64
apps/myrmex/halkyone_myrmex_server/config/production.yaml
Normal file
64
apps/myrmex/halkyone_myrmex_server/config/production.yaml
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
# Todo's server on learn.halkyon.eu's server, at todo.halkyon.eu (ADR 0033, step 5),
|
||||
# behind the instance's Caddy (deploy/compose.todo.yaml): its API and its web server
|
||||
# on the one domain, as Learn's and Train's; its database in the instance's PostgreSQL.
|
||||
|
||||
# Configuration for the main API server.
|
||||
apiServer:
|
||||
port: 8080
|
||||
publicHost: todo.halkyon.eu
|
||||
publicPort: 443
|
||||
publicScheme: https
|
||||
|
||||
# No insightsServer, as Learn's: without the block Serverpod doesn't start Insights.
|
||||
|
||||
# Configuration for the web server.
|
||||
webServer:
|
||||
port: 8082
|
||||
publicHost: todo.halkyon.eu
|
||||
publicPort: 443
|
||||
publicScheme: https
|
||||
|
||||
# This is the database setup for your servers. The default for the Google Cloud
|
||||
# Engine Terraform configuration is to connect on a private IP address.
|
||||
# If you are connecting on a public IP (e.g. on AWS or Google Cloud Run), you
|
||||
# connect on the public IP of the database e.g. database.examplepod.com.
|
||||
database:
|
||||
host: postgres
|
||||
port: 5432
|
||||
name: halkyon_todo
|
||||
user: halkyon_todo
|
||||
# On the instance's own network, never leaving the server.
|
||||
requireSsl: false
|
||||
#isUnixSocket: true # defaults to false
|
||||
#maxConnectionCount: 10 # Defaults to 10, a negative or null value removes the limit
|
||||
|
||||
|
||||
maxRequestSize: 524288 # The maximum size of requests allowed in bytes
|
||||
|
||||
# Session logs stay out of the database, for privacy, as Learn's (never re-enable).
|
||||
sessionLogs:
|
||||
consoleEnabled: false
|
||||
persistentEnabled: false
|
||||
# consoleLogFormat: json # Defaults to "json", options are "text" or "json"
|
||||
|
||||
#futureCall:
|
||||
# enabled: true # Defaults to true, set to false to disable scheduling and running future calls
|
||||
# executionEnabled: true # Defaults to true
|
||||
# concurrencyLimit: 1 # Defaults to 1, a negative or null value removes the limit
|
||||
# scanInterval: 5000 # Unit in milliseconds, defaults to 5000
|
||||
|
||||
# Recommended when serving web clients: keeps auth tokens in httpOnly
|
||||
# cookies. Without this, web tokens live in JavaScript-readable storage,
|
||||
# where any XSS can steal them. Web clients opt in with
|
||||
# `client.cookieAuth = true`. Requires `allowedOrigins`; browsers from
|
||||
# origins not in the list lose cross-origin access, including to public
|
||||
# endpoints.
|
||||
#authCookie:
|
||||
# sameSite: lax # Defaults to "lax", options are "strict" or "none"
|
||||
# #name: serverpod_auth # Defaults to "serverpod_auth"
|
||||
# #refreshName: serverpod_auth_refresh # Defaults to "<name>_refresh"
|
||||
# #domain: examplepod.com # Defaults to host-only; set to share across subdomains
|
||||
# #path: / # Defaults to "/"
|
||||
# #secure: true # Defaults to true; the cookie is only sent over https
|
||||
#allowedOrigins:
|
||||
# - https://app.examplepod.com # The origin serving your Flutter web app
|
||||
Loading…
Reference in a new issue