由 Kobe 出售

Dashy is an open-source dashboard that organizes all your self-hosted services in one place, with status monitoring, widgets, multi-user auth, theming, and YAML-based configuration.
Dashy is a self-hosted dashboard application built on Vue 3 (frontend) and Express (backend) that aggregates links, services, and widgets into a single configurable UI. It supports multi-page layouts, real-time status indicators, SSO authentication, theming, and YAML-based configuration. The typical buyer is a developer or homelab operator embedding Dashy's server logic, auth middleware, or frontend scaffold into an existing Node.js/Express project.
.devcontainer/ - VS Code Dev Container configuration for reproducible development environments.github/ - GitHub Actions workflows for CI, Docker publishing, release drafting, and issue templates.vscode/ - VS Code launch configurations for debuggingdocs/ - Comprehensive markdown documentation covering configuration, authentication, theming, widgets, and deploymentpublic/ - Static assets served directly (icons, manifest, robots.txt)services/ - Express server modules: app router, SSL server, print-message helpersrc/ - Vue 3 frontend source: components, store, router, utilities, directives, pluginsuser-data/ - User-specific YAML config files and custom assets mounted at runtimeserver.js - Main Node.js entry point; creates HTTP (and optionally HTTPS) server from the Express appvite.config.mjs - Vite build configuration with PWA, SVG loader, and user-data dev middlewarevitest.config.mjs - Vitest unit test configuration with happy-dom and coverage reportingeslint.config.mjs - Flat ESLint config for Vue 3 + import hygienedocker-compose.yml - Docker Compose service definition for containerized deploymentpackage.json - NPM manifest with all dependencies and scriptsindex.html - Vite HTML entry point for the Vue apptsconfig.json - TypeScript compiler options (primarily for editor support)netlify.toml - Netlify deployment configuration with redirect rulesnpm install express express-basic-auth js-yaml crypto-js dompurify ajv ajv-formats
npm install @sentry/vue keycloak-js oidc-client-ts rsup-progress
npm install vue@3 vue-router@4 vuex@4
npm install @codemirror/autocomplete @codemirror/commands @codemirror/lang-yaml \
@codemirror/language @codemirror/lint @codemirror/search @codemirror/state @codemirror/view
npm install @jsonforms/core @jsonforms/vue @jsonforms/vue-vanilla
npm install @lezer/highlight frappe-charts simple-icons
npm install vue-select
启动隔离沙箱并在服务器端直接运行 — 无需本地配置。
此版本的 Tetrees AI Review
This Vue, Express web app completed archive review with strong static results. Structure, dependency manifests, documentation, functional source, and common risk patterns were checked by the Tetrees verification pipeline; runtime phases are stated separately.
Deterministic AVCP artifact review
管道 avcp-2026-08-04.1 · SHA-256 8079dd3a64a3aedb…
This version-scoped review deterministically inspects the submitted archive for structure, dependencies, documentation, functional source, and common malicious or high-risk signals. Build and test phases are reported as passed only after an isolated sandbox audition. It is not a guarantee of perfect security.
审查日期 2026年8月4日
将此产品直接导入你的 AI IDE、网页构建器或云端 IDE。
将 Tetrees 连接到兼容的 AI IDE,列出你拥有的产品并获取已验证 ZIP,同时不会开放卖家上传权限。
暂无评价。
Sign in to join the discussion
Loading discussion…
No native modules, pod installs, or Expo prebuild steps are required. The project is pure Node.js/browser.
Copy the source/ directory contents into your project root or a dedicated subdirectory (e.g., ./dashy/).
Install dependencies from the source/package.json:
cd dashy
npm install
Build the Vue frontend before starting the Express server:
npm run build
# outputs to dashy/dist/
Configure the tsconfig.json path alias if integrating src/ into a TypeScript project:
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
}
}
Set environment variables before running the server:
PORT=8080 # HTTP port (default: 8080 in Docker, 4000 on bare metal)
HOST=0.0.0.0 # Bind address
IS_DOCKER=true # Set if running inside a container
USER_DATA_DIR=./user-data # Path to YAML config and custom assets
SSL_PRIV_KEY_PATH=... # Optional: path to SSL private key
SSL_PUB_KEY_PATH=... # Optional: path to SSL certificate
Start the server:
node server.js
For development with hot reload:
npm run dev
# Vite dev server with user-data middleware and HMR
To run unit tests:
npm run test
app (Express application) — services/app.jsconst app: Express = require('./services/app');
The fully configured Express application with all routes, middleware, static file serving, and authentication wired. Import and pass to http.createServer() or mount as a sub-app in an existing Express project. This is the primary integration point for the backend.
sslServer.startSSLServer — services/ssl-server.jsimport sslServer = require('./services/ssl-server');
sslServer.startSSLServer(app: Express): void;
Checks for SSL_PRIV_KEY_PATH and SSL_PUB_KEY_PATH environment variables and, if present, starts an HTTPS server alongside the HTTP one. Call after your HTTP server is created. Safe to call unconditionally — it no-ops if SSL env vars are absent.
printMessage — services/print-message.jsconst printMessage: (ip: string, port: number | string, isDocker: boolean) => string
= require('./services/print-message');
Returns a formatted ASCII welcome string for console output, showing the local and network URLs. Used in server.js after DNS lookup. Useful when embedding Dashy's server startup sequence into a custom launcher script.
serviceWorker — src/utils/InitServiceWorker.jsimport serviceWorker from '@/utils/InitServiceWorker';
serviceWorker(): void;
Registers the Vite PWA service worker. Called once during app initialization in main.js before mounting. Only relevant in the frontend context; skip if you are only integrating the Express backend.
i18n — src/utils/i18n.jsimport i18n from '@/utils/i18n';
// i18n is a vue-i18n instance; exported so non-component callers can call:
i18n.global.t('some.key');
The shared vue-i18n instance. Installed as a plugin via app.use(i18n) and also exported directly for use in utility modules outside Vue components.
You have an existing Express server and want to mount Dashy's full backend (static files, API routes, auth) under a sub-path.
import express from 'express';
import http from 'http';
// Require Dashy's pre-configured Express app
const dashyApp = require('./dashy/services/app');
const sslServer = require('./dashy/services/ssl-server');
const printMessage = require('./dashy/services/print-message');
const rootApp = express();
// Mount Dashy under /dashboard
rootApp.use('/dashboard', dashyApp);
// Your own routes
rootApp.get('/health', (_req, res) => res.json({ status: 'ok' }));
const port = process.env.PORT || 3000;
const host = process.env.HOST || '0.0.0.0';
http.createServer(rootApp).listen(port, host, () => {
console.log(printMessage('localhost', port, false));
});
// Optionally start SSL alongside
sslServer.startSSLServer(rootApp);
Start Dashy as a standalone process with non-default port and user data directory, matching a production Docker-less deployment.
// launch-dashy.ts (compiled to JS or run via tsx)
import { execSync } from 'child_process';
import path from 'path';
process.env.PORT = '9000';
process.env.HOST = '127.0.0.1';
process.env.USER_DATA_DIR = path.resolve(__dirname, './config');
process.env.IS_DOCKER = 'false';
// Build frontend first if dist/ doesn't exist
try {
execSync('npm run build', { cwd: path.resolve(__dirname, './dashy'), stdio: 'inherit' });
} catch (e) {
console.error('Build failed', e);
process.exit(1);
}
// Now start the server
require('./dashy/server');
Integrate Dashy's plugin stack (store, router, i18n, modal, toast, directives) into a custom Vue 3 entry point.
// my-main.ts
import { createApp } from 'vue';
import MyApp from './MyApp.vue';
// Dashy's shared infrastructure
import store from './dashy/src/store';
import router from './dashy/src/router';
import i18n from './dashy/src/utils/i18n';
import VModal from './dashy/src/plugins/modal';
import Toast from './dashy/src/utils/Toast';
import clickOutside from './dashy/src/directives/ClickOutside';
import tooltip from './dashy/src/directives/Tooltip';
import Modal from './dashy/src/components/FormElements/Modal.vue';
import ErrorHandler from './dashy/src/utils/logging/ErrorHandler';
import serviceWorker from './dashy/src/utils/InitServiceWorker';
const app = createApp(MyApp);
app.use(store);
app.use(router);
app.use(i18n);
app.use(VModal);
app.use(Toast);
app.component('modal', Modal);
app.directive('clickOutside', clickOutside);
app.directive('tooltip', tooltip);
app.config.errorHandler = (err, _instance, info) => {
ErrorHandler(`Vue error in ${info}`, err);
};
serviceWorker();
app.mount('#app');
server.js - Entry point: resolves port/host from env, creates HTTP server using services/app, starts SSL server, prints welcome message.services/app.js - Core Express application: registers all middleware, static file serving from dist/, API routes, and authentication handlers.services/ssl-server.js - Conditionally starts an HTTPS server when SSL cert env vars are present.services/print-message.js - Returns a formatted startup banner string with local and network access URLs.src/main.js - Vue 3 app factory: registers all plugins, global components, directives, error handlers, and mounts to #app.src/App.vue - Root Vue component (Dashy) that bootstraps the layout.src/store/ - Vuex store for application state (config, user auth state, UI preferences).src/router/ - Vue Router configuration defining all page routes.src/utils/ - Utility modules: i18n setup, service worker init, error reporting, auth helpers (Keycloak, OIDC, Header), Toast notifications.src/components/ - All Vue components: dashboard items, widgets, form elements, modals, theming UI, etc.src/directives/ - Custom Vue directives: ClickOutside (for closing overlays) and Tooltip.src/plugins/ - Vue plugins: modal plugin that adds $modal.show()/$modal.hide() to all components.user-data/ - Runtime YAML config files (e.g., conf.yml) and user assets; served in dev by Vite middleware and copied to dist/ on build.vite.config.mjs - Vite config: Vue plugin, PWA, SVG loader, user-data dev middleware, env prefix VITE_ and DASHY_.vitest.config.mjs - Test runner config: happy-dom environment, global test functions, @ alias matching Vite config.eslint.config.mjs - Flat ESLint config for ES2022 + Vue 3 flat/recommended + import-x plugin.public/ - Static files copied verbatim to dist/ (favicons, manifest, etc.).docs/ - Markdown documentation for all Dashy features; not bundled into the app.dist/ not found at server startup: server.js serves files from dist/ which requires a prior npm run build; always build before running node server.js.@ alias not resolved in your IDE or bundler: Add "paths": { "@/*": ["./src/*"] } to tsconfig.json and mirror the alias in your own Vite/Webpack config as shown in vite.config.mjs.VITE_ or DASHY_ are exposed to the frontend bundle (set via envPrefix in vite.config.mjs); backend-only vars (e.g., PORT, IS_DOCKER) are Node.js process.env only.serveUserData Vite plugin reads from the path in USER_DATA_DIR env var (default ./user-data); set this env var if your config lives elsewhere.server.js: server.js and all services/ files use CommonJS (require); do not rename them to .mjs or add "type": "module" to package.json without converting all require calls to import.sslServer.startSSLServer() no-ops if SSL_PRIV_KEY_PATH or SSL_PUB_KEY_PATH are unset; verify both env vars point to readable files if HTTPS is expected.I have purchased the "dashy" source block. The source is in ./dashy/ and the
integration guide is at ./USAGE.md. The upstream package is user@example.com (Vue 3 + Express).
Please integrate Dashy into my existing project step-by-step:
1. Read USAGE.md fully before writing any code.
2. Mount the Dashy Express app (./dashy/services/app.js) into my existing
Express server at the /dashboard sub-path.
3. Wire the SSL server helper (./dashy/services/ssl-server.js) to start
alongside my main HTTP server.
4. Ensure the build step (npm run build inside ./dashy/) runs before the
server starts; add it to my build pipeline or startup script.
5. If I need the Vue frontend, show me how to integrate Dashy's store, router,
i18n, and plugin registration from ./dashy/src/main.js into my own
Vue 3 entry point without duplicating the app mount.
6. List any environment variables I must set (PORT, HOST, IS_DOCKER,
USER_DATA_DIR, SSL_PRIV_KEY_PATH, SSL_PUB_KEY_PATH) and where to place them.
7. Do not invent any API that is not documented in USAGE.md or visible in the
source files under ./dashy/.
8. Show complete, runnable code for each integration step.
Dashy is released under the MIT License. See source/LICENSE for the full text. Upstream project: dashy on npm (version 4.0.6) and github.com/Lissy93/dashy.
This product’s unique contribution is clean room implementation of valuable code block into AVCP compatible standard.
完整安装指南与集成提示词将在购买后解锁。
CRM, ERP, Admin & Internal Tools
免费