Create new

Tech stack

Every technology in Launch.now and why it was chosen.

Framework

Next.js 16 (App Router) is the foundation. The App Router enables React Server Components, nested layouts, and server actions — all of which Launch.now uses extensively for data fetching, form handling, and middleware.

Authentication

Better-auth handles the full authentication surface: email/password, social providers (GitHub, Vercel, Google), magic link, TOTP/OTP 2FA with QR code generation and backup codes, WebAuthn passkeys, session management, and rate limiting.

It was chosen over Auth.js (NextAuth) because it ships with a proper user profile and password management API out of the box, and its session model fits cleanly into both single-tenant and multi-tenant schemas.

Database

Payments

Stripe handles subscriptions and one-time payments. Launch.now includes pre-built webhook handlers for all subscription lifecycle events (customer.subscription.created, invoice.payment_failed, etc.) and a ready-made integration into both the B2C user model and the B2B organisation model.

Background jobs & caching

Inngest manages background jobs: sending emails, writing audit logs, and firing internal notifications. It provides reliable job execution with retries and a local dev UI.

Redis handles caching for notifications and audit log reads, keeping hot paths fast without hitting the database on every request.

Styling

Tailwind CSS is the base. shadcn/ui provides the component registry. MagicUI and TailArk extend it with animated and specialised components.

Permissions

next-safe-action is used for all server actions. It provides a typed, middleware-aware action layer that makes RBAC enforcement clean and consistent — you define who can call an action at the action level, not scattered across route handlers.

Developer tooling

ToolPurpose
KnipFinds unused exports, files, and dependencies
ZustandClient state (sidebar, dialogs)
PrettierCode formatting
HuskyConventional commit enforcement
SentryRuntime error tracking