- Scaffold with `lein new luminus my-app +postgres +auth +shadow-cljs` — `+` flags activate technology profiles in the template generator.
- Define system components with `mount`: `(defstate db :start (connect! config) :stop (disconnect! db))` — start all with `(mount/start)`.
- Route requests with `(defroutes app-routes (GET "/api/users" [] (users-handler)))` — wrap the router with `(wrap-defaults handler site-defaults)`.
- Query the database with HugSQL: `(defqueries "sql/queries.sql")` — keep all SQL in `resources/sql/` and call functions like `(db/get-user {:id 1})`.
- Manage configuration with `environ`: `(env :database-url)` reads `DATABASE_URL` from env — never hardcode credentials.
- Run migrations with Migratus: `(migratus/migrate config)` — store migration SQL in `resources/migrations/` with timestamp-prefixed filenames.
- Add auth with `buddy.auth`: `(wrap-authentication handler (jws-backend {:secret (env :auth-secret)}))` — protect routes with `authenticated?`.
- Use Selmer templates: `(selmer.parser/render-file "templates/index.html" {:users users})` for server-rendered pages.