A self-hosted, full-stack dashboard application with a Node.js (TypeScript) backend and a pure JavaScript frontend, all running in Docker.
-
Ensure Docker and Docker Compose are installed.
-
Clone this repository:
git clone https://github.com/wyliebutler/my-dashboard.git cd my-dashboard -
Create your own secret
.envfile. You can copy the template:cp .env.sample .env
-
Edit the
.envfile and add your own unique secret:nano .env # Add a line like: JWT_SECRET=my-super-random-key -
Run the application. Docker will automatically create the database volume.
docker compose up -d --build
-
The dashboard will be available at
http://<your-server-ip>:4446. -
Use the EXPORT and IMPORT function to make a backup of your cards. Especially useful for testing the app.
The codebase has been refactored for modularity:
index.html: The main entry point.css/styles.css: Contains all custom styles and Tailwind directives.js/app.js: Contains the application logic (state management, API calls, UI rendering).
server.ts: The main entry point (TypeScript).routes/: Separate files for each API feature (auth.ts,dashboard.ts,tiles.ts,health.ts, etc.).middleware/: Reusable middleware (e.g.,authMiddleware.ts).types.ts: Shared TypeScript interfaces.
Click the Heartbeat icon (pulse) in the header to check the status of your services.
- Green Dot: Service is reachable (UP).
- Red Dot: Service is unreachable (DOWN).
- Rebuild: After making changes, rebuild the containers:
docker-compose up -d --build
If you want to create tiles for your windows apps you can use this work-a-round. Here are the steps.
- Create a folder to hold your launcher.bat file you will create. The file contents will look like this:
@echo off REM --- This script silently launches local apps from a URL ---
REM Get the full URL (e.g., "launch://notepad/") set APP_URL=%~1
REM Clean the URL to get just the app name REM This removes "launch://" and the final "/" set APP_NAME=%APP_URL:launch://=% set APP_NAME=%APP_NAME:/=%
REM --- ADD YOUR APPS HERE --- if /I "%APP_NAME%"=="notepad" ( start "" "C:\Windows\System32\notepad.exe"
) if /I "%APP_NAME%"=="Notepad++" ( start "" "C:\Program Files\Notepad++\notepad++.exe" )
REM Add more "if" blocks here for other apps exit
- Create a registry file to allow for the "launch" protocol. Clicking on this file will add it to your registry. Here's the contents:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\launch] @="URL:Launch Protocol" "URL Protocol"=""
[HKEY_CLASSES_ROOT\launch\shell]
[HKEY_CLASSES_ROOT\launch\shell\open]
[HKEY_CLASSES_ROOT\launch\shell\open\command] @=""C:\dashboard-launcher\launcher.bat" "%1""
- Create your tile as normal. In the APP URL field place: launch://notepad. Note: Make this exactly same as the APP_NAME you have in your your launcher.bat file. If you have the path and name correct your app should launch.