From 8dbf7b02e739bd6db92e1e524679b677458c4fe9 Mon Sep 17 00:00:00 2001 From: mvbingham Date: Thu, 4 Jun 2026 09:49:56 -0400 Subject: [PATCH] updated README.md --- README.md | 123 ++++++++++++++++++++++++------------------------------ 1 file changed, 55 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index f26ac7e..d948d7e 100644 --- a/README.md +++ b/README.md @@ -1,108 +1,95 @@ # vps/fleet -> A self-hosted VPS fleet tracker with a dark GitHub-style UI, interactive map, and zero-config local storage. +> A self-hosted VPS fleet manager — track every server you own in one dark, minimal dashboard. -![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white) -![Express](https://img.shields.io/badge/Express-4.18-000000?style=flat-square&logo=express&logoColor=white) -![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square) -![No Build Step](https://img.shields.io/badge/build-none-brightgreen?style=flat-square) +[![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org) +[![Express](https://img.shields.io/badge/Express-4.18-000000?style=for-the-badge&logo=express&logoColor=white)](https://expressjs.com) +[![License](https://img.shields.io/badge/License-MIT-58a6ff?style=for-the-badge)](LICENSE) +[![No Build](https://img.shields.io/badge/Build-None-3fb950?style=for-the-badge)](https://github.com/your-username/vps-manager) --- ## Features -- **Fleet overview** — live stats for total servers, online / offline / maintenance counts, and total monthly spend -- **Server cards** — glanceable cards showing name, IP, status dot, CPU / RAM / disk chips, and price -- **Add · Edit · Delete** — modal form with full field set: provider, plan, specs, IPv4/IPv6, location, region, sites, notes -- **Interactive map** — Leaflet.js world map; server locations are geocoded automatically via OpenStreetMap -- **Persistent storage** — flat-file JSON, no database required -- **Dark theme** — GitHub-flavored dark palette (`#0d1117`) with IBM Plex Mono / Sans typography -- **Single HTML file** — no bundler, no framework, no build step +- 📊 **Fleet stats** — live totals for online / offline / maintenance counts and monthly spend +- 🃏 **Server cards** — status dot, IP, CPU · RAM · Disk chips, and price at a glance +- ✏️ **Full CRUD** — add, edit, and delete servers via a clean modal form +- 🗺️ **Interactive map** — Leaflet.js world map; locations geocoded automatically via OpenStreetMap +- 💾 **Zero-config storage** — flat-file JSON, no database, no migrations +- 🌑 **Dark theme** — GitHub-style `#0d1117` palette with IBM Plex Mono / Sans +- 📄 **Single HTML file** — no bundler, no framework, no build step --- ## Requirements -| Dependency | Version | -| ---------- | -------------------- | -| Node.js | 18 or higher | -| npm | included with Node | +| Dependency | Version | +| ---------- | ------------------ | +| Node.js | 18 or higher | +| npm | included with Node | --- -## Installation +## Quick Start ```bash -# 1. Clone the repo git clone https://github.com/your-username/vps-manager.git cd vps-manager - -# 2. Install dependencies npm install - -# 3. Start the server npm start ``` -Then open `http://localhost:8095` in your browser. +Open `http://localhost:8095` in your browser. -> **Windows:** double-click `start.bat` instead of step 3. +> **Windows** — double-click `start.bat` > -> **Linux / macOS:** run `chmod +x start.sh && ./start.sh` instead of step 3. +> **Linux / macOS** — `chmod +x start.sh && ./start.sh` --- ## Usage -### Adding a server +**Add a server** — click **+ Add Server** in the top-right corner. Only the hostname is required; all other fields are optional. Enter a location and a map pin is placed automatically. -Click **+ Add Server** in the top-right corner. Fill in any combination of fields — only the name is required. If you enter a location, coordinates are resolved automatically and a pin is placed on the map. +**Edit** — click the pencil icon on any card to reopen the form pre-filled with its data. -### Editing a server +**Delete** — click the trash icon on any card. The change is saved immediately. -Click the **pencil icon** on any server card to reopen the form pre-filled with its data. - -### Deleting a server - -Click the **trash icon** on a server card. The change is saved immediately. - -### Map view - -The map tab shows all servers that have a resolvable location. Click any pin to see a summary popup. +**Map view** — switch to the map tab to see all geocoded servers plotted on a world map. Click a pin for a quick summary. --- ## API -The Express server exposes a simple REST API on port `8095`. +All data is served over a local REST API on port `8095`. -| Method | Endpoint | Description | -| -------- | ------------------ | -------------------------------------------------- | -| `GET` | `/api/servers` | Return all servers | -| `POST` | `/api/servers` | Create or update a server (include `id` to update) | -| `DELETE` | `/api/servers/:id` | Delete a server by ID | +| Method | Endpoint | Description | +| ---------- | ------------------ | -------------------------------------------------- | +| `GET` | `/api/servers` | Return all servers | +| `POST` | `/api/servers` | Create or update a server (`id` present = update) | +| `DELETE` | `/api/servers/:id` | Delete a server by ID | ### Server object ```json { - "id": "srv_1700000000000", - "name": "prod-app-01", - "status": "online", - "ipv4": "203.0.113.42", - "ipv6": "2001:db8::1", + "id": "srv_1700000000000", + "name": "prod-app-01", + "status": "online", + "ipv4": "203.0.113.42", + "ipv6": "2001:db8::1", "provider": "DigitalOcean", - "plan": "s-2vcpu-4gb", - "cpu": "2", - "ram": "4", - "disk": "80", - "price": "24.00", - "billing": "monthly", - "renewal": "2026-07-01", + "plan": "s-2vcpu-4gb", + "cpu": "2", + "ram": "4", + "disk": "80", + "price": "24.00", + "billing": "monthly", + "renewal": "2026-07-01", "location": "Toronto, Canada", - "region": "ca-central", - "sites": "myapp.example.com", - "notes": "Primary application node" + "region": "ca-central", + "sites": "myapp.example.com", + "notes": "Primary application node" } ``` @@ -110,9 +97,9 @@ The Express server exposes a simple REST API on port `8095`. ## Configuration -| Variable | Default | Description | -| -------- | ------- | ---------------------------- | -| `PORT` | `8095` | Port the server listens on | +| Variable | Default | Description | +| -------- | ------- | -------------------------- | +| `PORT` | `8095` | Port the server listens on | ```bash PORT=3000 npm start @@ -120,21 +107,21 @@ PORT=3000 npm start --- -## Project structure +## Project Structure ```text vps-manager/ -├── server.js # Express server + REST API + geocoding -├── vps_manager.html # Complete UI (HTML + CSS + JS, single file) +├── server.js # Express server · REST API · geocoding +├── vps_manager.html # Full UI — HTML + CSS + JS in one file ├── package.json # Dependencies -├── start.bat # Windows one-click launcher -├── start.sh # Linux / macOS one-click launcher +├── start.bat # Windows launcher +├── start.sh # Linux / macOS launcher └── data/ - └── servers.json # Auto-created on first run + └── servers.json # Auto-created on first run (gitignored) ``` --- ## License -MIT +Released under the [MIT License](LICENSE).