Template Vanilla 30 pages MIT
SaaS Dashboard
A complete, commercial-grade Vanilla HTML/CSS/JS SaaS dashboard template: 30 interconnected pages sharing one coherent mock dataset, a JS-injected app shell, and a single Northstar design system. Covers overview (dashboard, analytics, reports, activity), customer management (customers, details, activity, segments, invitations), revenue (billing, plans, payment methods, invoices, transactions), communication (3-panel inbox, notifications, preferences), workspace (team, roles & permissions matrix, integrations, settings), settings (general, profile, security, sessions, API keys, webhooks), and support (help center, support, system status). Includes interactive SVG charts, sortable/paginated/filterable tables with bulk selection, modals, drawers, toasts, loading/empty/error states, light/dark mode, and a responsive sidebar that becomes an off-canvas drawer. No frameworks, no build step, no backend.
- Vanilla
- HTML
- Pages
- 30 pages
- Stack
- Vanilla HTML/CSS/JS + HTML
- Theme
- Dark only
- Responsive
- Yes
- Files
- 41
- License
- MIT
Preview
The whole site, live.
Scroll inside the frame, switch viewports, or open the raw preview in a new tab — it is the same file the CLI installs.
devsnips.dev/templates/vanilla/saas-dashboard/ What's inside
Everything the folder ships.
Straight from the registry's metadata — every line maps to a file you can open in the source tabs below.
- 30 interconnected pages across 8 sections, all reachable from a single JS-injected sidebar (no dead links)
- Coherent mock SaaS dataset (DB) shared across every page — customers, team, invoices, transactions, activity, conversations, notifications reference the same entities
- Shared Northstar design system (css/app.css + js/app.js): cool-stone neutrals, one indigo accent, hairline borders, semantic status colors, light/dark tokens — identical on every page
- Overview: dashboard (KPIs + revenue chart + plan breakdown + activity + transactions + customers table), deep analytics (MRR/ARR/retention/churn/conversion/traffic/engagement/sessions), reports (list + preview + builder + CSV/PDF/Excel), full activity audit feed with filters
- Customer management: sortable/filterable/paginated table with bulk selection + bulk actions, customer details with 6 tabs (overview/activity/invoices/transactions/notes/metadata), per-customer activity timeline, dynamic segments with creation UI, invitations with resend/revoke
- Revenue: billing overview (plan/usage/payment method/upcoming charges), plan comparison + feature matrix + upgrade/downgrade flows, payment methods (cards + billing address), invoices with modal invoice viewer, transactions with detail drawer + retry
- 3-panel support inbox: conversation list + thread + customer sidebar, search, filters, priority/tags, reply (Cmd+Enter), resolve — collapses to stacked panels on mobile
- Notification center (unread/read tabs, mark-as-read) + polished notification dropdown in the global header + notification preferences with per-category channels
- Workspace: team members with roles/2FA/status, clean permissions matrix (Owner/Admin/Manager/Member/Viewer × 14 capabilities), integrations marketplace with connect/configure/disconnect flows, workspace settings with branding + danger zone
- Settings: general + appearance, profile, security (password/2FA/sessions/login history/alerts), sessions with trusted devices, API keys with create-key modal + quickstart, webhooks with endpoints/events/delivery status/retries
- Support: help center (search/categories/FAQ), support ticket form + history, system status (overall status/component uptime bars/incident history)
- Interactive SVG charts: line charts with comparison + hover/touch tooltip, bar charts, donut, sparklines — all with mock data and redraw on theme/resize
- Application states: loading skeletons, meaningful empty states, error states with retry — plus disabled/selected/active/inactive/pending/failed/success throughout
- Reusable components: modal, drawer, confirmation dialog, toast, tabs, breadcrumbs, switches, pagination, pills, avatars — all programmatic via window.NS
- Light/dark mode: no-flash system preference detection + persisted header toggle, charts redraw on theme change
- Responsive: sidebar → off-canvas drawer (Esc/backdrop), tables → stacked cards, multi-panel inbox → stacked, settings nav → horizontal scroll, forms → single column — no horizontal overflow at any width from 320px to 1920px
- Accessible: skip link, semantic landmarks, ARIA on interactive controls, focus-visible rings, keyboard-operable (Escape closes overlays, Enter activates conversation items), reduced-motion safe
- Zero dependencies — only external request is Google Fonts. Open preview.html (the template gallery) or any page in pages/ directly in a browser
Technical
Stack, scripts, structure.
Everything you need to know before you install.
root 4
-
AGENTS.mddoc -
metadata.jsonconfig -
preview.htmlpreview -
README.mddoc
assets/ 2
-
favicon.svgasset -
logo.svgasset
css/ 2
-
app.csscode -
dashboard.csscode
js/ 2
-
app.jscode -
dashboard.jscode
pages/ 31
-
activity.htmlcode -
analytics.htmlcode -
api-keys.htmlcode -
billing.htmlcode -
code.htmlcode -
customer-activity.htmlcode -
customer-details.htmlcode -
customer-segments.htmlcode -
customers.htmlcode -
dashboard.htmlcode -
help-center.htmlcode -
inbox.htmlcode -
integrations.htmlcode -
invitations.htmlcode -
invoices.htmlcode -
notifications.htmlcode -
payment-methods.htmlcode -
plans.htmlcode -
preferences.htmlcode -
profile.htmlcode -
reports.htmlcode -
roles.htmlcode -
security.htmlcode -
sessions.htmlcode -
settings.htmlcode -
support.htmlcode -
system-status.htmlcode -
team.htmlcode -
transactions.htmlcode -
webhooks.htmlcode -
workspace-settings.htmlcode
Install
One command, whole folder.
Pulls the template into your project through the DevSnips CLI. The registry path below is stable across the CLI, MCP server and Skills.
npx devsnips add Vanilla/Templates/saas-dashboard Vanilla/Templates/saas-dashboard AI-ready
Hand the whole job to your agent — Cursor, Cline, Claude Code or Windsurf. One prompt installs the template, fixes the theme toggle, optimises it and reshapes it for what you are building.
Scaffold the DevSnips template "SaaS Dashboard" (Vanilla/Templates/saas-dashboard) into this project, then audit, fix and tailor it. 1. Install — if the DevSnips MCP server is connected, fetch the resource with get_resource(id="Vanilla/Templates/saas-dashboard"). Otherwise run npx devsnips add Vanilla/Templates/saas-dashboard and install the dependencies the template declares. 2. Audit — check the template end to end before changing anything: theme toggling (dark/light), responsive behaviour, accessibility, unused files and assets. 3. Fix — repair what the audit found, starting with the theme toggle: it must persist across reloads, never flash the wrong theme on first paint, and every component must read the same tokens in both modes. 4. Optimise and adapt — trim what the site does not need, then customise the template for the product being built here: replace the placeholder branding, copy, imagery, navigation and routes so it reads as this project rather than as a demo.
devsnips://templates/saas-dashboard The same path the CLI, MCP server and Skills resolve — one registry, one resource URI.
Source
Read it before you ship it.
The README, manifest and entry document — verbatim, straight from the registry.
# SaaS Dashboard Template (Vanilla)
A complete, commercial-grade **SaaS admin dashboard** template built with plain
HTML, CSS, and vanilla JavaScript. 30 interconnected pages share one coherent
mock dataset, a JS-injected app shell, and a single Northstar design system.
No React, no Tailwind, no bundler, no build step, no backend.
**Technology:** vanilla
**Category:** templates
**Subcategory:** saas-dashboard
**Type:** multipage (30 pages)
## Preview
Open `preview.html` in a browser (a template gallery linking to every page), or
serve the folder for local development:
```bash
cd "Vanilla/Templates/saas-dashboard"
python3 -m http.server 8080
# visit http://localhost:8080/preview.html (gallery)
# or http://localhost:8080/pages/dashboard.html (start page)
```
## What's inside
```
SaaS Dashboard/
├── preview.html # Template gallery — links to every page + design-system summary
├── pages/ # 30 interconnected pages (see below)
├── css/app.css # Shared Northstar design system (tokens, shell, components, responsive)
├── js/app.js # Shared dataset (DB) + app-shell renderer + components + chart utils
├── metadata.json # DevSnips registration metadata
├── README.md # This file
└── assets/{logo,favicon}.svg
```
### Architecture
A single `DB` object in `js/app.js` holds all mock data — customers, team,
invoices, transactions, activity, conversations, notifications, API keys,
webhooks, integrations, segments, invitations, sessions, status components,
and incidents. Every page reads from it, so a customer on the Customers page
is the same customer in transactions, activity, and the inbox. **Swap `DB` for
a real API and the render code works unchanged.**
`app.js` also injects the app shell (sidebar + topbar) around each page's
`<main data-page="…">` from a single `NAV` config, so navigation is always
consistent and there are no dead links. Shared components (modal, drawer,
confirm, toast, tabs, breadcrumbs, pagination, pills, avatars, skeleton/empty/
error states) and chart utilities (line, bar, donut, sparkline) are exposed on
`window.NS` / `window.NSCharts`.
### Pages (30)
| Section | Pages |
|---|---|
| **Overview** | dashboard, analytics, reports, activity |
| **Customers** | customers, customer-details, customer-activity, customer-segments, invitations |
| **Revenue** | billing, plans, payment-methods, invoices, transactions |
| **Communication** | inbox, notifications, preferences |
| **Workspace** | team, roles, integrations, workspace-settings |
| **Settings** | settings, profile, security, sessions, api-keys, webhooks |
| **Support** | help-center, support, system-status |
### Design system
One indigo accent (`#4f46e5`) on a cool-stone neutral ramp, semantic status
colors (success/warning/danger/info), hairline borders, restrained shadows, and
tight rhythm — via `--ds-*` CSS variables with light + dark + system-preference
variants. Reused identically across every page so the product feels cohesive.
### Features
- **Coherent mock data** shared across all pages
- **Interactive SVG charts**: line (with comparison + tooltip), bar, donut, sparklines
- **Sortable, paginated, filterable tables** with bulk selection + bulk actions
- **3-panel support inbox** (conversation list / thread / customer sidebar)
- **Modals, drawers, confirmation dialogs, toasts**
- **Permissions matrix, API keys, webhooks, integrations marketplace**
- **System status** with uptime bars + incident history
- **Loading/empty/error** application states
- **Light/dark mode** with no-flash system preference detection
- **Responsive**: sidebar → off-canvas drawer, tables → cards, multi-panel → stacked
- **Accessible**: skip link, ARIA, focus-visible rings, keyboard-operable, reduced-motion safe
### QA
Verified with Playwright across all 30 pages at 9 viewport widths
(320–1920px): **0 console errors, 0 horizontal overflow**. 11 interaction
tests pass (chart toggle, table sort/pagination, bulk selection, tab switching,
inbox reply, modal opening, mobile drawer, notifications dropdown, theme toggle).
Zero dependencies — the only external request is Google Fonts. # AGENTS.md — SaaS Dashboard
Guidance for an AI agent adapting this template. Read this before editing.
## What this template is
A multi-page SaaS operator dashboard (31 page files under `pages/`) with a shared mock data layer (`js/`), shared styles (`css/`), and a gallery preview shell (`preview.html`). The realistic product feel comes from the interconnected pages and the shared mock DB—the highest-value template in the Vanilla set.
## Design system
Built on the shared [`design-tokens.md`](../design-tokens.md) `--ds-*` token system (971 token references, 35 unique tokens). **Light-default.** When adapting:
- Keep the `--ds-*` token layer as the source of truth; do not hardcode hex values.
- Prefer 1px borders over shadows; small controlled radii; restrained surfaces.
- Single controlled accent. No glassmorphism, neon, gradients, or oversized decoration (see `design-tokens.md` §6).
- Dark mode is the same system inverted (calm)—never black + neon.
## File layout
```
SaaS Dashboard/
├── pages/ # 31 interconnected HTML pages (each links ../css + ../js)
├── css/ # shared dashboard styles (--ds-* tokens)
├── js/ # shared mock DB + interactions
├── assets/ # icons / images
├── preview.html # gallery shell (overview + page index)
├── metadata.json
└── README.md
```
Pages reference shared `../css` and `../js` via relative paths. The mock data lives in `js/` so every page renders consistently.
## How to adapt it
1. **Rebrand**: edit the `--ds-*` token values (accent, neutrals) in `css/`—every page updates together.
2. **Add a page**: copy an existing `pages/*.html`, keep the `<link>`/`<script>` relative refs, add a sidebar entry, and register it in `preview.html`'s page index.
3. **Swap the mock data**: replace the dataset in `js/` (keys + realistic content per `design-tokens.md` §48).
4. **Add a chart/table**: use the existing token-driven table styles; prefer light row dividers over boxed cells (`design-tokens.md` §34).
## Do not
- Do not split pages into separate CSS/JS per page—the shared `css/` + `js/` are what keep the 31 pages coherent.
- Do not introduce a framework (React/Vue/Tailwind/Bootstrap). Vanilla HTML + CSS + JS only.
- Do not remove the `--ds-*` token layer or hardcode visual values.
## Quality bar (enforced by `scripts/qa/resources/qa_vanilla.py`)
Every page must pass: reduced-motion guard on animations, `:focus-visible` ring, ARIA on interactive widgets, keyboard-operable controls. Run `python3 scripts/qa/resources/qa_vanilla.py` after changes.