Skip to Content
Browse all templates at capricorn.build →

Vault Banking Dashboard

Production-ready banking dashboard built with Next.js 16, React 19, and Tailwind CSS v4. Includes accounts, transactions, cards, transfers, bill payments, analytics, and a full auth flow.

Overview

Vault is designed for fintech startups, neobank teams, and agencies who need a modern banking dashboard with account management, transaction tracking, card controls, and financial analytics — all with light and dark mode support.

Live Preview: View Demo 

Tech Stack

TechnologyVersionPurpose
Next.js16.1.6React framework (App Router)
React19.2.3UI library
TypeScript5.xType safety
Tailwind CSS4.xStyling
Framer Motion12.xAnimations & transitions
Recharts3.xCharts & data visualization
Phosphor Icons2.xIcon library
next-themes0.4.xLight/dark mode
clsx + tailwind-mergeClass name utilities

Quick Start

cd vault npm install npm run dev # Open http://localhost:3000

Pages Included (19+)

Auth Pages

PageRouteDescription
Login/loginEmail/password with social login (Google, Apple)
Sign Up/signupRegistration with password confirmation
Forgot Password/forgot-passwordPassword reset request
Reset Password/reset-passwordNew password form
Verify Email/verify-emailEmail verification screen
Onboarding/onboardingFinancial profile setup wizard

Dashboard Pages

PageRouteDescription
Overview/dashboard/overviewStats, balance chart, spending breakdown, recent transactions
Accounts/dashboard/accounts8 accounts (checking, savings, investment, credit)
Account Detail/dashboard/accounts/[id]Balance history, transactions, interest rate
Transactions/dashboard/transactionsFull transaction table with filters & pagination
Transaction Detail/dashboard/transactions/[id]Transaction metadata, reference, notes
Cards/dashboard/cardsBank cards with Visa/Mastercard themes
Card Detail/dashboard/cards/[id]Card controls, spending limits, freeze/unfreeze
Transfers/dashboard/transfersInternal, external, and wire transfers
Payments/dashboard/paymentsBill payments with auto-pay toggles
Beneficiaries/dashboard/beneficiariesSaved recipients (personal & business)
Analytics/dashboard/analytics12-month balance history, spending by category, top merchants
Settings/dashboard/settingsUser settings & preferences

Project Structure

vault/ ├── app/ │ ├── layout.tsx # Root layout (fonts, ThemeProvider) │ ├── page.tsx # Redirects to /dashboard/overview │ ├── globals.css # Theme variables & Tailwind │ ├── (auth)/ # Auth route group │ │ ├── layout.tsx # Split-panel auth layout │ │ ├── login/page.tsx # Login page │ │ ├── signup/page.tsx # Registration page │ │ ├── forgot-password/page.tsx # Forgot password │ │ ├── reset-password/page.tsx # Reset password │ │ ├── verify-email/page.tsx # Email verification │ │ └── onboarding/page.tsx # Financial profile setup │ └── dashboard/ │ ├── layout.tsx # Dashboard layout (sidebar + header) │ ├── overview/page.tsx # Main dashboard │ ├── accounts/ │ │ ├── page.tsx # Accounts list │ │ └── [id]/page.tsx # Account detail │ ├── transactions/ │ │ ├── page.tsx # Transaction history │ │ └── [id]/page.tsx # Transaction detail │ ├── cards/ │ │ ├── page.tsx # Cards management │ │ └── [id]/page.tsx # Card detail & controls │ ├── transfers/page.tsx # Send money │ ├── payments/page.tsx # Bill payments │ ├── beneficiaries/page.tsx # Saved recipients │ ├── analytics/page.tsx # Financial analytics │ └── settings/page.tsx # Settings ├── components/ │ ├── ui/ # Base UI primitives │ │ ├── Button.tsx │ │ ├── Input.tsx │ │ ├── Select.tsx │ │ ├── Textarea.tsx │ │ ├── Modal.tsx │ │ ├── Drawer.tsx │ │ ├── Dropdown.tsx │ │ ├── Badge.tsx │ │ ├── Avatar.tsx │ │ ├── Checkbox.tsx │ │ ├── Toggle.tsx │ │ ├── RadioGroup.tsx │ │ ├── TagInput.tsx │ │ ├── Card.tsx │ │ ├── Table.tsx │ │ ├── Tabs.tsx │ │ ├── Skeleton.tsx │ │ ├── ProgressBar.tsx │ │ ├── Toast.tsx │ │ ├── IconButton.tsx │ │ ├── ActionMenu.tsx │ │ ├── FormSection.tsx │ │ ├── DeleteConfirmModal.tsx │ │ ├── GoBackButton.tsx │ │ ├── EmptyState.tsx │ │ └── SocialIcons.tsx │ ├── dashboard/ # Dashboard-specific components │ │ ├── StatCard.tsx # Metric cards with trends │ │ ├── BalanceChart.tsx # Balance line chart │ │ ├── BalanceTrendChart.tsx # Balance trend over time │ │ ├── AccountBalanceChart.tsx # Per-account balance history │ │ ├── SpendingChart.tsx # Spending donut chart │ │ ├── IncomeExpenseChart.tsx # Income vs expense bars │ │ ├── AccountCard.tsx # Account summary card │ │ ├── BeneficiaryCard.tsx # Recipient card │ │ ├── BillCard.tsx # Bill payment card │ │ ├── TransactionTable.tsx # Transaction data table │ │ ├── RecentTransactions.tsx # Latest transactions widget │ │ ├── TransactionFilters.tsx # Filter controls │ │ ├── SpendingLimitCard.tsx # Card spending limits │ │ ├── Pagination.tsx # Table pagination │ │ ├── PageHeader.tsx # Page title + actions │ │ ├── SkeletonStatCard.tsx # Loading placeholder │ │ ├── SkeletonChart.tsx # Chart loading placeholder │ │ └── SkeletonTable.tsx # Table loading placeholder │ ├── features/ # Feature-specific components │ │ ├── BankCard.tsx # Visa/Mastercard rendering │ │ ├── CardControls.tsx # Card freeze, contactless, etc. │ │ ├── NotificationsDropdown.tsx # Notifications panel │ │ ├── ProfileMenu.tsx # User profile dropdown │ │ └── CommandPalette.tsx # ⌘K command palette │ └── layout/ # Layout components │ ├── Sidebar.tsx # Desktop sidebar navigation │ ├── MobileSidebar.tsx # Mobile slide-out sidebar │ ├── Header.tsx # Top header bar │ ├── SearchBar.tsx # Global search │ ├── VaultLogo.tsx # Brand logo │ ├── ThemeProvider.tsx # Dark/light mode provider │ ├── SidebarContext.tsx # Sidebar state │ └── HeaderContext.tsx # Header state ├── hooks/ │ ├── useClickOutside.ts # Click outside handler │ └── usePageHeader.ts # Page header helper ├── lib/ │ ├── utils.ts # cn(), formatCurrency(), formatDate(), etc. │ └── data/ # Mock data │ ├── accounts.ts # 8 bank accounts │ ├── transactions.ts # 32 transactions │ ├── cards.ts # 4 bank cards │ ├── beneficiaries.ts # 10 saved recipients │ ├── transfers.ts # 21 transfers │ ├── bills.ts # 10 recurring bills │ └── analytics.ts # 12-month financial history └── public/ └── images/ # Static assets

Fonts

Vault uses two Google Fonts loaded via next/font:

FontCSS VariableUsage
Figtree--font-figtreePrimary sans-serif (body text, UI)
Onest--font-onestHeadings & financial figures

Dark Mode

Vault includes full dark mode support powered by next-themes:

// app/layout.tsx import { ThemeProvider } from "@/components/layout"; <ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange > {children} </ThemeProvider>

The theme toggle is built into the dashboard header. All components use CSS variables for theming.


Components

UI Components (25+)

Base primitives used throughout the application:

import { Button, Input, Select, Textarea, Modal, Drawer, Dropdown, Badge, Avatar, Checkbox, Toggle, RadioGroup, TagInput, Card, Table, Tabs, Skeleton, ProgressBar, ToastProvider, useToast, IconButton, ActionMenu, FormSection, DeleteConfirmModal, GoBackButton, EmptyState, } from "@/components/ui";

Dashboard Components

Financial widgets and data display:

import { StatCard, BalanceChart, SpendingChart, IncomeExpenseChart, AccountCard, BeneficiaryCard, BillCard, TransactionTable, RecentTransactions, Pagination, PageHeader, } from "@/components/dashboard";

Feature Components

import { BankCard, CardControls, NotificationsDropdown, ProfileMenu, CommandPalette, } from "@/components/features";

Layout Components

import { Sidebar, MobileSidebar } from "@/components/layout"; import { Header } from "@/components/layout"; import { SearchBar } from "@/components/layout";

Icons

Vault uses Phosphor Icons v2 imported directly:

import { MagnifyingGlass, Plus, ArrowRight, CurrencyDollar, CreditCard, Bank, ChartLine, GearSix, Bell, // ... and more } from "@phosphor-icons/react";

Browse available icons at phosphoricons.com .


Data Layer

Vault uses TypeScript mock data files in lib/data/ that simulate a real banking backend. Replace these with your actual API calls when connecting to a backend.

Accounts (lib/data/accounts.ts)

import { accounts } from "@/lib/data/accounts"; // 8 accounts: checking, savings, investment, credit // Each includes 6-month balance history

Transactions (lib/data/transactions.ts)

import { transactions, getTransactionStats } from "@/lib/data/transactions"; // 32 transactions with categories, status, and computed stats

Cards (lib/data/cards.ts)

import { cards } from "@/lib/data/cards"; // 4 bank cards: Visa/Mastercard, debit/credit, themed

Beneficiaries (lib/data/beneficiaries.ts)

import { beneficiaries, getBeneficiaryStats } from "@/lib/data/beneficiaries"; // 10 saved recipients (personal & business)

Transfers (lib/data/transfers.ts)

import { transfers } from "@/lib/data/transfers"; // 21 transfers: internal, external, wire

Bills (lib/data/bills.ts)

import { bills, scheduledPayments, getBillStats } from "@/lib/data/bills"; // 10 recurring bills with auto-pay settings

Analytics (lib/data/analytics.ts)

import { getPeriodStats, getSpendingByCategory, getTopMerchants, } from "@/lib/data/analytics"; // 12-month financial history, spending breakdown, top merchants

Styling

Theme Variables (app/globals.css)

:root { --background: #ffffff; --foreground: #0a0a0a; --card: #ffffff; --border: #e5e5e5; --muted: #737373; --surface: #fafafa; } .dark { --background: #0a0a0a; --foreground: #fafafa; --card: #111111; --border: #262626; --muted: #a3a3a3; --surface: #171717; }

Tailwind v4 Theme

@theme { --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-border: var(--border); --color-muted: var(--muted); --color-surface: var(--surface); }

Vault uses a clean neutral palette with indigo accents for interactive elements, green for income, and red for expenses.


Key Features

Banking Dashboard

  • 4 Stat Cards with trend indicators: Total Balance, Monthly Income, Monthly Expenses, Savings Rate
  • Balance Trend Chart — 8-month line chart with period filters (1M, 3M, 6M, 12M)
  • Spending by Category — donut chart with 10+ categories
  • Loading States — skeleton loaders on first load

Account Management

8 pre-built accounts across 4 types:

  • Checking — Primary & Business accounts
  • Savings — High Yield & Emergency Fund
  • Investment — Portfolio tracking
  • Credit — Credit card balance tracking

Each account includes balance history, interest rates, and transaction filtering.

Bank Cards

4 themed cards (dark, blue, green, purple) with:

  • Freeze/unfreeze controls
  • Spending limits (monthly & daily)
  • Toggle online payments, contactless, international
  • Masked card number reveal

Financial Analytics

  • 12-month balance history chart
  • Spending by category breakdown
  • Income vs. expense comparison
  • Top merchants ranking

Auth Flow

Complete authentication screens including:

  • Login with social providers (Google, Apple)
  • Registration with password validation
  • Email verification
  • Password recovery flow
  • Financial profile onboarding

Customization Checklist

  1. app/layout.tsx — Update metadata (title, description)
  2. app/globals.css — Brand colors and theme variables
  3. lib/data/*.ts — Replace mock data with real API calls
  4. components/layout/Sidebar.tsx — Navigation items and branding
  5. components/layout/VaultLogo.tsx — Replace with your logo
  6. components/layout/Header.tsx — Header branding
  7. app/(auth)/*.tsx — Auth pages branding and copy
  8. public/images/ — Replace placeholder images

Deployment

Vault works with any Next.js hosting:

npm run build npm start

Support


Quick Links:

Last updated on