A simple authenticated bookmark manager that allows users to sign in with Google and securely save, view, and delete personal bookmarks.
Built using Next.js App Router and Supabase, with database-level security enforced through Row Level Security (RLS).
- Next.js (App Router)
- Supabase (Authentication, Postgres Database, Realtime)
- Tailwind CSS
- React Icons
- Vercel (Deployment)
-
Managing Supabase authentication lifecycle correctly in React. Initial attempts using
getUser()caused race conditions and aborted requests. -
Handling Google OAuth redirects across environments. Hardcoded localhost URLs failed after deployment and had to be replaced with dynamic origin handling.
-
Implementing Row Level Security (RLS) correctly to ensure users could only access their own bookmarks instead of relying on insecure frontend filtering.
-
Fixing URL handling where user-entered links without
https://were treated as relative paths (e.g.,/google.com). -
Ensuring session persistence across refreshes and multiple tabs, which required proper Supabase client configuration.
-
Getting Supabase Realtime subscriptions working so that bookmark changes reflected instantly without manual refresh.