feat: add web dashboard with slide-in drawer navigation

- Flask backend with 23 API routes (entertainment, telegram, docker, system)
- Alpine.js + Tailwind CSS dark-mode SPA with 4 tabs
- pos-dashboard CLI tool with port/config management
- Mobile slide-in drawer with swipe-to-close
- Sticky header stays pinned on scroll
- Tab completion fixes for category-less tools
- POST /api/telegram/commands endpoint for adding commands
This commit is contained in:
Your Name
2026-08-18 11:54:41 -04:00
parent 06b077db40
commit 99085adc76
63 changed files with 5905 additions and 122852 deletions
+5 -11
View File
@@ -2,6 +2,8 @@
set -euo pipefail
# POS: network ip — Show interfaces, routes, public IP + location
source "$(dirname "$0")/../lib/common.sh" 2>/dev/null || source "$(dirname "$0")/common.sh"
usage() {
cat <<EOF
Usage: pos network ip
@@ -15,11 +17,7 @@ case "${1:-}" in
-h|--help) usage ;;
esac
SEP() { printf '\u2550%.0s' $(seq 1 47); echo; }
SEP
echo "Network Interfaces"
SEP
section "Network Interfaces"
ip -o -4 addr show | while read -r _ ifname _ ipaddr _; do
printf "%-20s %s\n" "$ifname" "${ipaddr%%/*}"
@@ -27,9 +25,7 @@ done
echo
SEP
echo "Default Route"
SEP
section "Default Route"
gateway=$(ip route | awk '/default/ {print $3; exit}')
iface=$(ip route | awk '/default/ {print $5; exit}')
@@ -39,9 +35,7 @@ printf "%-20s %s\n" "Gateway" "${gateway:-N/A}"
echo
SEP
echo "Public IP"
SEP
section "Public IP"
PUBLIC_IP=$(curl -4 -s --max-time 5 https://ifconfig.me 2>/dev/null) || true