Supabase project = one backend
Each project has:
PostgreSQL database
Authentication
Realtime subscriptions
supabase
.channel('posts')
.on('postgres_changes', { event: '*', schema: 'public', table: 'posts' }, handler)
.subscribe()
Storage (files)
supabase.storage
.from('avatars')
.upload('user.png', file)
Edge Functions
Auto handle password hashing, token issue, session management, oauth flow
Built on GoTrue (battle-tested)
When someone signs up:
// built in sign up function
supabase.auth.signUp({
email,
password
})