Files
libre-study/docs/app-architecture-boundaries.md

87 lines
2.4 KiB
Markdown

# App Architecture Boundaries
Libre Study should remain one app with platform adapters, not a set of separate apps.
## Shared Core
The UI should talk to stable app-level contracts:
- resource catalog queries
- translation and page loading
- search
- Strong's lookup
- notes/commentary/dictionary/map/audio lookup
- session state
- user workspace persistence
- import/export
- authentication where a platform supports it
Primary files today:
- `src/studyDataClient.ts`: resource/query interface.
- `src/studyClient.ts`: browser and Tauri resource adapters.
- `src/workspace.ts`: workspace, auth, session, settings, and timeline persistence contracts.
- `src/sessionPortability.ts`: session export/import and one-way Nextcloud export.
## Resource Data Boundary
LibreBible owns public resources:
- translations
- Strong's links
- lexicons
- footnotes and study notes
- commentaries
- dictionaries
- places, routes, maps, and media
- audio metadata and packages
- license and attribution metadata
Libre Study consumes those packages. It should not become the canonical source for public Bible resources.
## User Data Boundary
Libre Study owns user workspace data:
- sessions
- notes
- timeline events
- view settings
- resource toggles
- tags and future highlights
- saved searches
- exports
- future collaboration state
User data should never be mixed into public LibreBible packages.
## Adapter Lanes
### HotView / Browser
Current lead lane. Uses Vite, local package reads, browser storage, and the private Tailscale/local intranet dev URL.
Normal URL:
```text
http://desktop:5174/
```
Vite HMR should use the detected Tailscale IPv4 address when available. `VITE_HMR_HOST` remains the override for other private addresses.
### Hosted Web
Parked until explicitly resumed. It may use login, remote persistence, private hosted resource URLs, and later collaboration services. Hosted deployment is not part of the normal HotView loop.
### Tauri Desktop
Future hardening lane. It should remain account-optional and offline-capable. Desktop storage can use SQLite and local package installation/update management.
### PWA / Mobile
Future lane. Evaluate responsive web and PWA behavior before considering mobile Tauri or native shells.
## Current Rule
When adding new features, first decide which shared contract owns the behavior. Only then wire platform-specific adapter details. This keeps browser, hosted web, desktop, and future mobile from drifting into separate products.