Files

: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):

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.