Files

50 lines
2.5 KiB
Markdown

# `:data:resources`
Owns the app's Compose Multiplatform resources (`Res`) and exposes them to other modules through the
`ResourceReader` interface, so consumer modules stay free of any platform/resource dependency.
## Un-versioned content
Some content is **not** checked into git (it is large and/or licensed course material). It must be
present locally under `src/commonMain/composeResources/files/` for the app to work, but is excluded
via `.gitignore`:
| Content | Files | Git-ignored by |
|------------------|-----------------------|-------------------------------|
| Audio recordings | `Chom_bev_*.m4a` | `*.m4a` |
| Subtitles | `Chom_bev_*_st_*.lrc` | `*.lrc` |
| Record catalogue | `records.json` | explicit path in `.gitignore` |
A fresh checkout will not contain these files; obtain them from another team member / the asset store
and drop them into `src/commonMain/composeResources/files/`.
## Records data (`records.json`)
The list of lessons shown in the app is loaded at runtime from
`src/commonMain/composeResources/files/records.json` (read via `ResourceReader`, then parsed with
`kotlinx.serialization` in `:data:records`). It is a JSON array of objects:
| Field | Type | Notes |
|-----------------------|----------|----------------------------------------------|
| `emoji` | string | Shown next to the record to illustrate it. |
| `transcription` | string | Breton title. |
| `translation` | string? | French translation (optional). |
| `audio` | string | Resource path, e.g. `files/Chom_bev_01.m4a`. |
| `subtitle` | string | Breton subtitle path (`.lrc`). |
| `translationSubtitle` | string? | Translation subtitle path (optional). |
The record `id`/`index` are assigned from each entry's 1-based position in the array.
**Getting started on a fresh checkout:** copy the versioned template and fill it in (or replace it
with the real catalogue):
```bash
cp data/resources/src/commonMain/composeResources/files/records.example.json \
data/resources/src/commonMain/composeResources/files/records.json
```
`records.example.json` is versioned and documents the schema. `records.json` is git-ignored.
Adding/reordering a record is a pure data edit in `records.json` — no code change needed. Make sure
the referenced `.m4a`/`.lrc` files exist in the same `files/` directory.