Base UI Free Dashboard

July 22, 2026 · View on GitHub

A free Angular admin dashboard template built with Angular 22, Tailwind CSS 4, and the Base UI free tier.

Use it as a starter for SaaS-style apps, or as a live gallery to review free Base UI components in a real shell.


Stack

LayerChoice
FrameworkAngular 22 (standalone, zoneless-friendly patterns)
StylingTailwind CSS 4
ComponentsBase UI free tier via base-ui-cli (source copied into the repo)
IconsBase UI sprite (public/assets/icons.svg)

Features

  • Auth flow — login, register, forgot password (mocked localStorage auth)
  • App shell — free base-app-shell with responsive sidebar drawer and compact topbar
  • App pages — dashboard metrics, users CRUD with dialogs, settings with in-page base-sidenav
  • Component gallery — scroll-nav demos for primitives, forms, feedback, overlays, navigation, data display, and all 19 free form blocks
  • Pro upsell notes — comments where Pro widgets/layouts would extend the free shell

Quick start

Requirements: Node.js 22+ (24 recommended)

npm install
npm start

Open http://localhost:4200.

Demo credentials

FieldValue
Emaildemo@base-ui.net
Passwordpassword

(Any email/password works — auth is mocked.)

Other scripts

npm run build           # production build → dist/base-ui-free-dashboard/browser
npm run watch           # rebuild on change
npm test                # unit tests
npm run deploy          # build + deploy to Cloudflare Pages (requires wrangler login)

Deploy (Cloudflare Pages)

The demo is set up for Cloudflare Pages with SPA routing (public/_redirects).

  1. In Cloudflare DashboardWorkers & PagesCreatePagesConnect to Git.
  2. Select lussos/base-ui-free-dashboard.
  3. Build settings:
SettingValue
Framework presetNone
Build commandnpm run build
Build output directorydist/base-ui-free-dashboard/browser
Root directory/ (default)
Environment variableNODE_VERSION = 22
  1. Deploy. Cloudflare will rebuild on every push to main.
  2. Optional: attach a custom domain under the project’s Custom domains tab.

After the first deploy you get a URL like https://base-ui-free-dashboard-demo.pages.dev.

Option B — GitHub Actions

A workflow is included at .github/workflows/deploy-cloudflare.yml.

  1. Create a Cloudflare API token with Account → Cloudflare Pages → Edit.
  2. In the GitHub repo → Settings → Secrets and variables → Actions, add:
    • CLOUDFLARE_API_TOKEN
    • CLOUDFLARE_ACCOUNT_ID (from the Workers & Pages overview sidebar)
  3. Create the Pages project once (Option A, or npx wrangler pages project create base-ui-free-dashboard-demo).
  4. Push to main (or run the workflow manually).

Option C — Deploy from your machine

npx wrangler login
npm run deploy

Config lives in wrangler.toml (pages_build_output_dir points at the Angular browser output).


App routes

RouteDescription
/loginSign in
/registerCreate account
/forgot-passwordPassword reset request
/app/dashboardOverview metrics & activity
/app/usersUsers table, create/edit/delete dialogs
/app/settingsProfile / Billing / Notifications (in-page sidenav)

Browse under Component gallery in the sidebar (requires sign-in).

RouteCovers
/app/ui/primitivesButtons, badges, chips, avatars, icons, ripple, reveal, screen size
/app/ui/formsInputs, select, OTP, phone, mask, spinner, color, rating, dual-range, filter
/app/ui/feedbackAlert, toast, progress, meter-group, counter, countdown, coming-soon
/app/ui/overlaysDialog, dropdown, context-menu, tooltip, popover, drawer, bottom-sheet, speed-dial
/app/ui/navigationTabs, breadcrumb, accordion, stepper, scroll-to, scroll buttons
/app/ui/data-displayCards, stats, calendar, carousel, code, paginator, timeline, quote
/app/ui/form-blocksAll 19 free form blocks (capped at 540px in the demo)

Gallery pages use base-scroll-nav (“On this page”), content max-width 1080px, and consistent section cards.


Project structure

src/app/
  components/          # Base UI components (CLI) + layout-app-shell
  core/auth/           # Mock auth service + guards
  layouts/
    app-shell/         # Authenticated chrome
    auth-layout/       # Login / register / forgot
  pages/
    dashboard|users|settings/
    login|register|forgot-password/
    ui/                # Component gallery
public/assets/         # Icon sprite, static assets
docs/                  # Extra architecture notes
base-ui.json           # CLI config
base-ui-lock.json      # Installed component lockfile

Import Base UI symbols with the path alias:

import { BaseButtonDirective, CardComponent } from 'Base';

Alias mapping: "Base"src/app/components/index.ts (see tsconfig.json).

Note: Components that are themselves exported from the Base barrel (especially form blocks) should import their dependencies with relative paths, not from 'Base', to avoid circular dependency errors (NG0919).


Shells vs sidenav

NeedUseTier
App chrome (sidebar + topbar + content)base-app-shell (layout-app-shell) + SidebarServiceFree
In-page section nav (Settings, docs TOC)base-sidenavFree
Nested / multi-level navmega-menu, treePro
Full opinionated dashboard pagelayout-dashboardPro

Do not use base-sidenav as the primary application shell — it is for section navigation inside a page body.

More detail: docs/shells-vs-sidenav.md.


Working with Base UI

This project already has Base UI initialized. Components live under src/app/components/ (you own the source).

# List free + pro catalog
npx base-ui-cli list

# Add a component
npx base-ui-cli add dialog -y

# Update installed components from the registry
npx base-ui-cli update -y

# Diff local vs upstream
npx base-ui-cli diff

Docs & pricing: base-ui.net · Pricing


Auth notes

  • Auth is mocked — no backend.
  • Session key: localStoragebase-ui-dashboard-auth
  • authGuard protects /app/*; guestGuard keeps signed-in users off auth pages

License

Dashboard template code in this repository is available for use in your projects.

Base UI component source copied by the CLI is licensed under the Base UI license: free-tier components are free for unlimited projects; Pro components require a license. Do not redistribute fetched component source as a standalone library or kit.