- Define routes in `config/routes` using Yesod's type-safe route DSL — each route maps to a `Handler` type that encodes the HTTP method and response type.
- Use `Hamlet`, `Lucius`, and `Julius` quasi-quoters for HTML, CSS, and JavaScript templates — they are statically checked at compile time.
- Use `runDB` inside handlers to execute `Persistent` database actions — wrap related queries in a single `runDB` call for transactional atomicity.
- Use `Persistent` entity definitions in `config/models` with `deriving (Show, Read, Eq)` — Persistent generates `Entity`, `insert`, `get`, `update`, `delete` automatically.
- Use `requireAuth` and `maybeAuth` in handlers to enforce authentication — `requireAuth` redirects unauthenticated requests to the login route.
- Use `getYesod` and `getsYesod` to access the `App` foundation type and its fields (database pool, config) within handlers.
- Use `addMessage` and `getMessage` for flash messages across redirects — store them in the session and display once on the next page load.