modern-glance

InstallEditorConfigurationThemes

A fork of glanceapp/glance that adds a web-based dashboard editor so you can manage your config without touching YAML.

> **Upstream credit:** All core functionality — widgets, theming, layout engine, hot-reload — is the work of the [Glance](https://github.com/glanceapp/glance) project and its contributors. This fork adds an editing UI on top and nothing else. If you find Glance useful, consider [sponsoring the upstream project](https://github.com/sponsors/glanceapp). > **⚠️ Vibe coded:** The editing UI in this fork was built entirely with AI assistance and has not been rigorously tested. It may have bugs, edge cases, or security issues — particularly around config file handling. Use it on a trusted network, keep backups, and don't be surprised if something breaks. PRs welcome. --- ## What's added ### In-place edit mode A pencil button in the dashboard header toggles edit mode. While active you can: - **Drag and drop** widgets between columns and reorder them - **Add widgets** via a form dialog (for most widget types) or a YAML editor fallback - **Edit widgets** inline with per-field forms — includes live lookup for weather locations, market symbols, and RSS feed validation - **Delete widgets** - **Add, delete, resize, and reorder columns** - **Add and manage head widgets** (the row above the columns) ### Page management (`/edit`) - Add, delete, and reorder pages - Per-page settings: name, slug, width, navigation options, mobile header ### Site settings (`/edit/site-settings`) - App name, logo, favicon, footer — all editable without touching YAML ### Theme settings (`/edit/theme-settings`) - Color pickers for background, primary, positive, and negative colors (hex input, stored as HSL) - Contrast and text saturation multipliers - Light mode toggle, hide-picker toggle, custom CSS file path - **Preset management**: add, edit, and delete named theme presets with live preview swatches - **Built-in theme catalog**: 14 themes from the upstream docs (Dracula, Catppuccin variants, Gruvbox, and more) importable with one click ### Multi-step undo `/edit` keeps a 10-step numbered backup chain (`glance.yml.bak.1` … `.bak.10`). Each save rotates the chain; any backup can be restored individually. ### Auth gate `/edit` returns 403 unless `auth.users` is configured **or** `admin.allow-without-auth: true` is set. See `docs/glance.yml` for examples of both. --- ## Installation ### Docker (recommended) ```yaml # docker-compose.yml services: glance: image: ghcr.io/uhlwoogi/modern-glance:latest ports: - "8080:8080" volumes: # Config dir — glance.yml lives here and is written by /edit - ./config:/app/config # Optional: custom CSS / images (set server.assets-path: /app/assets in glance.yml) - ./assets:/app/assets restart: unless-stopped # environment: # MY_SECRET_TOKEN: abc123 # reference as ${env:MY_SECRET_TOKEN} in glance.yml ``` 1. Create the config directory and grab the starter config: ```bash mkdir -p config assets curl -o config/glance.yml https://raw.githubusercontent.com/uhlwoogi/modern-glance/main/docs/glance.yml ``` 2. Start: ```bash docker compose up -d ``` 3. Open `http://localhost:8080` — click the **pencil icon** in the header to start editing. > The starter `glance.yml` has `admin.allow-without-auth: true` so `/edit` is open by default. Switch to the auth block in the file before exposing to a network you don't fully trust. ### Updating ```bash docker compose pull && docker compose up -d ``` --- ## Original Glance features Everything from upstream is intact: - **Widgets**: RSS, Reddit, Hacker News, weather, YouTube, Twitch, markets, Docker containers, server stats, bookmarks, calendar, monitors, and [many more](docs/configuration.md#configuring-glance) - **Fast and lightweight**: low memory, minimal JS, single ~20 MB binary, pages load in ~1s - **Highly customizable**: multiple layouts, pages, themes, custom CSS - **Mobile optimized** - **Themeable**: tweak a few numbers or pick from the [theme gallery](docs/themes.md) Full configuration reference: [docs/configuration.md](docs/configuration.md#configuring-glance) --- ## Building from source ```bash # Run locally go run . # Build binary go build -o glance . # Build and push Docker image docker build -t ghcr.io/uhlwoogi/modern-glance:latest . docker push ghcr.io/uhlwoogi/modern-glance:latest ``` Requires Go ≥ 1.23.