1. Create a project
Sign up and create a project
We're in private beta — join the waitlist and we'll email you an invite. Once you're in, click New project, give it a name, and we'll provision a dedicated Postgres database, Auth, Storage and REST API for it. This takes under two minutes.
Copy your URL and keys
Your project home shows everything you need:
| Item | Looks like | Use it for |
|---|---|---|
| Project URL | https://<project-ref>.aidb.uk | All API calls |
anon key | eyJhbGciOi… | Browsers & mobile apps (safe to ship) |
service_role key | eyJhbGciOi… | Servers only — bypasses row security. Never expose it. |
Connect with @supabase/supabase-js
Install the standard Supabase client and point it at your project:
# npm install @supabase/supabase-js
import { createClient } from '@supabase/supabase-js'
const supabase = createClient(
'https://your-project-ref.aidb.uk', // your project URL
'your-anon-key' // your anon key
)
Or load it straight from a CDN in plain HTML:
<script type="module">
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
const supabase = createClient('https://your-project-ref.aidb.uk', 'your-anon-key')
</script>
2. Create a table and query it
Open Studio from your project page and create a table — say
todos with a task text column — using the table editor or
the SQL editor:
create table todos (
id bigint generated always as identity primary key,
task text not null,
done boolean default false
);
It's instantly available over the API:
const { data, error } = await supabase
.from('todos')
.select('*')
Prefer raw HTTP? The same data is one curl away:
curl "https://your-project-ref.aidb.uk/rest/v1/todos?select=*" \
-H "apikey: your-anon-key" \
-H "Authorization: Bearer your-anon-key"
anon key can't read them —
that's a feature, not a bug. Add a policy in Studio, e.g.
create policy "own rows" on todos for select using (auth.uid() = user_id);
3. Add auth
User accounts work exactly as you'd expect from the Supabase client:
// sign a user up (sends a confirmation email)
await supabase.auth.signUp({ email, password })
// sign in
await supabase.auth.signInWithPassword({ email, password })
// the current user
const { data: { user } } = await supabase.auth.getUser()
4. Upload a file
Create a bucket in Studio (e.g. avatars), then:
await supabase.storage
.from('avatars')
.upload(`${user.id}.png`, file)
// public URL, resized on the fly
const { data } = supabase.storage
.from('avatars')
.getPublicUrl(`${user.id}.png`, { transform: { width: 128 } })
Direct database access
Every project is a real, dedicated Postgres database. Your project page shows a
connection string for psql, migrations tools, or anything else that
speaks Postgres.
What's next
- Browse and edit data in Studio from your project page.
- Check plan limits — the Free tier covers two projects.
- Questions? hello@aidb.uk.