Add recipe detail
This commit is contained in:
@@ -74,14 +74,16 @@ dev.ulfrx.recipe/
|
||||
├── navigation/ # NavHost, routes, nav graph (nested NavHosts per tab)
|
||||
├── ui/
|
||||
│ ├── theme/ # Colors, typography, Liquid glass style tokens
|
||||
│ ├── components/ # Shared Recipe-styled composables built on Compose Unstyled where useful
|
||||
│ └── screens/{recipes,planner,pantry,shopping}/ # Each with screen + ViewModel
|
||||
│ ├── components/ # Shared, stateless (VM-free) Recipe-styled composables built on Compose Unstyled where useful
|
||||
│ └── screens/{recipes,planner,pantry,shopping,recipedetail}/ # Each with screen + ViewModel
|
||||
├── data/{local,remote,repository}/
|
||||
└── domain/ # Client-only logic; shared/ handles cross-cutting
|
||||
```
|
||||
|
||||
**Rule:** No feature modules in v1. Flat `composeApp/commonMain` with the package layout above.
|
||||
|
||||
**Rule:** A `screens/` package is a *stateful* UI feature (screen + ViewModel), not necessarily a nav route. `recipedetail` presents as a modal bottom sheet and is opened from multiple hosts (search, later planner) — it lives under `screens/` because it owns a ViewModel, while its leaf widgets (`IngredientRow`, `NutritionSummary`) stay in `components/`, which is reserved for stateless, VM-free composables.
|
||||
|
||||
## Non-negotiable conventions
|
||||
|
||||
1. **Sync timestamps come from the server, never the device.** `updated_at` is assigned server-side; pulling uses lexicographic `(updated_at, id)` cursor.
|
||||
|
||||
Reference in New Issue
Block a user