A backend for people who do not want a backend. No cloud console, no provisioning, no schema to design before your first write.
No schema was declared before that ran. Attributes exist because they were used, and every version of every value is kept — so "what did this look like last Tuesday" is a question with an answer.
(ns contact)
(defn submit [req]
(db/save! :message {:email (:email (:body req))
:body (:message (:body req))})
{:status 200 :body {:ok true}})Not a policy language. One key, four values — anything more expressive belongs inside your function, where it is ordinary code you can read.
| Value | Who gets through | For |
|---|---|---|
:public | Anyone, rate limited by default | Contact form, waitlist |
:key | A per-tenant API key | Server-to-server, webhooks |
:signed-in | Your own signed-in users | [not available yet] |
:none | Nothing external | Background steps, scheduled work |
Each invocation stores how long the sandbox, your code and the database each took — separately, because one blended number makes a three-line function look slow — and the exact transaction your code saw. Click a run, see the database as it was.