How juanpagg15ug/washy works
Washy is a local-first laundry ritual app for helping users start, track, and finish laundry in manageable steps. The main workflow runs from the dashboard through scheduling or backlog capture, time check, anchoring, garment classification, washing or soaking, drying, and an honest folding closure; the batch detail route presents a persisted batch workflow. Settings, the garment dictionary, weather-aware semaphore guidance, and timer reconciliation support that journey. The graph reflects sampled callers and documented module behavior; some route and integration wiring is not shown in the excerpts.
Main entry points: index.tsx Dashboard · db.ts Database client · useReconciliation.ts Timer reconciliation · Classification.tsx Classification
Components 23
App experience
- Dashboard
packages/washy-ui/app/(tabs)/index.tsx - Garment dictionary
packages/washy-ui/app/dictionary.tsx - User settings
packages/washy-ui/app/settings.tsx
Laundry ritual
- Schedule or capture
packages/washy-ui/app/batch/new.tsx - Batch lifecycle
packages/washy-ui/app/batch/[id].tsx - Time check
packages/washy-ui/src/components/screens/TimeCheck.tsx - Anchor step
packages/washy-ui/src/components/screens/Anchor.tsx - Classification
packages/washy-ui/src/components/screens/Classification.tsx - Wash timer
packages/washy-ui/src/components/screens/BlindZone.tsx - Soaking step
packages/washy-ui/src/components/screens/Soaking.tsx - Drying step
packages/washy-ui/src/components/screens/Drying.tsx - Folding closure
packages/washy-ui/src/components/screens/Closure.tsx
Core domain
- Weather lookup
packages/washy-ui/src/shared/lib/weather.ts - Time semaphore
packages/washy-core/src/rules/semaphore.ts - WIP limits
packages/washy-core/src/rules/wip.ts - Reminder policy
packages/washy-core/src/rules/nagging.ts - Batch state machine
packages/washy-core/src/state-machine/fsm.ts
Data and recovery
- Timer reconciliation
packages/washy-ui/src/shared/hooks/useReconciliation.ts - Database client
packages/washy-ui/src/shared/lib/db.ts - Laundry data model
packages/washy-core/src/db/schema.ts - App database
packages/washy-ui/src/shared/lib/db.ts
Other components
- Laundry user
- Device notifications
Connections 26
- Laundry user → Dashboard: opens
- Dashboard → Schedule or capture: opens scheduling
- Dashboard → Batch lifecycle: resumes batch
- Dashboard → Garment dictionary: opens dictionary
- Dashboard → User settings: opens settings
- Dashboard → Weather lookup: loads conditions
- Dashboard → Time semaphore: checks time
- Dashboard → WIP limits: checks limits
- Batch lifecycle → Time check: starts ritual
- Time check → Anchor step: continues
- Anchor step → Classification: continues
- Classification → Soaking step: chooses soak
- Classification → Wash timer: starts wash
- Wash timer → Drying step: advances
- Drying step → Folding closure: advances
- Folding closure → Dashboard: returns home
- Classification → Database client: reads garments
- Dashboard → Database client: reads batch state
- Batch lifecycle → Database client: loads and updates
- User settings → Database client: reads and saves
- Timer reconciliation → Database client: queries and updates
- Timer reconciliation → Reminder policy: optional policy
- Timer reconciliation → Device notifications: schedules alerts
- Database client → App database: reads and writes
- Database client → Laundry data model: uses tables
- Timer reconciliation → Laundry data model: queries batch rules