4.0 KiB
4.0 KiB
Supabase Quick Setup
Methode 1: Supabase Dashboard (Empfohlen)
1. Öffne Supabase Dashboard
- Gehe zu: https://supabase.com/dashboard
- Login mit deinem Account
- Wähle Projekt:
ekbpexbhuochrplzorce
2. Tabellen erstellen
SQL Editor öffnen:
- Links auf "SQL Editor" klicken
- Neues Query erstellen
Schema erstellen:
-- Führe diesen Code aus:
create table if not exists public.profiles (
id uuid primary key references auth.users(id) on delete cascade,
display_name text not null,
avatar_url text,
created_at timestamptz default now()
);
alter table public.profiles enable row level security;
create policy if not exists "profiles_select_all" on public.profiles for select using (true);
create policy if not exists "profiles_insert_own" on public.profiles for insert with check (auth.uid() = id);
create policy if not exists "profiles_update_own" on public.profiles for update using (auth.uid() = id);
-- Auto-create profile on signup
create or replace function public.handle_new_user()
returns trigger
language plpgsql
security definer
set search_path = public
as $$
begin
insert into public.profiles (id, display_name)
values (
new.id,
coalesce(new.raw_user_meta_data ->> 'display_name', split_part(new.email, '@', 1))
)
on conflict (id) do nothing;
return new;
end;
$$;
drop trigger if exists on_auth_user_created on auth.users;
create trigger on_auth_user_created
after insert on auth.users
for each row
execute function public.handle_new_user();
Weitere Tabellen:
-- Diary entries
create table if not exists public.diary_entries (
id uuid primary key default gen_random_uuid(),
user_id uuid not null references public.profiles(id) on delete cascade,
tmdb_movie_id integer not null,
movie_title text not null,
movie_poster_path text,
movie_year text,
rating numeric(2,1) check (rating >= 0.5 and rating <= 5),
review text,
watched_on date default current_date,
created_at timestamptz default now()
);
alter table public.diary_entries enable row level security;
create policy if not exists "diary_select_all" on public.diary_entries for select using (true);
create policy if not exists "diary_insert_own" on public.diary_entries for insert with check (auth.uid() = user_id);
create policy if not exists "diary_update_own" on public.diary_entries for update using (auth.uid() = user_id);
create policy if not exists "diary_delete_own" on public.diary_entries for delete using (auth.uid() = user_id);
-- Watchlist
create table if not exists public.watchlist (
id uuid primary key default gen_random_uuid(),
user_id uuid not null references public.profiles(id) on delete cascade,
tmdb_movie_id integer not null,
movie_title text not null,
movie_poster_path text,
movie_year text,
added_at timestamptz default now(),
unique(user_id, tmdb_movie_id)
);
alter table public.watchlist enable row level security;
create policy if not exists "watchlist_select_all" on public.watchlist for select using (true);
create policy if not exists "watchlist_insert_own" on public.watchlist for insert with check (auth.uid() = user_id);
create policy if not exists "watchlist_delete_own" on public.watchlist for delete using (auth.uid() = user_id);
3. Authentifizierung konfigurieren
Authentication Settings:
- Gehe zu Authentication > Settings
- Setze Site URL:
http://localhost:3000 - Füge hinzu zu Redirect URLs:
http://localhost:3000/auth/callback - Aktiviere Enable email confirmations
4. Testen
- Registriere neuen Benutzer
- Bestätigungs-Email sollte ankommen
- Nach Bestätigung sollte Benutzer eingeloggt sein
Methode 2: MCP Server (Wenn verfügbar)
Wenn der Supabase MCP Server funktioniert:
- Füge den MCP Code zu deiner IDE Konfiguration hinzu
- Starte IDE neu
- MCP sollte automatisch Tabellen erstellen können
Schneller Test (Ohne Email-Bestätigung)
Für Entwicklung:
- Im Supabase Dashboard: Authentication > Settings
- Deaktiviere Enable email confirmations
- Registrierung funktioniert sofort ohne Email