Network dashboard — device discovery, monitoring and management
  • JavaScript 87.9%
  • CSS 8.9%
  • Shell 1.5%
  • PowerShell 1.4%
  • HTML 0.2%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
balnaimi 07752293d4
All checks were successful
CI / test (push) Successful in 1m48s
Publish Docker image / build-and-push (push) Successful in 22s
chore: point docker-compose and docs at Forgejo container registry
2026-08-27 21:20:57 +03:00
.cursor/rules ci: add GHCR publish workflow and document release process 2026-08-27 20:29:05 +03:00
.github/workflows ci: run API tests in one step so the server survives on Forgejo runner 2026-08-27 21:16:30 +03:00
scripts fix(security): harden setup, headers, and CORS 2026-08-19 19:09:24 +03:00
server release: bump version to 1.11.0 2026-08-21 22:21:06 +03:00
shared feat: v1.8.3 — enhance backup and alert features, update dependencies 2026-06-17 02:14:40 +03:00
web release: bump version to 1.11.0 2026-08-21 22:21:06 +03:00
.dockerignore chore(docker): exclude nested .env files from image build 2026-08-19 21:57:33 +03:00
.env.example feat(api): notifications, audit log, WoL, custom ports, device watch, CSV export, webhook hardening 2026-08-21 22:19:06 +03:00
.gitignore feat(ui): locale parity, IP LTR, mobile nav, tooltips, E2E (v1.4.0) 2026-05-24 20:32:14 +03:00
.nvmrc Upgrade Node.js version to 24 LTS in Dockerfile, scripts, and package configurations. Update dependencies in package.json and package-lock.json for better compatibility and performance. Revise README for updated requirements and installation instructions. 2026-01-10 15:44:45 +03:00
docker-compose.yml chore: point docker-compose and docs at Forgejo container registry 2026-08-27 21:20:57 +03:00
Dockerfile fix(docker): v1.5.3 — include shared/ in container layout 2026-06-17 01:25:40 +03:00
LICENSE Initial commit 2025-12-15 15:22:33 +03:00
package.json release: bump version to 1.11.0 2026-08-21 22:21:06 +03:00
README.md chore: point docker-compose and docs at Forgejo container registry 2026-08-27 21:20:57 +03:00
README_AR.md chore: point docker-compose and docs at Forgejo container registry 2026-08-27 21:20:57 +03:00

#Network Dashboard

For Arabic version, see README_AR.md

A modern dashboard for managing and monitoring devices on your network with SQLite database.

##Features

  • Network and device management
  • Automatic and manual network scanning to discover devices
  • Visual statistics display
  • Complete tag management
  • SQLite database
  • Multi-language support (Arabic/English) with easy switching
  • Dark/Light mode
  • Favorites and groups management (create, edit, delete, reorder)
  • Authentication system (Admin and Visitor)
  • Password change (Admin and Visitor)
  • Detailed network view with device grouping
  • Comprehensive statistics (online/offline devices)
  • Modern and responsive user interface
  • Global search across hosts and networks
  • Uptime dashboard with per-host history
  • Auto-scan alerts (in-app toasts, optional browser notifications, webhook)
  • Export/import JSON and scheduled server backups
  • PWA install support
  • MAC vendor (OUI) lookup and device classification on scan

Available Pages

-Setup Page - Initial password setup on first run -Login Page - User authentication -Networks List - View and manage all networks -Network View - Detailed view of a specific network with device grouping -Hosts List - View all devices across all networks -Favorites - Manage favorite devices and groups -Tags Management - Create and manage tags -Change Admin Password - Change administrator password -Change Visitor Password - Change visitor password -Settings - Version, changelog, notifications, export/import, webhook (admin)


Trying and running the app (Docker Compose)

The easiest way to try the app is Docker Compose with the pre-built image published on GitHub Container Registry — no local build needed.

Goal Command
Pull the latest image and run (foreground logs) docker compose pull && docker compose up
Same, detached (background) docker compose pull && docker compose up -d
Stop containers docker compose down
Stop and wipe app data (DB volume), then clean restart docker compose down -v then docker compose pull && docker compose up

Developers: to build the image from source instead, run docker build -t git.majlis7.net/debe/shabakati:latest . (or podman build), then docker compose up.


Production Deployment (Docker)

#1. Clone the repository
git clone https://github.com/balnaimi/Shabakati.git
cd Shabakati

#2. Copy .env.example to .env
cp .env.example .env

#3. Edit .env file and update the following values:
# ALLOWED_ORIGINS=http://your-ip:3001 or http://your-domain:3001
# BASE_URL=http://your-ip:3001 or http://your-domain:3001
# Example: ALLOWED_ORIGINS=http://192.168.1.100:3001
# Example: BASE_URL=http://192.168.1.100:3001

#4. Save the file

#5. Pull the pre-built image and run:
docker compose pull
docker compose up -d

The application will be available at: http://your-ip:3001 or http://your-domain:3001

First run: initial setup is protected by a one-time setup token. View it in the server logs with docker compose logs app, or pre-set it with SETUP_TOKEN in .env (openssl rand -hex 24). Enter it on the setup page along with the two passwords.

###Upgrade without losing data

docker compose down
docker compose pull
docker compose up -d

Do not use docker compose down -v unless you intend to wipe the database volume.

Check the running version in the app: Settings (user menu) or GET /api/health { "version": "…" }.


Operations (production)

Feature How to configure
JWT signing Required in production: JWT_SECRET in .env (openssl rand -base64 48)
Webhook alerts Admin Settings Webhook URL, or WEBHOOK_URL in .env (env wins)
Scheduled backup BACKUP_INTERVAL_HOURS=24 (0 = off), BACKUP_RETENTION_COUNT=7, optional BACKUP_DIR
Manual backup Admin Settings Export / “Backup now”
Uptime tracking Automatic on scan; view Uptime in the nav bar
Auto-scan notifications Toasts in the UI; optional browser notifications in Settings
Reverse proxy Set TRUST_PROXY=1 when behind nginx/Traefik

Webhook payload example (event: auto_scan_alert):

{
 "event": "auto_scan_alert",
 "networkId": 1,
 "networkName": "LAN",
 "newDevicesCount": 2,
 "disconnectedCount": 1,
 "timestamp": "2026-05-21T12:00:00.000Z"
}

Development Mode

#1. Install Node.js 24 LTS (if not already installed)

#2. Install dependencies
(cd web && npm install)
(cd server && npm install)

#3. Navigate to scripts folder and run the script
cd scripts
./dev.sh

After running, the application will be available at: -Frontend: http://localhost:5173 -API: http://localhost:3001/api


Reset Database

cd server
node resetDatabase.js

Add Admin User

To add a new admin user:

cd server
node addAdmin.js [username] [password]

Or using environment variable:

cd server
ADMIN_PASSWORD=yourpassword node addAdmin.js [username]

Example:

cd server
node addAdmin.js admin mypassword123

Dependencies

###Frontend -React 18.3.1 -React DOM 18.3.1 -React Router DOM 6.28.0 -Vite 7.2.7 (Build tool)

###Backend -Express 4.22.1 -SQLite (better-sqlite3 12.6.0) -bcrypt 6.0.0 (Password hashing) -jsonwebtoken 9.0.3 (Authentication) -winston 3.19.0 (Logging) -ping 1.0.0 (Host checking) -validator 13.15.26 (Data validation)

###Requirements -Node.js 24 LTS or later


License

See LICENSE file for details.