Skip to content

Repository files navigation

Alpine

A production-ready Next.js + Supabase authentication starter, built with Feature-Sliced Design.

CI License: MIT

Features

  • 🔐 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

Tech Stack

Getting Started

Prerequisites

1. Clone and install

git clone https://github.com/bernardomrl/alpine.git
cd alpine
bun install

2. Set up environment variables

cp .env.example .env.local

Fill 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)

3. Configure Supabase

4. Run the dev server

bun run dev

Open http://localhost:3000.

Project Structure

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)

Contributing

Contributions are welcome. Please open an issue before submitting a large PR to discuss what you'd like to change.

License

MIT

About

A production-ready Next.js + Supabase authentication starter, built with Feature-Sliced Design. Currently under development.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages

Generated from bernardomrl/nextjs