- Follow the Elm Architecture: define `Model`, `Msg`, `init`, `update`, and `view` as the four pillars of every Lustre component.
- Use `lustre/element/html` functions (`div`, `p`, `button`) for virtual DOM construction — never manipulate the real DOM directly.
- Dispatch side effects via `lustre/effect.from` and return them alongside the updated model from `update` — never perform I/O inside `update`.
- Use `lustre.application` for server-side rendering and `lustre.simple` for pure client-side components without effects.