org.poca.ollin
Ceremonies, healing practices, and cultural articles: an open-source reader, never the owner, of community content, with optional Mukurtu integration that honors cultural protocols.
Ollin is a Vite + React app in an Android WebView shell. In the current build, PAC-shaped content is bundled at build time (a glob of per-item card.json + article.json / slides.json); reading the same layout live from the PAC card is the documented production model. The only native JS bridge today is haptics. Plan content against the schemas below; they are identical either way.
| type | Companion file | Rendered as |
|---|---|---|
| discovery | slides.json | Full-screen swipeable story. |
| article | article.json (body_html, gallery, keywords) | Long-form reader. |
| artifact | article.json with an artifact record | Museum-style artifact view with provenance. |
Universal POCA keys (card_id, app_id: "ollin", type, slug, title, description, image, image_thumbnail, updated_at, featured) plus Ollin extensions:
| Key | Shape |
|---|---|
| kind | string |
| duration_minutes | number, optional |
| taxonomy | { category, topics[], modality, collection? } |
| community | { nation, territory?, contributor, contributor_role?, avatar? } |
| theme | palette object driving the item’s accent colors |
Items whose card_id starts with mukurtu_ are classified as Mukurtu-sourced; everything else is PAC-sourced.
A working Drupal JSON:API client reads digital_heritage nodes from a community’s Mukurtu site: list, fetch, communities, and a per-community sync (persistence of synced items is still stubbed). Cultural safety is enforced twice: items hydrate their TK Labels and access protocols, and a defense-in-depth protocol gate refuses to render anything whose protocols don’t match the viewer. PAC is primary; Mukurtu is optional and supplementary.