March 31, 2024
O. Wolfson
This example uses Supabase for authentication and Next.js 14 for the frontend. The example includes setting up environment variables, installing dependencies, running the project locally, and deploying to Vercel.
Installation
git clone https://github.com/owolfdev/supabase-auth
cd supabase-auth
.env.local
file at the root of the project.NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SERVICE_ROLE_SECRET=your_service_role_secret
You can find these keys in your Supabase dashboard under Project Settings>APInpm install
npm run dev
http://localhost:3000
to see the app.There are several setting at Supabase that you need to consider.
You will need to create a profiles
table with the following (suggested) table schema:
You should create a database function that creates a new profile based on a new auth.user account.
sql
CREATE OR REPLACE FUNCTION handle_new_user()
RETURNS TRIGGER AS $$
BEGIN
INSERT INTO public.profiles(id, email)
VALUES (NEW.id, NEW.email);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
You should create a trigger that triggers the function.
sqlCREATE TRIGGER trigger_after_user_creation
AFTER INSERT ON auth.users
FOR EACH ROW
EXECUTE FUNCTION public.handle_new_user();
I am using Resend as the Custom SMTP server to bypass the Supabase email limit of 3 per hour. You can find the SMTP settings in Supabase under Settings
> Authentication
> SMTP Settings
.
At supabase you will need to set the project url at Authentication
> Site URL
to enable your app to redirect users back to your site.
You may also need to adjust the rate limit at Rate Limits
.