87 lines
2.4 KiB
Markdown
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.
|