Skip to content
Framework: Vite + React + TypeScriptDifficulty: intermediateFeatured

SaaS starter

Marketing pages, sign-in and sign-up screens, and an authenticated app area with a mocked session you replace with real auth.

A multi-page single-page app built on a tiny hash router (no extra dependency): landing, pricing, sign in, sign up, an app dashboard and a settings page. Authentication is deliberately mocked in src/auth.tsx and labelled as such in the UI; the session lives in localStorage so you can click through every flow before wiring up a real provider.

  • react
  • saas
  • auth
  • multi-page
  • tailwind
  • typescript

This preview is the template's actual file tree and source code — exactly what is copied into a new project. Codexa does not publish screenshots or mock-ups of templates; run the project to see it rendered.

Files18 files

src/components/Layout.tsx46 lines
import type { ReactNode } from "react";
import { Link } from "../router";
import { useAuth } from "../auth";

export function Layout({ children }: { children: ReactNode }) {
  const { user, signOut } = useAuth();
  return (
    <div className="min-h-screen bg-slate-50 text-slate-900">
      <header className="border-b border-slate-200 bg-white">
        <div className="mx-auto flex max-w-6xl items-center justify-between px-4 py-3 sm:px-6">
          <Link to="/" className="font-semibold tracking-tight">
            Acme
          </Link>
          <nav className="flex items-center gap-4 text-sm">
            <Link to="/pricing" className="text-slate-600 hover:text-slate-900">
              Pricing
            </Link>
            {user ? (
              <>
                <Link to="/app" className="text-slate-600 hover:text-slate-900">
                  App
                </Link>
                <button type="button" onClick={signOut} className="rounded-md border border-slate-300 px-3 py-1.5 hover:bg-slate-50">
                  Sign out
                </button>
              </>
            ) : (
              <>
                <Link to="/signin" className="text-slate-600 hover:text-slate-900">
                  Sign in
                </Link>
                <Link to="/signup" className="rounded-md bg-slate-900 px-3 py-1.5 font-medium text-white hover:bg-slate-700">
                  Start free
                </Link>
              </>
            )}
          </nav>
        </div>
      </header>
      <div className="mx-auto max-w-6xl px-4 py-8 sm:px-6">{children}</div>
      <footer className="mx-auto max-w-6xl px-4 py-8 text-xs text-slate-500 sm:px-6">
        Mock authentication — replace <code>src/auth.tsx</code> with a real provider before launch.
      </footer>
    </div>
  );
}

Dependencies

Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.

PackageVersion
react^19.1.0
react-dom^19.1.0
vite^6.3.0
@vitejs/plugin-react^4.4.0
tailwindcss^4.1.0
@tailwindcss/vite^4.1.0
typescript^5.8.0

How it runs

Framework
Vite + React + TypeScript
Dev command
npm run dev
Build command
npm run build
Output directory
dist
Port
5173
Opens at
/
Difficulty
intermediate

Projects run in an isolated sandbox with a live preview. Read the projects documentation for details on settings, snapshots and deployment.

Need the raw data? GET /api/v1/templates/vite-react-saas returns this template with its files.

Build on SaaS starter

Create a free account, start from this template, and ask the AI agent to turn it into your app.