A production-ready Next.js + Supabase authentication starter, built with Feature-Sliced Design.
- 🔐 Authentication — Email OTP, Google and GitHub OAuth
- 👤 Profile management — Update name, email, and avatar; link/unlink OAuth providers
- 🎨 Appearance customization — Theme, font, and accent color
- 🛡️ Route protection — Middleware-based auth guards
- 🧩 Feature-Sliced Design — Scalable, predictable project structure
- Next.js (App Router, Turbopack)
- TypeScript
- Tailwind CSS
- Shadcn UI
- TanStack Query / Form
- Zod
- Supabase (
@supabase/ssr,@supabase/supabase-js) - Bun
git clone https://github.com/bernardomrl/alpine.git
cd alpine
bun installcp .env.example .env.localFill in the values from your Supabase project (Project Settings → API Keys):
| Variable | Description |
|---|---|
NEXT_PUBLIC_SITE_URL |
Your app's URL (e.g. http://localhost:3000 locally) |
NEXT_PUBLIC_SUPABASE_URL |
Your Supabase project URL |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY |
Your Supabase publishable key |
SUPABASE_SECRET_KEY |
Your Supabase secret key (server-only, never exposed to the client) |
bun run devOpen http://localhost:3000.
This project follows Feature-Sliced Design:
src/
├── app/ # Next.js App Router (routes, layouts)
├── bootstrap/ # Dependency injection setup (repository instances, providers)
├── entities/ # Business entities (user, session)
├── features/ # User-facing features (auth, profile, appearance)
├── widgets/ # Composite UI blocks
└── shared/ # Reusable, business-agnostic code (ui, lib, config)
Contributions are welcome. Please open an issue before submitting a large PR to discuss what you'd like to change.