1.1.0
Card layout for tables below the sidebar breakpoint.
- addedTables become cards below lg rather than scrolling horizontally.
- fixedSticky page header could overlap an open dropdown.
A dense operational shell with tables, filters and audit surfaces that hold up past a thousand rows.
Admin interfaces fail on density and on scale. This one is built for both: cursor pagination throughout, tables that become cards below the sidebar breakpoint, and destructive actions that state their blast radius before confirming.
Ledger is the interactive demo built on this template: customers with a detail drawer, URL-driven filters, bulk selection and an append-only activity trail. Sample data only.
Open the Ledger demoData table with bulk selection and a count-bearing action
Every list. Offset paging breaks on tables that grow while you read them.
Destructive actions show their blast radius and require typed intent.
A filtered view is a link. Shareable, bookmarkable, correct on back.
Every list is cursor-paginated rather than offset-paginated, because offset paging skips and duplicates rows on an append-heavy table and forces the database to scan and discard. Filters live in the URL so a view is shareable and back-button-correct.
app/
(admin)/
layout.tsx sidebar + sticky page header
[section]/ one folder per operational area
components/
table/ sortable, selectable, cursor-paginated
filters/ URL-synced facetsThe archive contains the full source. There is no installer and no post-install script.
unzip admin-dashboard-template.zip
cd admin-dashboard-templatepnpm installCopy the example file and fill in the variables listed under Environment variables.
cp .env.example .envpnpm devRuns formatting, lint, type-check, tests and a production build.
pnpm check| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Required | PostgreSQL connection string. Use a pooled endpoint in serverless environments.postgresql://user:pass@localhost:5432/app |
NEXT_PUBLIC_APP_URL | Required | Absolute origin of the deployment. Used for canonical URLs and metadata.https://app.example.com |
The sidebar renders from a typed array, so a new section is a data change.
content/navigation.tsZero-config. Set the environment variables listed above and connect the repository.
A multi-stage Dockerfile is included, producing a standalone image with no build toolchain.
Builds to a standard Node server. Nothing depends on a platform-specific runtime.
| Technology | Versions | Status |
|---|---|---|
| Next.js | ≥ 15 | Supported |
| React | ≥ 19 | Supported |
Card layout for tables below the sidebar breakpoint.
Card layout for tables below the sidebar breakpoint.
Named filter combinations, shareable per organisation.
No. It is the interface layer, with typed seams where your data access goes. The SaaS Starter Kit supplies the backend if you want both.
Curated by us, not inferred — these are the ones that genuinely pair with it.
Other products solving a similar problem.
Products that share a framework with this one.