Multi-tenant application shell with persistent workspace context
Astria — Next.js Admin dashboard Template
By darkooom
Astria is a multi-tenant SaaS admin starter template built on Next.js, with built-in demo data and replaceable database, authentication, and billing adapters.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Built-in pages for dashboard, members, roles, usage, API keys, webhooks, audit logs, billing, and settings
Default demo adapter uses in-memory sample data, running without an account, database, or API keys
Database, authentication, and billing adapters can be independently switched via environment variables
Provides command menu, dialogs, tables, and loading, empty, error, and partial states
Includes light and dark themes, plus type checking, linting, and build checks in GitHub Actions
Template Details
Astria is a Next.js admin starter template for multi-tenant SaaS scenarios, built with TypeScript, Tailwind CSS, and shadcn/ui. It provides a responsive multi-tenant application shell and maintains workspace context; pages cover dashboard, activity, members, roles, usage, API keys, webhooks, audit logs, billing, and settings. The default adapter is demo, using in-memory sample data, so the full interface runs without an account, database, or API keys.
The template's core design decouples product code from specific vendors: src/lib/adapters defines vendor-neutral contracts, with database options demo or Prisma (PostgreSQL), authentication options demo, Auth.js, or Clerk, and billing options demo or Stripe, each independently switchable via environment variables. The README's production path includes: configuring PostgreSQL and applying the Prisma schema, choosing Auth.js or Clerk, choosing Stripe and creating a customer per workspace and verifying webhook signatures, enforcing workspace membership and role permissions in server actions, and adding rate limiting, transactional email, observability, backups, and key rotation.
The interface includes a command menu, dialogs, tables, and loading, empty, error, and partial states; light and dark themes are provided. The repository includes type checking, ESLint, production build, and pull request checks in GitHub Actions. The demo site is astria-six.vercel.app, and the repository is MIT licensed. Note that demo data, sample subscriptions, and built-in demo users are placeholders and must be replaced before launch; third-party assets (images, fonts, icons) require separate license verification, and external services such as domain, hosting, database, and payment may incur costs.
Is it right for your project?
Use Cases
- Building an initial skeleton for a multi-tenant SaaS admin panel
- Demonstrating operational information such as workspace members, roles, and usage in a unified interface
- Integrating PostgreSQL, Auth.js/Clerk, or Stripe using a vendor-neutral adapter structure
- Serving as a starting point for an internal admin prototype, getting the interface running before replacing with real data sources
Suitable For
- SaaS projects that need a multi-tenant admin interface
- Teams that want to validate the product interface with demo data first, then connect real services
- Developers who accept replacing database, authentication, and billing vendors via adapters
- Frontend or full-stack teams using the Next.js and TypeScript stack
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
After cloning the repository, run npm install, copy .env.example to .env.local, then run npm run dev
- 2
The default adapter is demo, so the full interface is accessible without configuring external services
- 3
To switch to Prisma, set ASTRIA_DATABASE_ADAPTER=prisma and DATABASE_URL, and run npx prisma generate and npx prisma db push
- 4
When switching to Auth.js or Clerk, or Stripe, fill in the corresponding environment variables and keys as per the README
- 5
Before launch, replace demo content and branding, and enforce workspace membership and role permissions on the server side
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- When using Auth.js or Clerk authentication in production mode, you must register third-party authentication services yourself and configure credentials such as OAuth client IDs and secrets.
- Enabling the Stripe billing adapter requires a Stripe account, creating customers, and configuring a webhook signing secret, and may incur payment service fees.
- Switching to the Prisma database adapter requires your own PostgreSQL instance and configuring DATABASE_URL; hosted databases may incur costs.
- Built-in demo users, sample subscriptions, demo data, and brand assets are placeholders and must be replaced before official launch.
- The template does not include rate limiting, transactional email, observability, backups, or key rotation; these capabilities must be added for production deployment.
- Demo images, fonts, icons, and other third-party assets require license verification under their respective terms; they cannot be judged solely by the code's MIT license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Select Auth.js or Clerk and add the required provider configuration.
Original README
Select Stripe, create a customer for each workspace, and verify webhook signatures.
Original README
Configure PostgreSQL and apply the Prisma schema.
Original README
Replace demo content, metadata, screenshots, and branding before launch.
Original README
https://github.com/darkooom/Astria/blob/main/LICENSEhttps://github.com/darkooom/Astria/blob/main/README.mdAdd rate limiting, transactional email, observability, backups, and secret rotation.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Next.js · React
- Website type
- Admin dashboard · SaaS · Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-10-02
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 8229ac736bbfd9a5c93b13bfcc29cfab806977b6fcf74929f744729da297210a
2026-10-02T18:23:00.705Z
Source file / repository<div align="center">
# Astria
**A polished, provider-neutral multi-tenant SaaS starter for teams that want to ship, not scaffold.**
[](https://github.com/darkooom/Astria/actions/workflows/ci.yml)
[](https://nextjs.org/)
[](https://www.typescriptlang.org/)
[](./LICENSE)
[**Live demo**](https://astria-six.vercel.app) · [**Use this template**](https://github.com/darkooom/Astria/generate) · [**Deploy to Vercel**](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fdarkooom%2FAstria&project-name=astria&repository-name=astria)
</div>

Astria gives you a production-shaped dashboard, tenant-aware data contracts, and swappable provider adapters without forcing a specific auth, database, or billing vendor. It runs with demo data immediately and grows into a real stack when you are ready.
## What you get
- A responsive multi-tenant app shell with persistent workspace context
- Dashboard, activity, members, roles, usage, API keys, webhooks, audit log, billing, and settings
- Demo data that works immediately — no account, database, or API keys required
- Swappable adapters for PostgreSQL/Prisma, Auth.js, Clerk, and Stripe
- Command menu, dialogs, tables, loading, empty, error, and partial states
- Light and dark themes backed by a documented design system
- TypeScript, ESLint, production builds, and pull-request checks in GitHub Actions
## Product tour
### A dashboard with hierarchy built in
The default workspace combines high-signal metrics, usage trends, operational health, and recent activity without turning into a wall of cards.

### Operational detail stays readable
Usage and health signals share one visual system, so teams can scan performance without leaving the workspace.

## Quick start
```bash
git clone https://github.com/darkooom/Astria.git
cd Astria
npm install
cp .env.example .env.local
npm run dev
```
Open [http://localhost:3000](http://localhost:3000). The default adapter set is `demo`, so the complete interface is available immediately.
## Demo and production modes
| Boundary | Demo default | Production path |
| --- | --- | --- |
| Data | In-memory fixtures | PostgreSQL through Prisma |
| Authentication | Built-in demo user | Auth.js or Clerk |
| Billing | Sample Pro subscription | Stripe Billing Portal |
| Tenancy | Sample Acme workspace | Membership-based, server-side authorization |
| Secrets | None required | Environment variables managed by your host |
## Adapter model
Product code talks to small provider-neutral contracts in `src/lib/adapters`. Select each implementation independently:
```env
ASTRIA_DATABASE_ADAPTER=demo # demo | prisma
ASTRIA_AUTH_ADAPTER=demo # demo | authjs | clerk
ASTRIA_BILLING_ADAPTER=demo # demo | stripe
```
That separation lets you replace a provider without rewriting the UI or tenancy model.
### PostgreSQL and Prisma
```env
ASTRIA_DATABASE_ADAPTER=prisma
DATABASE_URL="postgresql://user:password@host:5432/astria"
```
```bash
npx prisma generate
npx prisma db push
```
### Auth.js
```env
ASTRIA_AUTH_ADAPTER=authjs
AUTH_SECRET="your-random-secret"
AUTH_GITHUB_ID="your-github-oauth-client-id"
AUTH_GITHUB_SECRET="your-github-oauth-client-secret"
```
### Clerk
```env
ASTRIA_AUTH_ADAPTER=clerk
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="pk_..."
CLERK_SECRET_KEY="sk_..."
```
### Stripe
```env
ASTRIA_BILLING_ADAPTER=stripe
STRIPE_SECRET_KEY="sk_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
NEXT_PUBLIC_APP_URL="https://your-domain.com"
```
## Production checklist
- Configure PostgreSQL and apply the Prisma schema.
- Select Auth.js or Clerk and add the required provider configuration.
- Select Stripe, create a customer for each workspace, and verify webhook signatures.
- Enforce workspace membership and role authorization on every server-side operation.
- Add rate limiting, transactional email, observability, backups, and secret rotation.
- Replace demo content, metadata, screenshots, and branding before launch.
## Architecture
```text
src/
├── app/ Next.js App Router pages
├── components/ Product and shadcn-style UI components
└── lib/
├── adapters/ Provider-neutral boundaries and examples
└── demo-data.ts Instant local demo content
```
## Scripts
| Command | Purpose |
| --- | --- |
| `npm run dev` | Start the local development server |
| `npm run build` | Create a production build |
| `npm run start` | Run the production server |
| `npm run typecheck` | Validate TypeScript without emitting files |
| `npm run lint` | Run ESLint across the project |
## Contributing and security
Contributions are welcome. Read [CONTRIBUTING.md](./CONTRIBUTING.md) before opening a pull request. Please report vulnerabilities privately through [GitHub Private Vulnerability Reporting](https://github.com/darkooom/Astria/security/advisories/new), not in a public issue.
## License
Astria is available under the [MIT License](./LICENSE) for personal and commercial projects.
Explore similar templates
Compare previews and descriptions within the same stack and category.

Next.js SaaS Starter
The official Next.js SaaS starter template, integrating email/password authentication, Stripe Checkout subscriptions, a dashboard with user/team CRUD, basic Owner/Member RBAC, and activity logging.
Next.js · SaaS

Next.js Commerce
Vercel's officially maintained Next.js App Router ecommerce starter with deep Shopify integration, offering a complete product catalog, cart, and checkout flow. Core logic is modular for swapping backends, and community provider versions exist for BigCommerce, Medusa, and Saleor.
Next.js · E-commerce

Next-js-Boilerplate
A developer-first Next.js 16 starter with Tailwind CSS 4 and TypeScript, supporting both App Router and Page Router.
Next.js · Starter

tailwind-nextjs-starter-blog
A Next.js and Tailwind CSS blog starter template using Contentlayer for Markdown/MDX, with built-in SEO, code highlighting, and tags. It targets personal technical blogs and migration from Jekyll/Hugo to React, and supports one-click Vercel deployment.
Next.js · Blog

next-forge
next-forge is a Turborepo-based Next.js template maintained by Vercel, positioned as a starting point for SaaS products.
Next.js · Starter

SaaS-Boilerplate
SaaS-Boilerplate is an open-source SaaS starter template built with Next.js App Router, React 19, TypeScript, Tailwind CSS, and Shadcn UI.
Next.js · SaaS
