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
import { useAuth } from "../auth";
import { Link } from "../router";
const projects = [
{ name: "Website redesign", status: "In progress", updated: "2 hours ago" },
{ name: "Mobile onboarding", status: "Review", updated: "Yesterday" },
{ name: "Billing migration", status: "Planned", updated: "3 days ago" },
];
export function Dashboard() {
const { user } = useAuth();
return (
<section>
<div className="flex flex-wrap items-end justify-between gap-3">
<div>
<h1 className="text-2xl font-semibold tracking-tight">Welcome, {user?.name}</h1>
<p className="text-sm text-slate-600">
Plan: <span className="font-medium capitalize">{user?.plan}</span>
</p>
</div>
<Link to="/app/settings" className="rounded-md border border-slate-300 bg-white px-3 py-1.5 text-sm hover:bg-slate-50">
Settings
</Link>
</div>
<div className="mt-6 overflow-hidden rounded-xl border border-slate-200 bg-white">
<table className="w-full text-sm">
<thead className="bg-slate-50 text-left text-slate-500">
<tr>
<th className="p-3">Project</th>
<th className="p-3">Status</th>
<th className="p-3">Updated</th>
</tr>
</thead>
<tbody>
{projects.map((p) => (
<tr key={p.name} className="border-t border-slate-100">
<td className="p-3 font-medium">{p.name}</td>
<td className="p-3">{p.status}</td>
<td className="p-3 text-slate-500">{p.updated}</td>
</tr>
))}
</tbody>
</table>
</div>
</section>
);
}
Dependencies
Documented from the template's package.json. The runtime has a prebuilt dependency set for Vite + React + TypeScript, so installs are fast.
| Package | Version |
|---|---|
| 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.