Five complete pages: Overview, Markets, Orders, Billing, Settings
edgerunner-terminal — Vite Admin dashboard Template
By moyger
Edgerunner Terminal is a data-dense trading portfolio dashboard template built with Vite, React 19, TypeScript, and Tailwind CSS v4, with built-in loading, empty, and error states, using only mock data and no backend.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
All asynchronous sections uniformly handle loading, empty, error, and content states
State simulator supports forcing state switches via dev toolbar or URL parameters
Dark and light themes, with charts and SVG following the theme via CSS variables
Uses TypeScript strict mode and a tokenized design system, with no raw hex colors
Responsive layout: sidebar collapses to a drawer, tables use column priority and horizontal scrolling
Template Details
Edgerunner Terminal is a trading portfolio dashboard template containing five pages: Overview, Markets, Orders, Billing, and Settings. Its core characteristic is that all asynchronous sections handle four states through a unified QuerySection component: skeleton, error with retry, empty state with call to action, and content. The template includes a state simulator that can force any data domain into a specified state via a dev toolbar or URL parameters (such as ?state=error&domain=positions). The theme supports dark (default) and light, switched via the data-theme attribute, with charts and SVG following the theme using CSS variables. The project uses TypeScript strict mode, the design system is embedded as vendor/ui-next, and the repository is self-contained. Data is deterministically seed-generated mock data with simulated latency and fault injection, requiring no backend setup. The README does not describe production deployment, real data integration, or performance characteristics.
Is it right for your project?
Use Cases
- Show how a trading portfolio dashboard behaves in loading, empty, and error states
- Serve as a frontend starting point for developing trading dashboards, replacing mock data with real data
- Demonstrate how to uniformly manage asynchronous data states and theme switching
- Use for teaching or demonstrating the integration of React, TanStack Query, and Tailwind CSS
Suitable For
- Frontend developers who need a trading portfolio dashboard template
- Projects looking for reference patterns for data state handling
- Teams using React, TypeScript, and Tailwind CSS
- Developers who need to quickly prototype a dashboard and customize the theme
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires a Node.js environment, uses pnpm to install dependencies
- 2
After cloning the repository, run pnpm install, then pnpm dev to start the development server
- 3
The design system is already embedded in vendor/ui-next, with no additional configuration required
- 4
Type checking and production build can be done via pnpm build
- 5
Data is mock data, with no backend; if real data is needed, it must be integrated separately
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
- The template uses only mock data and has no backend; if real positions or live price data are needed, an external data source must be integrated separately.
- Data is deterministically seed-generated mock data with simulated latency and fault injection, and does not include real trading or market data.
- To integrate real positions or live price APIs, refer to docs/REUSE.md to configure external services yourself.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
Vite + React 19 + TypeScript + Tailwind v4, on a token-strict design system. Mock data only, no backend — clone it and run it.
Original README
- **Typed mock data** — deterministic seeded generators with simulated latency and failure injection. No backend to stand up.
Original README
https://github.com/moyger/edgerunner-terminal/blob/main/LICENSEhttps://github.com/moyger/edgerunner-terminal/blob/main/README.mdSee [`docs/REUSE.md`](docs/REUSE.md) — how to stand it up, point it at real holdings (your own positions or a live price API), and re-skin it for a different domain.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-15. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 85 / 100
- Technologies
- Vite · React
- Website type
- Admin dashboard · Portfolio
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-06-18
- Screenshot last checked
- 2026-10-15
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Vite as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: codex-user-requested-batch-review-20261017 · 2026-10-16
Inspect the recorded source material
SHA-256: 758c62fd39c9c293fec1a6ea43711999f65dfa3328d83621cc3d970b08807135
2026-10-15T09:00:51.355Z
Source file / repository# Edgerunner Terminal
A data-dense **trading-portfolio dashboard template** with first-class loading, empty, and error states — built to be judged by its worst moment, not its populated screenshot.
[](LICENSE)
[](https://vercel.com/new/clone?repository-url=https://github.com/moyger/edgerunner-terminal)

Vite + React 19 + TypeScript + Tailwind v4, on a token-strict design system. Mock data only, no backend — clone it and run it.
**Live demo: [edgerunner.karloestrada.com](https://edgerunner.karloestrada.com)** — or spin up your own in one click with the button above.
---
## Why this one is different
Most dashboard templates are sold on a screenshot where everything is populated and calm. That is the state a real dashboard is rarely in. This one treats **loading, empty, and error** as first-class: every async section on every screen renders through one gate (`QuerySection`) with four outcomes — skeleton, error + retry, empty + call to action, or content.
Every state is inspectable. A floating dev toolbar forces any data domain into any state live, and the states are addressable by URL:
| | |
|---|---|
|  |  |
| `?state=error&domain=positions` | `?state=empty&domain=all` |
## Features
- **Five screens** — Overview (KPIs, portfolio chart, allocation, positions), Markets, Orders, Billing, Settings.
- **Every state, everywhere** — loading skeletons, retryable errors, and empty states with CTAs, on every async block.
- **State simulator** — force any domain into any state from the dev toolbar or via URL params.
- **Dark + light themes** — one attribute flip; charts and SVGs retheme via CSS variables. Both palettes audited for WCAG AA contrast at build time.
- **Token-strict** — no raw hex, no off-grid spacing; colors and a strict 4px grid come from the design system.
- **Responsive** — sidebar collapses to a drawer, tables use column-priority + horizontal scroll, KPI grid reflows.
- **Typed mock data** — deterministic seeded generators with simulated latency and failure injection. No backend to stand up.
## Quick start
```bash
git clone https://github.com/moyger/edgerunner-terminal.git
cd edgerunner-terminal
pnpm install
pnpm dev # http://localhost:5173
```
That's it. The design system is **vendored into `vendor/ui-next`**, so the repo is self-contained — no linked sibling packages, no extra setup.
```bash
pnpm build # type-check + production build
pnpm typecheck
```
## Simulating states
The whole point of the template. Drive states three ways:
- **Dev toolbar** (bottom-right) — per-domain normal / empty / error, plus a latency dial (0–4s).
- **URL params** — `?state=error&domain=positions`, `?state=empty&domain=all`, `?latency=3000`.
- **TanStack Query** — every section is a real query; the toolbar invalidates and refetches live.
## Theming
Dark is the default (`:root`); light is a `data-theme="light"` override. Toggle in the topbar or in Settings → Appearance; preference persists with a FOUC guard. Charts bind to `var(--color-*)`, so they follow the theme too.

## The design system
This template is built on the **Edgerunner design system** ([repo](https://github.com/moyger/design-system-kit)), vendored into [`vendor/ui-next`](vendor/ui-next). Tokens come from a single source of truth (`design.md`) and are generated, not hand-edited. To re-sync the vendored copy from a local checkout of the kit:
```bash
pnpm sync:kit
```
Generic UI primitives (Table, Tabs, Dialog, Tooltip, Skeleton, EmptyState, Card, …) live in the kit. This repo holds only app-specific composites: the layout shell, charts, `StatCard`, and the `QuerySection` data-state wrapper.
## Project structure
```
src/
├── data/ # typed models, seeded generators, fake client, query hooks, sim config
├── components/
│ ├── layout/ # AppShell, Sidebar, Topbar, MobileNav
│ ├── data-state/ # QuerySection, ErrorState, skeletons
│ ├── charts/ # Recharts wrappers (token-bound)
│ └── dev-toolbar.tsx
├── features/ # overview, markets, orders, billing, settings
└── theme/ # theme provider + persistence
vendor/ui-next/ # vendored Edgerunner design system
```
## Stack
Vite 6 · React 19 · TypeScript (strict) · React Router 7 · TanStack Query 5 · Tailwind CSS v4 · Recharts 3 · lucide-react.
## Customize / reuse
See [`docs/REUSE.md`](docs/REUSE.md) — how to stand it up, point it at real holdings (your own positions or a live price API), and re-skin it for a different domain.
## The story
A short write-up on the thinking behind it lives in [`docs/article-the-states-are-the-product.md`](docs/article-the-states-are-the-product.md).
## License
[MIT](LICENSE) © Karlo Estrada. The data is mock; the portfolio persona ("Alex Rivera") is fictional.
Explore similar templates
Compare previews and descriptions within the same stack and category.

kiaalap
Kiaalap is a free, open-source admin template from Colorlib for education, online courses, and school management.
Vite · Admin dashboard

react-vite-admin
A backend management starter built on Vite and React, integrating Recoil, React Query, TypeScript, and Axios, with Ant Design-style interface screenshots. Suitable as a starting point for management-side projects, licensed under MIT, with Chinese documentation and common scripts.
Vite · Admin dashboard

admin-antd-react
A Vite + React 18 admin template using Ant Design and Recoil, with login, logout, and registration flows; page, button, and permission configuration verification; internationalization; dynamic sidebar and breadcrumbs; Svg Sprite icons; Mock data; and list, form, and detail page examples.
Vite · Admin dashboard

arco-admin-template
A Vite + React mid-to-back-office template using Arco Design, react-router-dom v6, mockjs, and less, with internationalization, theme customization, and light/dark switching. Includes login, dashboard, resource, component examples, settings, and 404 pages.
Vite · Admin dashboard

super-admin
A React, Vite, and Antd admin template that implements multi-tab route caching similar to Vue keepalive and route-based permission control.
Vite · Admin dashboard

react-vite-tailwind-typescript-firebase-auth-template
A starter template for backend applications using Vite, React, TypeScript, TailwindCSS, and Firebase Auth, featuring login and dashboard interfaces. Requires your own Firebase project and credentials in .env; no backend logic included.
Vite · Admin dashboard
