Table of Contents
PRD.md
.cursorrules
git clone https://github.com/trevorpfiz/lampstand.git
cd lampstand/notebooks
https://peter-jp-xie.medium.com/develop-colab-notebooks-with-visual-studio-code-de830dde9baa
# Install dependencies
pnpm i
# Configure environment variables.
# There is an `.env.example` in the root directory you can use for reference
# Ensure that the POSTGRES_URL is in the same format as in the example
cp .env.example .env
# Push the Drizzle schema to your database (w/ drizzle-kit push)
pnpm db:push
# Or use migrations (w/ drizzle-kit generate and drizzle-kit migrate)
pnpm db:generate
pnpm db:migrateNOTE: Migrations seem preferable for Supabase. Still figuring out the best way to do migrations for local development/branching. https://twitter.com/plushdohn/status/1780126181490135371
- Go to the Supabase dashboard and create a new project.
- Under project settings, retrieve the environment variables
reference id,project url&anon public keyand paste them into .env in the necessary places. You'll also need the database password you set when creating the project. - Under
Auth, configure any auth provider(s) of your choice. This repo is using Github for Web and Apple for Mobile. - If you want to use the
Emailprovider andemail confirmation, go toAuth->Email Templatesand change theConfirm signupfrom{{ .ConfirmationURL }}to{{ .RedirectTo }}&token_hash={{ .TokenHash }}&type=signup, according to https://supabase.com/docs/guides/auth/redirect-urls#email-templates-when-using-redirectto..RedirectTowill need to be added to yourRedirect URLsin the next step. - Under
Auth->URL Configuration, set theSite URLto your production URL and addhttp://localhost:3000/**andhttps://*-username.vercel.app/**toRedirect URLsas detailed here https://supabase.com/docs/guides/auth/redirect-urls#vercel-preview-urls. - Set up a trigger when a new user signs up: https://supabase.com/docs/guides/auth/managing-user-data#using-triggers. You can run this in the SQL Editor.
-- inserts a row into public.profile
create function public.handle_new_user()
returns trigger
language plpgsql
security definer set search_path = public
as $$
begin
insert into public.epi_profile (id, email, name, image)
values (
new.id,
new.email,
COALESCE(
new.raw_user_meta_data ->> 'name',
new.raw_user_meta_data ->> 'full_name',
new.raw_user_meta_data ->> 'user_name',
'Guest User'
),
new.raw_user_meta_data ->> 'avatar_url'
)
on conflict (id) do update set
email = excluded.email,
name = excluded.name,
image = excluded.image;
return new;
end;
$$;
-- trigger the function every time a user is created
create trigger on_auth_user_created
after insert on auth.users
for each row execute procedure public.handle_new_user();
-- trigger the function when a user signs in/their email is confirmed to get missing values
create trigger on_auth_user_verified
after update on auth.users
for each row when (
old.last_sign_in_at is null
and new.last_sign_in_at is not null
) execute procedure public.handle_new_user();-- drop a trigger if needed
drop trigger "on_auth_user_verified" on auth.users;- Remove access to the
publicschema as we are only using the server
By default, Supabase exposes the public schema to the PostgREST API to allow the supabase-js client query the database directly from the client. However, since we route all our requests through the Next.js application (through tRPC), we don't want our client to have this access. To disable this, execute the following SQL query in the SQL Editor on your Supabase dashboard:
REVOKE USAGE ON SCHEMA public FROM anon, authenticated;Note: This means you also don't need to enable row-level security (RLS) on your database if you don't want to.
Share your thoughts in Discussions
We welcome contributions! Find out how you can contribute to the project in CONTRIBUTING.md: Contributing Guidelines
Made with contrib.rocks
Distributed under the MIT License. See LICENSE for more information.
This repo originates from create-t3-turbo and next-forge.
Thanks as well to the following:
