Repositori publik untuk artifact kamus offline aplikasi SambasKu (Kamus Digital Sambas-Indonesia).
Ini bukan production database Turso, bukan backup akun, dan
bukan tempat menyimpan token. Hanya salinan sanitasi korpus
published yang boleh diunduh klien (mobile / kelak web) lewat HTTPS.
Kontrak strategi: docs/backlogs/MOBILE_LOCAL_STRATEGI.md di monorepo
(§16.3 allowlist, §17 tools, §18 rilis, §19 Fase DS sebelum B).
| Ada di git | Tidak di git (Release assets) |
|---|---|
| README, LICENSE, logo | database.sqlite.gz |
schema/ (kontrak DDL / allowlist) |
manifest.json |
metadata/active.json (pointer rilis aktif) |
SHA256SUMS |
database/
├── README.md
├── LICENSE
├── logo.png
├── package.json
├── scripts/ # export + validate
├── schema/
│ ├── v1.md # kontrak schema_version = 1
│ └── QUESTIONS.md # pertanyaan yang harus dikunci sebelum export
├── metadata/
│ ├── active.example.json
│ └── active.json # diisi saat Release v1 hidup
└── (GitHub Release tag vN)
├── database.sqlite.gz
├── manifest.json
└── SHA256SUMS
Production DB (privat, Turso)
│ export allowlist (`scripts/` + secrets / .env lokal)
▼
GitHub Release di repo ini (imutabel per vN)
│ HTTPS
▼
SQLite di perangkat (replica lokal)
Arah panah satu arah. Repo ini tidak pernah mengisi production.
Pointer aktif (mudah rollback tanpa menghapus tag lama):
https://raw.githubusercontent.com/sambasku/database/main/metadata/active.json
Asset per rilis (contoh):
https://github.com/sambasku/database/releases/download/v1/manifest.json
https://github.com/sambasku/database/releases/download/v1/database.sqlite.gz
https://github.com/sambasku/database/releases/download/v1/SHA256SUMS
Klien memverifikasi sha256 di manifest sebelum mengganti DB lokal. Gagal verify = tetap pakai DB lama.
| Aktor | Cara |
|---|---|
| Pipeline export (Fase DS) | scripts/ di repo ini → buat GitHub Release + update active.json |
| Manusia / admin (Fase D) | Console / CLI memicu pipeline yang sama |
| Mobile / web publik | Hanya unduh HTTPS - tanpa token DB |
Fine-grained PAT (Contents / Releases write) hanya di CI monorepo privat, bukan di app klien.
- Tidak menyimpan tabel
users, email, password, session, OTP, token - Tidak menyimpan kontribusi pending, audit, vote, bookmark, inbox
- Tidak commit file
.sqlite/.gzke branchmain(lihat.gitignore) - Tidak menyamakan "Release dataset" dengan "Backup production"
- Tidak menerima koneksi Turso dari HP / browser publik
- Kontrak saat ini:
schema/v1.md - Pertanyaan yang harus dikunci:
schema/QUESTIONS.md - Naik
schema_versionhanya jika breaking; app lama menolak artifact baru lewatmin_app_version/ cek schema, tetap di DB lama
| Langkah | Status |
|---|---|
| Repo publik + README | Ada |
| Schema v1 dikunci | Ya - schema/v1.md + QUESTIONS.md |
| Script export | scripts/ di repo ini - pnpm dataset:export |
| Tes validate (forbidden cols) | Ada - pnpm test |
| Actions Release | Ada - workflow_dispatch export-release.yml |
Release v1 + active.json |
Release v1 hidup; push scripts + workflow ke main, lalu re-run export berisi data |
| Fase B Mobile consume | Ditunda sampai DS hijau |
Dari folder root repo ini (butuh DATABASE_URL staging):
cp .env.example .env # isi DATABASE_URL + DATABASE_AUTH_TOKEN
pnpm install
pnpm dataset:export
# output: tmp/dataset-export/
# database.sqlite
# database.sqlite.gz
# manifest.json
# SHA256SUMSEnv opsional: DATASET_RELEASE_VERSION, DATASET_CHANNEL, DATASET_OUT_DIR,
DATASET_MIN_APP_VERSION.
Secret Turso: lokal di .env (gitignored); CI di GitHub Actions
secrets repo ini. Jangan commit token.
Workflow: .github/workflows/export-release.yml
(workflow_dispatch).
- Set secrets di repo ini:
DATABASE_URL-libsql://…(staging dulu)DATABASE_AUTH_TOKEN
- Actions → Export & Release Dataset → Run workflow
- Pilih
channel, opsionalrelease_version(kosong = active+1) dry_run=trueuntuk test export tanpa Release/commit
Job akan: pnpm test → export → (skip jika sha sama) → GitHub Release
vN + update metadata/active.json.
Setelah artifact siap (CLI atau Actions), pointer aktif ada di
metadata/active.json.
Kontrak strategi monorepo: docs/backlogs/MOBILE_LOCAL_STRATEGI.md
(§16.3 allowlist, §17 tools, §18 rilis, §19 Fase DS).
Lihat LICENSE. Isi korpus bahasa (lemma, arti, contoh) mengikuti kebijakan editorial SambasKu; artifact teknis di repo ini memakai lisensi repo kecuali dinyatakan lain di Release notes.
