# atomicwebai/ocaris architecture

> Architecture diagram of the GitHub repository atomicwebai/ocaris, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/atomicwebai/ocaris
- Repository: https://github.com/atomicwebai/ocaris

## Overview

Ocaris is a React web app for reading Eucharistic prayers, Communion and Final Rites, plus date-based daily liturgy. Users enter through the home page to search or choose a section, then read liturgical text; the daily-liturgy page also selects a date and fetches readings. A shared viewer formats text according to reading preferences, which users adjust in the preferences modal and persist in browser localStorage. The daily-liturgical API call is documented, but its implementation is only partially sampled, so that relationship is shown as documented rather than verified in source.

Main entry points: [`src/App.jsx`](https://github.com/atomicwebai/ocaris/blob/main/src/App.jsx) (App routes), [`src/pages/PrayerPage.jsx`](https://github.com/atomicwebai/ocaris/blob/main/src/pages/PrayerPage.jsx) (Eucharistic prayers), [`src/pages/CommunionPage.jsx`](https://github.com/atomicwebai/ocaris/blob/main/src/pages/CommunionPage.jsx) (Communion rite), [`src/components/LiturgicalViewer.jsx`](https://github.com/atomicwebai/ocaris/blob/main/src/components/LiturgicalViewer.jsx) (Liturgical text viewer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_app["App routes<br/>[App.jsx]"]
  node_header["Navigation header<br/>[Header.jsx]"]
end

subgraph group_liturgy["Liturgical content"]
  node_home["Home and search<br/>[HomePage.jsx]"]
  node_prayer["Eucharistic prayers<br/>[PrayerPage.jsx]"]
  node_prayerdata["Prayer collection<br/>[oracoes.js]"]
  node_communion["Communion rite<br/>[CommunionPage.jsx]"]
  node_communiondata["Communion text<br/>[ritoComunhao.js]"]
  node_final["Final rites<br/>[FinalRitesPage.jsx]"]
  node_finaldata["Blessing texts<br/>[ritosFinais.js]"]
  node_daily["Daily liturgy"]
end

subgraph group_reading["Reading experience"]
  node_viewer["Liturgical text viewer"]
end

subgraph group_settings["Reading preferences"]
  node_preferences["Preferences modal"]
  node_settings["Settings context"]
end

node_reader(("Reader"))
node_api{{"Liturgia public API"}}
node_storage[("Browser localStorage")]

node_reader -->|"opens app"| node_app
node_app -->|"renders"| node_header
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_prayer
node_app -->|"routes to"| node_communion
node_app -->|"routes to"| node_final
node_app -->|"routes to"| node_daily
node_app -->|"renders"| node_preferences
node_home -->|"filters and links"| node_prayerdata
node_prayer -->|"selects prayer"| node_prayerdata
node_prayer -->|"renders text"| node_viewer
node_prayer -->|"links next"| node_communion
node_communion -->|"renders text"| node_communiondata
node_communion -->|"renders text"| node_viewer
node_final -->|"selects blessing"| node_finaldata
node_final -->|"renders text"| node_viewer
node_daily -.->|"fetches date liturgy"| node_api
node_reader -->|"searches and selects"| node_home
node_reader -->|"selects date"| node_daily
node_header -->|"reads and updates"| node_settings
node_preferences -->|"updates preferences"| node_settings
node_viewer -->|"reads display settings"| node_settings
node_settings -->|"persists settings"| node_storage

click node_app "https://github.com/atomicwebai/ocaris/blob/main/src/App.jsx"
click node_header "https://github.com/atomicwebai/ocaris/blob/main/src/components/Header.jsx"
click node_home "https://github.com/atomicwebai/ocaris/blob/main/src/pages/HomePage.jsx"
click node_prayer "https://github.com/atomicwebai/ocaris/blob/main/src/pages/PrayerPage.jsx"
click node_prayerdata "https://github.com/atomicwebai/ocaris/blob/main/src/data/oracoes.js"
click node_communion "https://github.com/atomicwebai/ocaris/blob/main/src/pages/CommunionPage.jsx"
click node_communiondata "https://github.com/atomicwebai/ocaris/blob/main/src/data/ritoComunhao.js"
click node_final "https://github.com/atomicwebai/ocaris/blob/main/src/pages/FinalRitesPage.jsx"
click node_finaldata "https://github.com/atomicwebai/ocaris/blob/main/src/data/ritosFinais.js"
click node_daily "https://github.com/atomicwebai/ocaris/blob/main/src/pages/DailyLiturgyPage.jsx"
click node_viewer "https://github.com/atomicwebai/ocaris/blob/main/src/components/LiturgicalViewer.jsx"
click node_preferences "https://github.com/atomicwebai/ocaris/blob/main/src/components/PreferencesModal.jsx"
click node_settings "https://github.com/atomicwebai/ocaris/blob/main/src/context/SettingsContext.jsx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_header toneBlue
class node_home,node_prayer,node_prayerdata,node_communion,node_communiondata,node_final,node_finaldata,node_daily,node_storage toneAmber
class node_viewer,node_api toneMint
class node_preferences,node_settings toneRose
class node_reader toneIndigo
```

## Components

### Application shell

- [App routes](https://github.com/atomicwebai/ocaris/blob/main/src/App.jsx): `src/App.jsx`
- [Navigation header](https://github.com/atomicwebai/ocaris/blob/main/src/components/Header.jsx): `src/components/Header.jsx`

### Liturgical content

- [Home and search](https://github.com/atomicwebai/ocaris/blob/main/src/pages/HomePage.jsx): `src/pages/HomePage.jsx`
- [Eucharistic prayers](https://github.com/atomicwebai/ocaris/blob/main/src/pages/PrayerPage.jsx): `src/pages/PrayerPage.jsx`
- [Prayer collection](https://github.com/atomicwebai/ocaris/blob/main/src/data/oracoes.js): `src/data/oracoes.js`
- [Communion rite](https://github.com/atomicwebai/ocaris/blob/main/src/pages/CommunionPage.jsx): `src/pages/CommunionPage.jsx`
- [Communion text](https://github.com/atomicwebai/ocaris/blob/main/src/data/ritoComunhao.js): `src/data/ritoComunhao.js`
- [Final rites](https://github.com/atomicwebai/ocaris/blob/main/src/pages/FinalRitesPage.jsx): `src/pages/FinalRitesPage.jsx`
- [Blessing texts](https://github.com/atomicwebai/ocaris/blob/main/src/data/ritosFinais.js): `src/data/ritosFinais.js`
- [Daily liturgy](https://github.com/atomicwebai/ocaris/blob/main/src/pages/DailyLiturgyPage.jsx): `src/pages/DailyLiturgyPage.jsx`

### Reading experience

- [Liturgical text viewer](https://github.com/atomicwebai/ocaris/blob/main/src/components/LiturgicalViewer.jsx): `src/components/LiturgicalViewer.jsx`

### Reading preferences

- [Preferences modal](https://github.com/atomicwebai/ocaris/blob/main/src/components/PreferencesModal.jsx): `src/components/PreferencesModal.jsx`
- [Settings context](https://github.com/atomicwebai/ocaris/blob/main/src/context/SettingsContext.jsx): `src/context/SettingsContext.jsx`

### Other components

- **Reader**
- **Liturgia public API**
- **Browser localStorage**

## Connections

- Reader → App routes: opens app
- App routes → Navigation header: renders (evidence: `src/App.jsx`)
- App routes → Home and search: routes to (evidence: `src/App.jsx`)
- App routes → Eucharistic prayers: routes to (evidence: `src/App.jsx`)
- App routes → Communion rite: routes to (evidence: `src/App.jsx`)
- App routes → Final rites: routes to (evidence: `src/App.jsx`)
- App routes → Daily liturgy: routes to (evidence: `src/App.jsx`)
- App routes → Preferences modal: renders (evidence: `src/App.jsx`)
- Home and search → Prayer collection: filters and links (evidence: `src/pages/HomePage.jsx`)
- Eucharistic prayers → Prayer collection: selects prayer (evidence: `src/pages/PrayerPage.jsx`)
- Eucharistic prayers → Liturgical text viewer: renders text (evidence: `src/pages/PrayerPage.jsx`)
- Eucharistic prayers → Communion rite: links next (evidence: `src/pages/PrayerPage.jsx`)
- Communion rite → Communion text: renders text (evidence: `src/pages/CommunionPage.jsx`)
- Communion rite → Liturgical text viewer: renders text (evidence: `src/pages/CommunionPage.jsx`)
- Final rites → Blessing texts: selects blessing (evidence: `src/pages/FinalRitesPage.jsx`)
- Final rites → Liturgical text viewer: renders text (evidence: `src/pages/FinalRitesPage.jsx`)
- Daily liturgy → Liturgia public API: fetches date liturgy (evidence: `README.md`)
- Reader → Home and search: searches and selects (evidence: `src/pages/HomePage.jsx`)
- Reader → Daily liturgy: selects date (evidence: `src/pages/DailyLiturgyPage.jsx`)
- Navigation header → Settings context: reads and updates (evidence: `src/components/Header.jsx`)
- Preferences modal → Settings context: updates preferences (evidence: `src/components/PreferencesModal.jsx`)
- Liturgical text viewer → Settings context: reads display settings (evidence: `src/components/LiturgicalViewer.jsx`)
- Settings context → Browser localStorage: persists settings (evidence: `src/context/SettingsContext.jsx`)
