Loading...
++ User ID: {user.id} +
++ Explore the different features available in this template +
+ + {/* Tabs for different demo sections */} ++ A full-stack template with Next.js, FastAPI, Supabase, and AI integration. + Everything you need to build your hackathon project! +
+ + {/* CTA Buttons using Shadcn Button component */} ++ Server components, streaming, and the latest React features. + File-based routing makes navigation simple. +
++ Copy-paste components built on Radix UI and Tailwind. + Fully customizable and accessible by default. +
++ Python backend for AI processing. Connect to any LLM provider. + Streaming responses supported. +
+⚠️ Setup Required:
+Create a `todos` table in Supabase with this SQL:
+
+{`CREATE TABLE todos (
+ id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
+ text TEXT NOT NULL,
+ completed BOOLEAN DEFAULT FALSE,
+ user_id UUID REFERENCES auth.users(id),
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
+);
+
+-- Enable Row Level Security
+ALTER TABLE todos ENABLE ROW LEVEL SECURITY;
+
+-- Users can only see their own todos
+CREATE POLICY "Users can view own todos"
+ ON todos FOR SELECT
+ USING (auth.uid() = user_id);
+
+-- Users can insert their own todos
+CREATE POLICY "Users can insert own todos"
+ ON todos FOR INSERT
+ WITH CHECK (auth.uid() = user_id);
+
+-- Users can update their own todos
+CREATE POLICY "Users can update own todos"
+ ON todos FOR UPDATE
+ USING (auth.uid() = user_id);
+
+-- Users can delete their own todos
+CREATE POLICY "Users can delete own todos"
+ ON todos FOR DELETE
+ USING (auth.uid() = user_id);`}
+
+ Loading...
+ ) : todos.length === 0 ? ( +No todos yet. Add one above!
+ ) : ( +