Documentation
- Getting started — Install the toolchain, create a project, serve it
- The CLI — Every command, and what it does
- Generators — `make model` and `make resource`: a spec into a table, a table into pages and JSON
- Configuration — `.env`, `askr.toml`, and which one wins
- Versions — Pinning a release, `askr install` and `askr update`
- Plugins — Source fetched from git, pinned and compiled in: using one, and writing one
- The arena — The memory model, and the rules it imposes on your code
- Routing — Routes, parameters, middleware, response filters
- Requests — Query, form, JSON, headers, route parameters
- Responses — Status, headers, cookies, redirects, JSON
- File uploads — `multipart/form-data`, and why the client's filename is not to be trusted
- Images — What a file really is, and resizing it
- File storage — A directory or S3, the same way, and a link to a private file
- Inertia and Svelte — Server-driven pages without an API
- Lauf — The frontend layer: components, forms, the data grid
- Themes — A gray and an accent, chosen by contrast, and `askr theme`
- APIs — Who is asking, what an error looks like, and how the pieces fit
- API tokens — `Authorization: Bearer`, scopes, revocation
- Lists and pagination — `data`, `meta`, `links`, and the grid on the server
- CORS — Who else may call this, from a browser
- Rate limiting — How often one caller may ask
- OpenAPI — The document, and the gate that keeps it true
- Databases — Postgres, MySQL, SQLite; connections and pooling
- Models — Mapping, timestamps, soft deletes, lifecycle events
- Queries — The typed query builder, eager loading, pagination
- Validation — Rules on the model, errors keyed by column
- Languages — Messages in the reader's language, and `askr lang:check`
- Migrations — The schema builder and the migrator
- Typed columns — `askr schema`, generated from the live database
- Rún — The optional query language with comptime schema checking
- Sessions — Cookies, flash, and memory or the database
- CSRF — On by default in a new project
- Authentication — Login, "remember me", gates
- Cryptography — Hashing, password storage, signing, the app key
- Passkeys — WebAuthn: registering a credential, and signing in with it
- TLS — HTTPS in the server, verification in the client
- Queues — Background jobs, in-process or durable, in chains and batches
- Events — Saying what happened, and listeners now or in the queue
- Real time — Server-sent events, websockets, and broadcasting to both
- Live props — A page reloads the props the server says went stale, and only those
- Scheduler — Recurring work
- Cache — A sharded LRU in the process
- Mail — Resend, SMTP with STARTTLS, or a log file
- Notifications — Telling a person something by mail, in the database, on Slack or by text message
- Logging — Levels, fields, text or JSON
- Telemetry — What happened and how long it took: requests, queries, jobs and mail, to whoever listens
- Dashboard — `/_askr`: routes, slow statements, jobs, mail and the pool, from inside the running app
- Threads — Supervised background threads: restarted with backoff, or reported, never lost in silence
- HTTP client — Calling other services, with certificate verification
- AI — Claude: text, streaming, tools, structured output
- Testing — The test framework, and testing without a socket
- Desktop — The same app in a native window
- Deployment — Shipping the binary