Skip to content
VibeFather
Sign up free

About this template

This dashboard starter covers the screens a subscription product needs after someone signs in. It opens inside a fictional analytics workspace, with a populated overview, comparison charts, account health, and useful next actions. Founders and developers can explore the complete flow before connecting their own services.

The layout balances a quiet white and slate foundation with confident cobalt and signal orange. A large chart gives the first screen its visual focus, while precise typography, compact controls, and consistent borders keep dense information readable. The dark theme carries the same hierarchy into deep slate surfaces. Charts, product marks, and interface artwork are drawn in code, so the design has no dependency on remote images.

The account directory includes combined search and filters, selectable columns, pagination, bulk operations, and a detailed account drawer. A workspace switcher changes the underlying sample data. Keyboard search connects navigation and account results, while a notifications drawer leads to relevant actions. Settings cover profile editing, member roles, pending invitations, local demo API keys, plan selection, usage, and invoice downloads.

Sign-in, sign-up, and password reset screens have explicit validation. A four-step onboarding flow collects a workspace name, teammates, and integration choices before opening the app. Every simulated external operation passes through one adapter file. Browser storage preserves changes, with an in-memory fallback when storage is unavailable. No real email, payment, or authentication service is called.

Change the brand, workspace, audience, measurement focus, and owner to make another analytics product. Copy and sample records stay together, and both themes remain consistent across screens. On phones, navigation becomes a drawer and detailed tables use a contained scroll area. Empty results always offer a useful recovery action.

The template prompt

The live demo was built from exactly this text — nothing added.

# SaaS App Dashboard Starter

Build this website exactly as described below. Replace the [VARIABLES] with your own values; keep everything else.

## Brief
Build the complete logged-in product for [BRAND], a fictional analytics app for [AUDIENCE] focused on [FOCUS]. Open immediately on a richly populated overview for [WORKSPACE], then support accounts, integrations, settings, simulated auth and onboarding through one coherent local app.

- Audience: [AUDIENCE]; the demo owner is [OWNER].
- Goal: Make every visible control useful: explore sample analytics, operate a table, manage the workspace and complete all local account flows. The first view should look ready for work and every external-service operation must be replaceable through one typed local adapter.
- Tone: Clear, precise and quietly confident. Use short US English product copy, honest demo language at service boundaries and specific fictional records; no marketing superlatives.

## Stack
- Framework: Vite + React + TypeScript
- Styling: Vanilla CSS
- Libraries: react and react-dom (MIT), vite and @vitejs/plugin-react (MIT), typescript (Apache-2.0), lucide-react (ISC), @fontsource/manrope font files (OFL-1.1), @fontsource/inter font files (OFL-1.1)
- Build: `npm run build` → static files in `dist/`. No backend, no server code, no external APIs.
- Setup:
  - Use Vite + React + TypeScript with vanilla CSS, lucide-react, @fontsource/manrope and @fontsource/inter. Implement charts in original inline SVG and routing with location.hash; no chart, auth or payment SDK is required.
  - Configure Vite base './', production minification, sourcemap false, output dist/. Provide npm run build and npm run dev. Set the document title to [BRAND] and generate an original geometric SVG favicon locally.
  - Keep every visible string, default variable, seed record, chart array, plan definition and integration definition in src/content.ts. When variables change, rewrite all matching copy and invented records coherently. Derive brandSlug from [BRAND]; use it for storage namespaces, .test addresses and download filenames. Do not hard-code the template title into the product UI.
  - Put all simulated service calls and persistence in src/localAdapter.ts: loadState, saveState, signIn, signUp, requestPasswordReset, createWorkspace, inviteMember, updateMemberRole, removeMember, connectIntegration, disconnectIntegration, createApiKey, revokeApiKey, changePlan and makeInvoiceDownload. All return typed local results and Promises where pending states are useful. This is the only integration boundary a future owner replaces. Components never fetch or send network requests.
  - Maintain a versioned state shape containing profile, selectedWorkspaceId, workspace-local accounts/members/invites/integrations/keys/billing/notifications, theme, sidebar mode and onboarding draft. Persist after successful mutations in localStorage; catch storage denial, quota errors and malformed JSON, recover to valid seed state, and fall back to a module-memory store. Show a compact 'Session only' indicator if persistence is unavailable. Never store passwords or real credentials.
  - On a fresh visit with no hash, immediately show #/overview with the primary seeded workspace, a simulated active session and the light theme. Never gate first load behind auth, onboarding, empty data, an intro animation or a modal. A saved theme and workspace may restore on later visits. All named hash routes must survive direct opening and refresh. Unknown hashes resolve to #/overview.
  - Seed 36 fictional accounts: 27 Active, 6 Trial and 3 Paused; plans are Starter, Growth and Scale. First rows are Ternleaf Works, Morrow Bench, Cobalt Finch, Reedvale Lab, Parchment Grove and Emberwell Office. Generate remaining original names deterministically from local arrays. Every row has id, company, invented contact, .test email, plan, status, owner, eventCount, expansionValue, healthScore and channel. Keep computed table totals, visible KPI values, exports and chart summaries synchronized to the same source records; label all data as sample data in one quiet toolbar badge.
  - Seed the primary workspace with four members (including [OWNER]), two pending invitations, two connected generic integrations, one demo API key, four invoice records and three unread notifications. Seed a second workspace named 'Fable Quarry Lab' with a distinct set of 12 accounts and a Starter plan; rewrite it appropriately when variables change. State, keys, members, billing, notifications and record selections must never leak between workspaces.
  - Use synthetic chart categories '01' through '12' under the label 'Cycles'. Overview comparison modes are 'Recent 6 cycles' and 'All 12 cycles'. No dates, month/day names, calendar controls or timestamps appear in any UI, invoice, download or sample content.
  - Use one shared app shell, reusable form fields, popovers, focus-trapped drawers/dialogs and a toast region. Escape closes the topmost overlay and returns focus; clicking the backdrop closes dismissible overlays; destructive confirmation dialogs require an explicit action. An aria-live polite region announces saved state and errors.
  - Validate keyboard navigation and a full interaction pass at 1440x900 and 390x844. Check fresh first load, theme persistence, workspace isolation, combined table filters, one bulk action, account details, profile save, invitation/role changes, key create/reveal/copy/revoke, billing change/download, all auth screens, the complete onboarding wizard, direct hash opening and empty-state recovery. Run a production build and inspect the final dist, with zero console errors and no page-level horizontal overflow.

## Variables
- [BRAND] — Product name (default: "Quillmere Analytics"). Invented analytics product; derive its slug, demo email domain and download filenames from this value.
- [WORKSPACE] — Primary workspace (default: "Brindle Research"). Invented organization whose sample data appears on first load.
- [AUDIENCE] — Product audience (default: "Product teams at subscription software companies"). Rewrite onboarding guidance, account examples and overview insights for this audience.
- [FOCUS] — Analytics focus (default: "Account engagement and expansion"). Drive metric names, chart descriptions, account detail labels and insight copy from this measurement focus.
- [OWNER] — Demo owner (default: "Mira Calder"). Fictional workspace owner; derive a lowercase dot-separated demo email local part and use a .test domain.
- [CREDIT] — keep a small "Template by VibeFather" link to https://vibefather.ai/t/saas-app-dashboard-starter in the footer (default: yes; delete this line to remove it)

The copy under Pages & Sections is written for the default values. If your values differ, rewrite every headline, paragraph, label and image for them — same length, tone and structure. Layout, colors, type and motion stay as described.
Keep all copy, image paths and links in one content file (for example `src/content.ts`), keyed by section, so the content can be swapped later without touching components.

Pro template. The design, sections, motion and assets parts of this prompt are for Pro members. The live demo and DESIGN.md stay free.

DESIGN.md

The design system on its own — colors, type, spacing and motion. Apply this look to a project you already have.

---
name: "SaaS App Dashboard Starter"
colors:
  white_surface: "#FFFFFF"
  slate_canvas: "#F4F7FB"
  slate_ink: "#172338"
  slate_muted: "#52627A"
  slate_line: "#E2E8F0"
  confident_cobalt: "#2F5BFF"
  signal_orange: "#FF7A1A"
  cobalt_tint: "#EDF2FF"
  orange_tint: "#FFF0E4"
  dark_canvas: "#0D1422"
  dark_surface: "#151F31"
  dark_raised: "#1E2B42"
  dark_primary_text: "#F2F6FC"
  dark_secondary_text: "#A8B6CC"
  dark_line: "#2C3B53"
  error: "#B42318"
typography:
  brand_page_headings_and_kpi_values: { family: "Manrope", weights: [600, 700] }
  ui_text_labels_tables_and_body: { family: "Inter", weights: [400, 500, 600] }
spacing: "Use a 4px base unit. Main desktop padding 28px, panel padding 20–24px, grid gaps 16–20px, label-to-field gap 8px, form groups 18px. Body 14px/1.5, dense labels 12px/1.4, headings 30px/1.2 and metric values 30px/1.15. Phone page padding 16px and all interactive touch targets at least 44px. Do not add a landing-page hero or large decorative whitespace above the overview."
radius: "Cards 14px, dialogs 16px, inputs/buttons 8px, small chips 6px, status pills 999px. Light panel shadow only 0 2px 12px rgba(23,35,56,0.025); overlays may use 0 20px 60px rgba(13,20,34,0.20). Keep borders crisp; avoid glass or heavy gradients."
---

# SaaS App Dashboard Starter — Design System

Apply this design system to an existing project. It describes the look and feel only; for the full site, use prompt.md.

## Colors
- **White surface** `#FFFFFF` — Light cards, sidebar, form panels and topbar.
- **Slate canvas** `#F4F7FB` — Light main canvas and subtle secondary areas.
- **Slate ink** `#172338` — Primary text in light mode; text on orange fills.
- **Slate muted** `#52627A` — Secondary light-mode text at AA contrast.
- **Slate line** `#E2E8F0` — Light borders, chart grids and dividers.
- **Confident cobalt** `#2F5BFF` — Primary buttons, active nav, large first-screen KPI surface and main chart series; white labels.
- **Signal orange** `#FF7A1A` — Comparison line, expansion sparkline, source accents and warm signal panel; never small orange text on white.
- **Cobalt tint** `#EDF2FF` — Selected light rows and subtle accents with dark cobalt text.
- **Orange tint** `#FFF0E4` — Expansion signal callout and warnings with dark ink.
- **Dark canvas** `#0D1422` — Dark-mode main background and auth art panel.
- **Dark surface** `#151F31` — Dark cards, navigation, inputs and dialogs.
- **Dark raised** `#1E2B42` — Dark hover surfaces and alternating UI emphasis.
- **Dark primary text** `#F2F6FC` — Primary dark-mode text.
- **Dark secondary text** `#A8B6CC` — Secondary dark-mode text at AA contrast.
- **Dark line** `#2C3B53` — Dark borders and chart grids.
- **Error** `#B42318` — Light inline errors with icons; use #FFB4AB for errors in dark mode.

## Typography
- **Brand, page headings and KPI values** — Manrope (OFL), weights 600/700. Self-host the font files.
- **UI text, labels, tables and body** — Inter (OFL), weights 400/500/600. Self-host the font files.

## Spacing & shape
- Spacing: Use a 4px base unit. Main desktop padding 28px, panel padding 20–24px, grid gaps 16–20px, label-to-field gap 8px, form groups 18px. Body 14px/1.5, dense labels 12px/1.4, headings 30px/1.2 and metric values 30px/1.15. Phone page padding 16px and all interactive touch targets at least 44px. Do not add a landing-page hero or large decorative whitespace above the overview.
- Radius: Cards 14px, dialogs 16px, inputs/buttons 8px, small chips 6px, status pills 999px. Light panel shadow only 0 2px 12px rgba(23,35,56,0.025); overlays may use 0 20px 60px rgba(13,20,34,0.20). Keep borders crisp; avoid glass or heavy gradients.

## Motion
- All seeded first-screen content is immediately visible. No intro loader, skeleton waiting on a network call or delayed reveal.
- Use 120–180ms color/focus/overlay transitions with ease-out. Toasts enter 6px upward and remain about 4 seconds; actionable Undo toasts remain about 8 seconds and pause on hover/focus.
- Reduced motion removes translations, drawing and width animations while keeping all feedback and keyboard focus states.
- Respect focus-visible with a 2px cobalt outline and sufficient offset. Icon-only controls have accessible names. Hover is never the only way to operate a control.

## Imagery
All artwork is original SVG/CSS: a simple offset-square product mark, activity and sparkline charts, segmented doughnut, generic integration glyphs, outline empty states and the auth panel composition. No external bitmap, generated image, stock photo, portrait, real logo or recognizable product UI is used. The populated overview is the first-screen visual anchor; the prominent cobalt surface and orange comparison curve make the identity unmistakable.

## Tone
Clear, precise and quietly confident. Use short US English product copy, honest demo language at service boundaries and specific fictional records; no marketing superlatives.

---
— Prompt by VibeFather · https://vibefather.ai/t/saas-app-dashboard-starter · CC BY-NC 4.0 (non-commercial; commercial use needs a VibeFather Pro license) · Request removal: https://vibefather.ai/takedown

Make it yours

  • A developer tool startup: set [BRAND] to your product, [FOCUS] to API usage and error rates, and rewrite the seeded accounts as customer projects with keys and plan usage.
  • A subscription box operator: point [AUDIENCE] at fulfillment teams, rename accounts as subscriber groups, and use the billing and invoice screens for plan and renewal tracking.
  • A boutique analytics consultancy: set [WORKSPACE] to a client workspace, adjust [OWNER] and invite members, then use the workspace switcher to separate each client's sample data.
  • A founder validating a SaaS idea: keep the onboarding and auth flows, change [AUDIENCE] and [FOCUS] to your market, and swap the seeded accounts for interviews or pilot customers.

SaaS App Dashboard Starter: questions and answers

How do I change the brand name and workspace in the SaaS App Dashboard Starter?

Set [BRAND] to your product name and [WORKSPACE] to the organization whose sample data appears on first load. The template derives the brand slug, demo email domain and download filenames from [BRAND], so every matching string, invented record and seeded account is rewritten together. Also update [AUDIENCE], [FOCUS] and [OWNER] so onboarding guidance, metric names and account examples stay coherent.

Does the SaaS App Dashboard Starter connect to a real backend, payment provider or email service?

No. The SaaS App Dashboard Starter runs entirely in the browser with no backend, server code or external APIs. Every simulated service call, from sign-in and invitations to API keys and plan changes, passes through one local adapter file. Browser storage preserves your changes, with an in-memory fallback when storage is unavailable. Replacing that adapter is the single integration boundary for connecting your own services.

What screens and flows does the SaaS App Dashboard Starter include after login?

The SaaS App Dashboard Starter covers the screens a subscription product needs after sign-in: a populated overview with comparison charts, an account directory with combined search and filters, a detailed account drawer, a workspace switcher, a notifications drawer, and settings for profile, member roles, pending invitations, demo API keys, plan selection, usage and invoice downloads. Sign-in, sign-up and password reset have explicit validation, and a four-step onboarding flow collects workspace name, teammates and integration choices.

Can I use the SaaS App Dashboard Starter for a client project or a commercial product?

Commercial and client use of the SaaS App Dashboard Starter requires Pro. The template is a Pro template: its brief, stack and variables are public, the full prompt and the source code of the demos come with Pro membership. Free templates' prompts and every DESIGN.md are licensed for personal, non-commercial use only under CC BY-NC 4.0.

How do I add my own data or replace the sample accounts in the SaaS App Dashboard Starter?

Edit the seed records in the template's content file, where all visible strings, default variables, chart arrays, plan definitions and invented accounts are kept. The SaaS App Dashboard Starter seeds 36 fictional accounts across Active, Trial and Paused statuses, plus a second workspace with its own set of 12 accounts. Replace those records with your own, then connect the local adapter to your real data source so computed totals, KPI values and exports stay synchronized.

How do I build a SaaS app dashboard starter with AI?

Copy the full prompt (Pro) from this page or run npx vibefather add saas-app-dashboard-starter, replace the variables with your own content, and paste it into Claude Code, Codex, Cursor or another AI coding agent. The live demo was built from exactly that text.

Which AI model built the SaaS App Dashboard Starter demo?

The Subscription product analytics case was built by GPT-6 Astra in Codex. Each build used the published prompt with nothing added.

What tech stack and pages does the SaaS App Dashboard Starter template use?

SaaS App Dashboard Starter is a 11-page site built with React, with page transitions and micro-interactions. The prompt fixes the stack so every AI tool builds the same kind of project, and the result runs as a static site you can host anywhere.

Is the SaaS App Dashboard Starter template free to use?

SaaS App Dashboard Starter is a Pro template: the brief, stack and variables are public, and the full prompt, the source code of the live demo and a commercial license come with VibeFather Pro. Its DESIGN.md is free for personal projects.

Does the SaaS App Dashboard Starter template work on mobile?

Yes. Every SaaS App Dashboard Starter build was tested on a phone-sized screen as well as desktop before it went live, checking layout, text size and touch targets. Open the live demo on your phone, or switch the preview on this page to mobile view, to check it yourself.