ViteReactAdmin dashboardPortfolio

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.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-15View source

What stands out

A quick read of the recorded project description.

01

Five complete pages: Overview, Markets, Orders, Billing, Settings

02

All asynchronous sections uniformly handle loading, empty, error, and content states

03

State simulator supports forcing state switches via dev toolbar or URL parameters

04

Dark and light themes, with charts and SVG following the theme via CSS variables

05

Uses TypeScript strict mode and a tokenized design system, with no raw hex colors

06

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.

ViteReactAdminPortfolio

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. 1

    Requires a Node.js environment, uses pnpm to install dependencies

  2. 2

    After cloning the repository, run pnpm install, then pnpm dev to start the development server

  3. 3

    The design system is already embedded in vendor/ui-next, with no additional configuration required

  4. 4

    Type checking and production build can be done via pnpm build

  5. 5

    Data is mock data, with no backend; if real data is needed, it must be integrated separately

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This 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

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.

Original README
https://github.com/moyger/edgerunner-terminal/blob/main/LICENSEhttps://github.com/moyger/edgerunner-terminal/blob/main/README.md

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: MIT](https://img.shields.io/badge/License-MIT-111111.svg)](LICENSE)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/moyger/edgerunner-terminal)

![Edgerunner Terminal — overview, dark theme](docs/assets/overview-dark.png)

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:

| | |
|---|---|
| ![Error state](docs/assets/state-error.png) | ![Empty state](docs/assets/state-empty.png) |
| `?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.

![Overview in the light theme](docs/assets/overview-light.png)

## 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.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

kiaalap

kiaalap

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

Vite · Admin dashboard

react-vite-admin

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

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

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

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

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