Next.js
Sign-in that a Server Component can read, with the proxy that keeps it fresh. The App Router, end to end.
Product
Platform overview Integrations Verified, not claimed What isn't built yetSolutions
Mobile-first startups Agencies building for SMEs Fintechs & regulated teams What people buildMigrate
How a move works From Supabase From Appwrite From Firebase From AWS Amplify From any Postgres PricingDevelopers
Documentation Next.js quickstart JavaScript quickstart Changelog Support Contribute Platform statusCompany
Why we exist Customers Blog Partners Contact Sign in Start buildingShort guides that end with a table you can read and a user who can sign in. Where a guide does not exist yet, the card says so, and the plain HTTP API works from anything in the meantime.
Every card says what is true today. Guide has its own page; Use the JS guide works with the JavaScript client; Planned is not built yet.
Sign-in that a Server Component can read, with the proxy that keeps it fresh. The App Router, end to end.
Install the client, read and write a table, sign a user in by phone. Node, browsers, Deno, Bun and edge runtimes.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
Works today with the JavaScript client, which has no framework dependency. Start with the JavaScript guide.
The client takes a storage adapter, so a session can live in the device’s own storage. A guide is planned; the JavaScript guide covers the rest.
A Dart client is planned. Until then every call is plain HTTP, which Dart can make: see the REST example below.
Not yet. Plain HTTP works from Swift today.
Not yet. Plain HTTP works from Kotlin today.
Not yet. Plain HTTP works from any Python HTTP library.
Not yet. Plain HTTP works from PHP and Laravel today.
Your project’s Postgres is an HTTP API. The publishable key names the project, so there is nothing else to configure.
curl "https://api.affineq.com/rest/v1/todos?select=*" \ -H "apikey: aq_pub_..."
The client for JavaScript and TypeScript: data, auth, storage, live updates and Workers. MIT licensed, no runtime dependencies. If you have used the Supabase client, your hands already know it. npm install @affineq/js
Cookie sessions for server-rendered apps: Next.js and anything else that reads a user before the browser runs. Read it before changing how a session is stored.
Push migrations, deploy Workers and manage a project from a terminal or a pipeline, with a personal access token. The CLI reference.
Planned, in the order the apps that are waiting need them. The HTTP API is the same one the JavaScript client calls.
Reading and writing your tables, embedding, functions, row-level security.
Phone codes through your own SMS provider, email and password, magic links, and fifteen social providers.
Files with the same policies as your tables, on our servers or your own bucket.
Changes to a table, pushed to the people looking at it.
Server code next to your data, with secrets it holds.
What changes in your code, and how a move is run. The migration guide.