Launch the product shell first

Marketing outside. Product inside. One repo.

This template now splits the public story from the authenticated app: Astro handles the landing site, while the dashboard stays focused on login, password recovery, role-aware routing, and the product workspace.

Frontend split
Astro for marketing, Vite React for the app shell
Auth baseline
Better Auth with admin-led onboarding, reset, and role redirects
Backend core
Express 5 + Prisma + PostgreSQL in the same workspace
apps/
  landing/    Astro marketing site
  dashboard/  Vite + React product app
  backend/    Express + Better Auth + Prisma

pnpm dev

landing   → localhost:4321
dashboard → localhost:5185
backend   → localhost:3005
01

Fast public pages

Astro keeps the landing site server-first and content-driven instead of turning the product app into a second website.

02

Focused app surface

The dashboard root now behaves like an auth entry, not a temporary homepage competing with the product routes.

Astro Vite React 19 Better Auth Prisma PostgreSQL Turborepo pnpm

Public narrative

Say what the product is without dragging auth UI into the homepage.

The landing site is now a standalone app under apps/landing, ready for SEO, docs links, pricing sections, and marketing copy without polluting the dashboard router.

Product ergonomics

Keep the authenticated area boring in the right way.

The React app remains the product shell: login, forgot password, reset password, email verification, and role-aware redirects are still the center of gravity there, but public account creation is intentionally disabled after bootstrap.

Monorepo baseline

One workspace, three apps, shared workflow.

Astro joins the existing Turborepo and pnpm workspace without special-casing. The root task graph can now run the landing app alongside the dashboard and backend.

What ships in the template

Three surfaces, each doing one job well.

Landing

Attract

Use Astro for the homepage, product framing, SEO pages, and future pricing or feature detail pages.

Dashboard

Convert

Send people into the React app for sign-in and the authenticated experience tailored to their role.

Backend

Operate

Keep sessions, persistence, email flows, and protected APIs on the Express and Prisma side.

Ready to adapt

Use this as the public front door, then shape the product around your SaaS.