A premium minimalist web application where Discord users log in once and appear on a clean, continuously updated profile board.
Stack: Next.js 15 (App Router) · TypeScript · TailwindCSS · Supabase · Discord OAuth
git clone <repo-url>
cd discord-profile-board
npm install
supabase/schema.sql in the Supabase SQL editorhttps://your-project.supabase.co/auth/v1/callbackcp .env.example .env.local
Fill in:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
npm run dev
app/
page.tsx # Landing page (unauthenticated)
board/page.tsx # Profile board (authenticated)
auth/callback/route.ts # OAuth callback + profile sync
globals.css # Design tokens, CSS variables
layout.tsx # Root layout with font + theme
components/
DiscordLoginButton # OAuth trigger button
Navbar # Sticky header
ProfileCard # Individual Discord profile card
ProfileBoardClient # Client board with search + filter
SearchBar # Instant search input
SkeletonCard # Loading placeholder
ThemeProvider # Dark/light mode context
ThemeToggle # Toggle button
SignOutButton # Auth sign-out
lib/supabase/
client.ts # Browser Supabase client
server.ts # Server Supabase client
middleware.ts # Session refresh helper
supabase/
schema.sql # Database schema + RLS policies
types/
index.ts # TypeScript types
@media (prefers-reduced-motion)Deploy to Vercel with zero config:
vercel
Add environment variables in the Vercel dashboard.