svelte-fullstack-template Svelte Themes

Svelte Fullstack Template

SvelteKit 5 (Runes) + Supabase RLS + Tailwind v4 dashboard template. Org-scoped RBAC enforced at Postgres, server, and UI layers. Real-time transactions, MRR analytics, cohort retention, audit log, Cmd+K palette.

VaultFlow (Fullstack Template)

SvelteKit 5 ยท Supabase ยท Tailwind v4 ยท TypeScript Premium fintech + SaaS dashboard template with org-level RBAC, per-resource permission overrides, real-time transactions feed, and 4,000+ rows of realistic seed data.

VaultFlow is a fully-working SvelteKit 5 admin dashboard that ships as source โ€” no closed component library. Fork once, retheme via one CSS file, sell client implementations. Two verticals in one template: flip between Fintech and SaaS mode via a config flag.

Product Demo

Documentation

  • ๐Ÿ“˜ GUIDE.md โ€” Full buyer customization guide: theme + fonts swap, adding nav items / permissions / roles, RBAC architecture, deployment, troubleshooting. Start here after the Quick start below.

What's in the box

  • Auth โ€” Supabase email/password + magic link, SSR cookies via @supabase/ssr. Editable profile, organization, and notification preferences settings pages
  • RBAC โ€” 6 system roles (super_admin, admin, finance_manager, ops_manager, analyst, viewer) + per-row resource permission overrides enforced at both Postgres RLS and route load. Real invite-member flow that creates auth users via the service client
  • Live data โ€” every chart and table reads from Supabase. 3 seeded orgs, 7 demo users, 820 customers, 2,800 transactions, 547 subscriptions, 190 fraud signals, 545 MRR snapshots, 32 notifications
  • Realtime โ€” dashboard transactions feed subscribes to Supabase Realtime
  • Charts โ€” hand-rolled SVG line, bar, donut, sparkline (no chart-library bloat)
  • Analytics โ€” MRR waterfall, cohort retention table (12-month ร— 12-month matrix), churn-by-reason, revenue-by-plan, status donut
  • Reports โ€” 4 pre-built reports with preview + schedule form + CSV export (monthly summary, fraud report, churn analysis, revenue by country); schedules persist to organizations.settings JSONB
  • API keys โ€” full personal-key CRUD with SHA-256-hashed secrets, scopes (read/write), prefix-only display after creation, and revoke
  • Billing โ€” plan tier comparison, paid/outstanding invoice counts, 12-month invoice history
  • Topbar UX โ€” notifications dropdown with unread badge + mark-all-read, and a Cmd+K command palette filtered to the user's RBAC-visible routes
  • Theme โ€” shadcn warm-orange palette (light + dark) with a compat shim so all the original brand-*/surface-* utility classes still resolve. Self-hosted fonts via @fontsource โ€” no runtime Google Fonts request
  • Accessibility โ€” focus rings, ARIA grid table, keyboard navigation, screen-reader data tables on charts
  • Mobile โ€” full responsive layout down to 320px (sidebar โ†’ bottom drawer)
  • Audit log โ€” every grant/revoke/role-change/invite/key-creation/report-schedule is recorded
  • Tests โ€” Playwright auth fixtures for every role (23 chromium E2E), Vitest unit suite for formatters + permission resolver (19 unit)

Quick start

# Requirements: Node 20+, pnpm 9+, Docker
pnpm install

# 1. Boot Supabase locally (postgres + auth + storage + realtime in Docker)
pnpm supabase:start

# 2. Apply migrations (RLS, permission catalog, etc.)
pnpm db:reset

# 3. Seed demo data โ€” 3 orgs, 7 users, 4k+ rows
pnpm seed:dev --reset

# 4. Run the app
pnpm dev
# โ†’ http://localhost:5173

Open the printed Supabase keys and paste into apps/dashboard/.env.local (or copy from .env.example).

Next: skim GUIDE.md to swap brand colors, fonts, add a permission, or deploy.

Docker (demo deploy)

The repo ships a multi-stage Dockerfile and docker-compose.yml that build the dashboard against Supabase Cloud.

# 1. Create a project at https://supabase.com โ†’ grab URL + anon key + service-role key
# 2. Apply migrations (from apps/dashboard):
#       supabase link --project-ref <your-ref> && supabase db push
# 3. Seed demo data against the cloud DB:
#       pnpm --filter dashboard seed:dev --reset
# 4. Create the runtime env file at repo root:
cp apps/dashboard/.env.example .env
#    fill in PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY
#    set ORIGIN to the public URL you'll expose (e.g. https://demo.example.com)

# 5. Build + run
docker compose up --build -d
# โ†’ http://localhost:3000

See GUIDE.md โ†’ Deployment for the full walkthrough (reverse proxy, TLS, env reference).

Demo credentials

Email Role What they see
alice@novapay.io super_admin Everything
bob@novapay.io admin All except billing changes
carol@novapay.io finance_manager Transactions, customers, revenue, reports
dave@novapay.io analyst Read-only on most, can export
eve@novapay.io viewer Read-only basics
frank@novapay.io ops_manager Payments, fraud, customer ops
grace@novapay.io analyst (+ override) Same as Dave plus explicit transactions:export grant

Password for all: Demo@1234

Tech stack

Layer Choice
Framework SvelteKit 5 (Runes API)
Styling Tailwind CSS 4 (CSS-first, no JS config)
Theme shadcn token system (:root + .dark) โ€” warm-orange palette, easy re-skin
Fonts Montserrat / Merriweather / Ubuntu Mono โ€” self-hosted via @fontsource
UI Custom Svelte components + Bits UI primitives
Icons @lucide/svelte
Charts Hand-rolled SVG (no external chart library)
Database Supabase (Postgres 15 + RLS + Realtime + Auth)
Auth Supabase Auth (cookie-based SSR)
Validation Zod
Testing Playwright (E2E) + Vitest (unit)
Bundler Vite 6

Project structure

apps/dashboard/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app.css                      # Tailwind v4 + shadcn design tokens + compat shim
โ”‚   โ”œโ”€โ”€ hooks.server.ts              # Supabase auth middleware
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ ui/                  # Card, Button, Input, Badge, Label
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ layout/              # Sidebar, Topbar, UserMenu, Notifications, CommandPalette
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ data-table/          # Generic paginated DataTable
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ charts/              # LineChart, BarChart, DonutChart, SparkLine
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ SlideOver.svelte     # Drawer modal
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ StatusBadge.svelte   # Toned status pill
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ PermissionGuard.svelte
โ”‚   โ”‚   โ”œโ”€โ”€ config/                  # app.config, nav.config (RBAC-aware nav)
โ”‚   โ”‚   โ”œโ”€โ”€ db/seed/                 # Seed scripts (orgs, users, domain data, notifications)
โ”‚   โ”‚   โ”œโ”€โ”€ server/                  # supabase.ts + permission resolver
โ”‚   โ”‚   โ”œโ”€โ”€ stores/                  # ui.store.svelte (sidebar, theme, cmd-k state)
โ”‚   โ”‚   โ”œโ”€โ”€ types/                   # database.types, rbac.types, domain.types
โ”‚   โ”‚   โ””โ”€โ”€ utils/                   # cn, formatters, export (CSV)
โ”‚   โ””โ”€โ”€ routes/
โ”‚       โ”œโ”€โ”€ (auth)/                  # login, signup, forgot-password
โ”‚       โ”œโ”€โ”€ (app)/                   # protected; full dashboard
โ”‚       โ”‚   โ”œโ”€โ”€ dashboard            # Overview with KPIs + realtime feed
โ”‚       โ”‚   โ”œโ”€โ”€ transactions         # Full ledger + slide-over
โ”‚       โ”‚   โ”œโ”€โ”€ payments             # Volume + success rate + method mix
โ”‚       โ”‚   โ”œโ”€โ”€ fraud                # Signals + resolve workflow
โ”‚       โ”‚   โ”œโ”€โ”€ customers            # List + detail
โ”‚       โ”‚   โ”œโ”€โ”€ subscriptions
โ”‚       โ”‚   โ”œโ”€โ”€ revenue              # MRR trend + waterfall + cohort retention + churn
โ”‚       โ”‚   โ”œโ”€โ”€ reports              # Library + /[slug] preview & schedule
โ”‚       โ”‚   โ”œโ”€โ”€ team                 # RBAC showcase + invite-member form
โ”‚       โ”‚   โ”œโ”€โ”€ audit-log
โ”‚       โ”‚   โ””โ”€โ”€ settings/            # profile, organization, notifications, api-keys, billing, appearance
โ”‚       โ””โ”€โ”€ api/
โ”‚           โ”œโ”€โ”€ export/[slug].csv    # CSV report exports
โ”‚           โ””โ”€โ”€ notifications/read   # POST mark-read endpoint
โ”œโ”€โ”€ supabase/migrations/             # Schema + RLS + permission catalog + api_keys
โ”œโ”€โ”€ static/favicon.svg               # Warm-orange gradient brand mark
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ e2e/                         # Playwright per-role suites (23 chromium tests)
โ”‚   โ””โ”€โ”€ unit/                        # Vitest (19 tests)
โ”œโ”€โ”€ playwright.config.ts
โ””โ”€โ”€ vite.config.ts

Configuration

Edit apps/dashboard/.env.local:

Var Purpose
PUBLIC_SUPABASE_URL Your Supabase project URL
PUBLIC_SUPABASE_ANON_KEY Anon (or new sb_publishable_*) key
SUPABASE_SERVICE_ROLE_KEY Service-role key (server-only, used for seeds)
DATABASE_URL Direct Postgres URL (used by seed scripts)
PUBLIC_APP_MODE fintech | saas | both
PUBLIC_APP_NAME Branding name shown in topbar/logo
PUBLIC_DEFAULT_CURRENCY Default currency for formatters
PUBLIC_FEATURE_REALTIME Toggle Supabase Realtime subscriptions
PUBLIC_FEATURE_FRAUD Show/hide fraud module
PUBLIC_FEATURE_EXPORTS Show/hide export buttons
PUBLIC_FEATURE_REPORTS Show/hide reports module

Support & commercial work

VaultFlow is free under MIT โ€” but if you'd rather hire someone to customize, integrate, or build on top of it, nuvraxis.com offers commercial support, custom builds, and implementation services.

For non-commercial questions, open a GitHub issue or start a discussion.

For security vulnerabilities, please email [email protected] โ€” don't open a public issue.

License

MIT ยฉ nuvraxis. Use it, fork it, ship it, sell it โ€” just keep the copyright notice.


VaultFlow by nuvraxis ยท Built with SvelteKit 5 ยท Tailwind CSS v4 ยท Supabase

Top categories

Loading Svelte Themes