Database
SaaSInMinutes uses Supabase (PostgreSQL) for database management. This guide shows you how to work with the database.
Setup
1. Create a Supabase project at supabase.com
2. Get your database URL from Settings → Database
3. Add it to your .env.local file:
.env.local
1SUPABASE_URL=https://your-project.supabase.co
2SUPABASE_ANON_KEY=your-anon-key
3SUPABASE_SERVICE_ROLE_KEY=your-service-role-keyCreate a table
Create tables in the Supabase dashboard or using SQL migrations:
migrations/001_create_users.sql
1CREATE TABLE users (
2 id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
3 email TEXT UNIQUE NOT NULL,
4 name TEXT,
5 created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
6);Query data
app/users/page.tsx
1import { createServerComponentClient } from '@supabase/auth-helpers-nextjs';
2import { cookies } from 'next/headers';
3
4export default async function UsersPage() {
5 const supabase = createServerComponentClient({ cookies });
6 const { data: users, error } = await supabase
7 .from('users')
8 .select('*')
9 .limit(10);
10
11 if (error) {
12 console.error('Error:', error);
13 return <div>Error loading users</div>;
14 }
15
16 return (
17 <div>
18 <h1>Users</h1>
19 <ul>
20 {users?.map((user) => (
21 <li key={user.id}>{user.email}</li>
22 ))}
23 </ul>
24 </div>
25 );
26}Insert data
app/users/create/page.tsx
1import { createServerComponentClient } from '@supabase/auth-helpers-nextjs';
2import { cookies } from 'next/headers';
3
4export default async function CreateUserPage() {
5 const supabase = createServerComponentClient({ cookies });
6
7 const { data, error } = await supabase
8 .from('users')
9 .insert([
10 { email: 'user@example.com', name: 'John Doe' }
11 ])
12 .select();
13
14 if (error) {
15 console.error('Error:', error);
16 return <div>Error creating user</div>;
17 }
18
19 return <div>User created: {data[0].email}</div>;
20}Update data
1const { data, error } = await supabase
2 .from('users')
3 .update({ name: 'Jane Doe' })
4 .eq('id', userId)
5 .select();Delete data
1const { error } = await supabase
2 .from('users')
3 .delete()
4 .eq('id', userId);Next steps
Learn more about Supabase in the official documentation.