# Starter Architecture Notes ## Initial architecture decision Start as a pure Dart scheduling-core package. Do not begin with UI. The scheduling rules are the hardest and most important part of the product, and they should be testable without a Flutter app running. ## Future shape ```text Flutter UI ↓ View/application state ↓ Pure Dart scheduling core ↓ Repository interfaces ↓ MongoDB persistence adapter (planned later) ↓ Future sync layer, if explicitly planned ``` ## Why pure Dart first - Easier to test scheduling rules. - Less UI noise for Codex. - Cleaner migration into Flutter later. - Avoids premature sync/background complexity. ## Key invariant The scheduling core must never move locked or inflexible blocks during automatic rescheduling. ## Persistence direction MongoDB is the committed persistence target. The V1 scheduling core should still remain persistence-independent and testable without a running database. Repository interfaces should be designed so a later MongoDB adapter can persist document-shaped models without importing MongoDB APIs into scheduling logic. Do not add alternative database assumptions to this project unless the product owner explicitly changes the persistence decision.