ViteReact后台

sitesignal — Vite 后台模板

作者 albertoguinda

SiteSignal 是一个工业资产监控仪表板模板,内置 3 个站点、18 台机器和 60 天遥测种子数据,提供交互式 3D 平面图、多资产分析、认证与多租户功能。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

2 个预览视图
桌面端首页1 / 2
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 2

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-15查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

内置 3 个站点、18 台机器、60 天遥测种子数据,无需数据库服务器即可本地运行

02

交互式 3D 平面图,热点按严重程度脉冲,点击后侧面板显示实时传感器数据

03

多资产分析支持最多六个资产在 24 小时至 60 天窗口内比较同一指标

04

包含 193 个 Vitest 测试,覆盖工具函数、组件和 API 路由

05

支持多租户与基于角色的访问(admin/member/viewer),使用 Magic Link 无密码登录

06

提供 /design-system 路由实时渲染所有设计令牌和组件变体

模板详细介绍

SiteSignal 是一个工业资产监控仪表板模板,仓库为 albertoguinda/sitesignal。README 说明它自带真实遥测数据:3 个工业站点、18 台机器、60 天读数,并包含交互式 3D 平面图、多资产分析、认证、多租户、设计系统以及 193 个测试。

模板的主要界面包括:实时概览仪表板(KPI 卡片、迷你趋势指标、设备分布、可排序资产表、站点天气和实时告警流)、基于 react-three-fiber 的 3D 平面图(热点按严重程度脉冲,点击后侧面板加载传感器数据)、多资产分析(最多六个资产在 24 小时 / 7 天 / 30 天 / 60 天窗口内比较同一指标)、资产详情页,以及实时渲染所有设计令牌的 /design-system 路由。

技术栈方面,README 列出 React 19、Vite 8、Tailwind v4、react-three-fiber、TanStack Query、React Router v8、Recharts、Express 5、Drizzle ORM、PostgreSQL(本地开发使用嵌入式 PGlite)、Zod、Vitest 和 TypeScript。架构上,shared/types.ts 是客户端与服务端共享的类型契约。

部署方式包括 Vercel(含 vercel.json 无服务器函数路由)、Docker(多阶段构建,compose 包含 PostgreSQL)以及通用方式(npm run build 后 npm start,绑定 5000 端口)。环境变量包括 NODE_ENV、PORT、DATABASE_URL、PGLITE_DIR 和 BASE_URL。

README 未提供关于生产环境性能、并发能力或安全审计的说明,也未说明除种子数据外的实际数据接入实现细节。

ViteReact后台

适合你的项目吗?

适用场景

  • 需要快速搭建工业设备监控仪表板原型或内部工具的团队
  • 希望用自有 IoT 遥测管道替换种子数据以构建监控平台的项目
  • 需要演示 3D 平面图与传感器数据联动交互的界面场景
  • 评估多租户、角色权限和无密码认证在监控类应用中的实现方式

适合人群

  • 工业物联网或设施管理领域的全栈开发者
  • 需要可定制监控仪表板模板的前端或全栈团队
  • 希望参考 React 19、Express 5、Drizzle ORM 与 PGlite 组合实践的项目

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node 24,执行 git clone、npm install、npm run dev 后访问 http://localhost:5000

  2. 2

    本地开发默认使用嵌入式 PGlite,无需数据库服务器,种子数据已加载

  3. 3

    可通过 DATABASE_URL 连接外部 PostgreSQL,或设置 PGLITE_DIR 指定 PGlite 数据目录

  4. 4

    Vercel 部署使用 npx vercel --prod,Docker 部署使用 docker compose up

  5. 5

    通用部署执行 npm run build 后 npm start,服务绑定 5000 端口

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
查看原文依据

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-15。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
GitHub
资料与维护参考分
资料较完整 · 85 / 100
技术栈
Vite · React
网站类型
后台
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-08-13
截图检查日期
2026-10-15

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Vite。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16

查看当时使用的来源资料

SHA-256: 71e53f58c42483d8510125fe1ce2065bb9264af99ca2a4726d1ddfbb3a0608ac

2026-10-15T10:41:37.140Z

来源文件 / 仓库
# SiteSignal

[![ci](https://github.com/albertoguinda/sitesignal/actions/workflows/ci.yml/badge.svg)](https://github.com/albertoguinda/sitesignal/actions/workflows/ci.yml)
[![tests](https://img.shields.io/badge/tests%20-%20193-passing-brightgreen)](#testing)
[![docker](https://img.shields.io/badge/docker-ready-blue)](#deploy)
[![typescript](https://img.shields.io/badge/typescript-strict-3178c6)](#tech-stack)

**Live demo: [https://sitesignalui.vercel.app](https://sitesignalui.vercel.app)**

SiteSignal is an industrial asset monitoring dashboard. It ships with real telemetry data — 3 industrial sites, 18 machines, 60 days of readings — an interactive 3D floor plan, multi-asset analytics, authentication, multi-tenancy, a documented design system, and a 193-test suite. Replace the seed data with your own IoT pipeline and you have a production-ready monitoring platform.

![Overview: KPI cards, per-site ambient conditions, sortable asset table and live alert feed](docs/media/overview.png)

![Clicking a pulsing hotspot in the 3D floor plan updates the sensor readout panel](docs/media/hotspot.gif)

---

## Key Features

- **Interactive 3D Floor Plan** — Built with react-three-fiber. Clickable hotspots pulse by severity, orbit controls let you navigate the space, and selecting a hotspot loads real-time sensor data into a side panel.
- **Multi-Asset Analytics** — Compare the same metric across up to six assets over 24 h / 7 d / 30 d / 60 d windows, with aggregated stats and per-series summaries. Charts render from real bucketed readings, not mock data.
- **Live Overview Dashboard** — KPI cards, sparkline-style metric highlights, fleet distribution, sortable asset table with sticky headers, per-site weather forecasts, and a live alert feed.
- **Design System** — A living `/design-system` route renders every color token, type scale, spacing unit, and component variant live.
- **Production Architecture** — React 19, Vite 8, Express 5, Drizzle ORM, PostgreSQL (PGlite for zero-config local dev). The same code runs locally, in Docker, and on Vercel serverless functions.
- **193 Tests** — Full Vitest suite covering utilities, components, and API routes, with coverage reporting built in.
- **Multi-tenancy** — Organizations, role-based access (admin/member/viewer), and data isolation. Ready for SaaS deployment.
- **Magic Link Auth** — Passwordless login with secure session cookies, rate limiting, and security headers.

---

## Quick Start

```bash
git clone https://github.com/albertoguinda/sitesignal.git
cd sitesignal
npm install
npm run dev
```

Open [http://localhost:5000](http://localhost:5000). PGlite runs embedded — no database server required. The seed data (3 sites, 18 machines, 60 days of telemetry) is already loaded.

Requires Node 24.

---

## Deploy

### Vercel (recommended)

```bash
npx vercel --prod
```

The project includes a `vercel.json` with serverless function routing — the Express API and the static client deploy as one project. The production build (`tsc -b && vite build`) runs in CI-grade checks on every deployment.

### Docker

```bash
docker compose up
```

Multi-stage Dockerfile produces a minimal production image; the compose file includes PostgreSQL. One command, full stack.

### Anywhere Else

```bash
npm run build
npm start
```

Binds to port 5000. Set `DATABASE_URL` for external PostgreSQL, or leave it unset for embedded PGlite.

---

## How to Make It Yours

**1. Connect your own sensors**

Replace the seed data in `server/db/seed.ts` with your IoT telemetry pipeline. The schema in `server/db/schema.ts` defines `readings` and `alerts` — insert rows from MQTT, HTTP webhooks, or any ingestion path.

**2. Change the floor plan**

Edit the 3D scene in `src/components/asset-scene.tsx`. The `Hotspot` component accepts severity levels and triggers the panel update. Swap the geometry for your own facility layout.

**3. Adjust the data model**

Add new asset types in `shared/types.ts`, extend the schema in `server/db/schema.ts`, run `npm run db:generate`, and the API + UI follow the shared contract.

---

## Architecture

```
PRESENTATION        React 19 + Vite 8 + Tailwind v4 + react-three-fiber
      |
APPLICATION         TanStack Query + React Router v8 + Auth context
      |
DOMAIN              shared/types.ts (TypeScript contract between client/server)
      |
INFRASTRUCTURE      Express 5 + Drizzle ORM + PostgreSQL (PGlite or external)
```

The type contract in `shared/types.ts` is the single source of truth. Server and client both import from it — no drift, no `any`.

| Layer | Tech | Purpose |
|-------|------|---------|
| Frontend | React 19, Vite 8, Tailwind v4 | UI, 3D rendering, styling |
| State | TanStack Query | Server state, caching, refetching |
| Routing | React Router v8 | Client routes, nested layouts |
| 3D | react-three-fiber + drei | Interactive floor plan |
| Charts | Recharts | Analytics time series |
| API | Express 5, Zod validation | REST endpoints, input validation |
| ORM | Drizzle ORM | Type-safe SQL, migrations |
| Database | PostgreSQL (PGlite embedded) | Zero-config local, production-ready |
| Auth | Magic links + HTTP-only cookies | Passwordless, secure sessions |

---

## Tech Stack

| Category | Technology | Version |
|----------|-----------|---------|
| Runtime | Node.js | 24.x |
| Frontend | React | 19.2 |
| Build | Vite | 8.2 |
| Styling | Tailwind CSS | v4 |
| 3D | react-three-fiber | 9.7 |
| Charts | Recharts | 3.10 |
| API | Express | 5.2 |
| ORM | Drizzle | 0.45 |
| Database | PostgreSQL / PGlite | embedded |
| Validation | Zod | 4.4 |
| Testing | Vitest | 4.1 |
| TypeScript | TypeScript | 7.0 |
| Containers | Docker | multi-stage |

---

## Screenshots

| View | Description |
|------|-------------|
| ![Overview](docs/media/overview.png) | **Dashboard** — KPI cards, per-site ambient conditions, sortable asset table, live alert feed |
| ![Hotspot](docs/media/hotspot.gif) | **3D Floor Plan** — Click a pulsing hotspot, sensor panel updates in real time |
| ![Asset Detail](docs/media/asset-detail.png) | **Asset Detail** — Full telemetry view for a single machine with 3D context |
| ![Analytics](docs/media/analytics.png) | **Analytics** — Multi-asset metric comparison with aggregated stats and series summary |
| ![Design System](docs/media/design-system.png) | **Design System** — Every token, type scale, and component rendered live at `/design-system` |

---

## Testing

```bash
# Run all 193 tests
npm test

# Single run (CI mode)
npm run test:run

# Coverage report
npm run test:coverage

# Type checking (strict, zero any)
npm run typecheck
```

Tests live in `src/lib/__tests__/` and `server/__tests__/` and use Vitest with Testing Library.

---

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `NODE_ENV` | `development` | Environment mode |
| `PORT` | `5000` | Server port |
| `DATABASE_URL` | *(none)* | PostgreSQL connection string (omit for PGlite) |
| `PGLITE_DIR` | `./data/sitesignal` | PGlite data directory |
| `BASE_URL` | `http://localhost:5000` | Base URL for magic links |

---

## Credits

- Ambient conditions by [Open-Meteo](https://open-meteo.com)
- Embedded Postgres by [PGlite](https://pglite.dev)
- UI components by [Radix UI](https://www.radix-ui.com/)
- Icons by [Lucide](https://lucide.dev/)
- 3D rendering by [react-three-fiber](https://github.com/pmndrs/react-three-fiber)

---

MIT — see [LICENSE](./LICENSE)
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。