mirror of
https://github.com/kuhyx/utils.git
synced 2026-11-13 14:10:58 +01:00
Every repo in this fleet is public, so where each value lives is a disclosure decision rather than a style choice. FirebaseProject holds apiKey + databaseUrl: these identify the *project*, and the Web API key is a public identifier by design -- it ships inside every Android APK, and the security rules, not the key, are what protect the data. Safe to bake into app source, which keeps a reinstall zero-setup. FirebaseAccount holds the email and password: these identify *a person*, so they are entered once per device and kept in the platform keystore, never in SharedPreferences and never in a repo. The uid is deliberately absent from both. Nothing client-side needs it -- the rules compare auth.uid server-side, so a wrong account is refused by the database. A local copy would add a way to be wrong without adding protection. Keyed at `firebase.account`, distinct from `sync.token` (the GitHub PAT) and `firebase.credentials` (the refresh token), so all three coexist during the mirrored cutover. 13 tests, 100% line coverage; 241 in the suite. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SJ9sxEw3ymzXNjL7SHNpJc
18 lines
316 B
YAML
18 lines
316 B
YAML
name: crdt_sync
|
|
description: >-
|
|
Shared CRDT merge scheme + GitHub-Contents-API sync transport for
|
|
cross-device apps. Pure Dart, no Flutter dependency.
|
|
version: 0.6.0
|
|
publish_to: 'none'
|
|
|
|
environment:
|
|
sdk: ^3.12.2
|
|
|
|
dependencies:
|
|
crypto: ^3.0.7
|
|
http: ^1.6.0
|
|
|
|
dev_dependencies:
|
|
lints: ^5.0.0
|
|
test: ^1.25.0
|