High-performance self-hosted personal dashboard. Single binary, premium UI, native grid engine in pure JavaScript.
  • TypeScript 59.7%
  • Go 24.4%
  • CSS 12.4%
  • HTML 2%
  • Shell 1.1%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-31 00:24:45 +02:00
.forgejo/workflows ci: build the frontend in the security job before govulncheck/staticcheck 2026-07-22 04:14:59 +02:00
cmd feat(update): enable release signing (embed public key) + sign verify mode 2026-07-22 03:40:00 +02:00
docs docs: show the Add (+) menu when creating dashboards and bookmarks 2026-07-27 16:00:33 +02:00
internal feat: Built-in uptime monitoring, a generic API widget, cross-dashboard moves and Homepage/Dashy import 2026-07-31 00:24:44 +02:00
scripts fix(release): stop run-together changelog headers 2026-07-27 22:44:24 +02:00
web feat: Built-in uptime monitoring, a generic API widget, cross-dashboard moves and Homepage/Dashy import 2026-07-31 00:24:44 +02:00
.air.toml chore: rename cmd/dashboard to cmd/lastboard and update references 2026-03-05 20:48:07 +00:00
.dockerignore feat: migrate from GitHub to Forgejo (git.codigosh.com) 2026-04-09 03:30:31 +01:00
.env.example docs: add .env.example documenting all runtime variables (OPS-01) 2026-07-22 01:43:38 +02:00
.gitignore chore: fix ineffective .gitignore patterns 2026-07-14 07:13:02 +02:00
bun.lock chore(release): bump to v1.2.0-Beta.02 (padded system) 2026-02-11 06:51:50 +00:00
CHANGELOG.md chore(release): bump to v1.6.0 2026-07-31 00:24:44 +02:00
CONTRIBUTING.md feat: migrate from GitHub to Forgejo (git.codigosh.com) 2026-04-09 03:30:31 +01:00
docker-compose.yml feat: optional unprivileged execution via PUID/PGID 2026-06-07 23:16:58 +02:00
Dockerfile chore(deps): bump golang.org/x/net to v0.53.0 and Go to 1.26.5 (govulncheck) 2026-07-22 02:51:44 +02:00
go.mod feat(import-export): native YAML export + competitor parsers 2026-07-25 17:17:38 +02:00
go.sum feat(import-export): native YAML export + competitor parsers 2026-07-25 17:17:38 +02:00
install.sh fix: quick wins — healthcheck PORT, install RED, noopener, strings.Contains 2026-07-22 01:24:20 +02:00
LICENSE feat: adopt Apache 2.0 license with proper attribution 2026-02-02 20:43:06 +00:00
Makefile build: compile the cmd/lastboard package instead of main.go only 2026-06-07 23:16:01 +02:00
NOTICE docs: trim credits to licence-required attributions 2026-07-24 08:40:28 +02:00
package.json feat: Built-in uptime monitoring, a generic API widget, cross-dashboard moves and Homepage/Dashy import 2026-07-31 00:24:44 +02:00
README.md docs(readme): cover the API widget, monitoring and import/export 2026-07-30 21:44:50 +02:00
SECURITY.md feat: migrate from GitHub to Forgejo (git.codigosh.com) 2026-04-09 03:30:31 +01:00
tsconfig.json feat: Upgrade Go 1.26.2, eliminate 49 unused variables/imports, enforce noUnusedLocals in tsconfig 2026-04-28 11:08:00 +01:00


Lastboard

Lastboard

The personal dashboard you actually want to open every day.

   


Lastboard Dashboard





📖 Read the Official Documentation for detailed guides on installation, configuration, security, and widget usage.


Why Lastboard

Most self-hosted dashboards are either too heavy, too ugly, or too complex to maintain. Lastboard was built with a simple rule: nothing ships unless it's fast and looks good doing it.

  • Built-in drag & drop grid — written from scratch in native JS. No framework overhead, silky smooth on any device.
  • Real dark/light mode — dedicated color token sets per theme, not just a CSS filter.
  • Go backend — small memory footprint, concurrent by default. Runs fine on a Raspberry Pi.
  • Peace of mind — Backup and restore directly from the website.
  • Single SQLite file — your entire dashboard state in one portable file. Backup = cp lastboard.db.
  • Guided setup wizard — first run walks you through everything. Zero config files to touch.
  • Multi-dashboard system — create and switch between multiple independent dashboards, each with its own layout and widgets. Move items between them without rebuilding anything.
  • Uptime monitoring — server-side checks around the clock, with history, latency charts, outage logs, and alerts via ntfy, Gotify or a webhook.
  • No lock-in — export your dashboards as open, documented YAML, and import straight from Homepage or Dashy.
  • Multi-user support — per-user preferences and password management.
  • Personalized backgrounds — Set a custom image for your dashboard, optimized and saved per user.
  • Global unit system — Choose between Metric and Imperial units globally for all widgets.
  • Global readiness — Fully translated into 20 languages.
  • Real-time telemetry — server stats (CPU, RAM, disk) streamed over WebSocket.

Security & Widgets

Security

Lastboard is built from the ground up with defense-in-depth principles, including strict CSP headers, CSRF protection, secure session tokens, aggressive rate limiting, signature-verified updates, and optional unprivileged execution (PUID/PGID).

For a detailed breakdown of our security measures, please refer to our Security Overview.

Widgets (7)

Widget Description
Clock Analog/digital clock with configurable timezone and seconds display
Notepad Persistent per-user text notepad
Telemetry Real-time server metrics (CPU, RAM, disk) via WebSocket
Weather Current conditions and forecast via Open-Meteo
Markdown Freeform Markdown renderer for notes and links
Docker Live monitoring and lifecycle management (Start/Stop/Restart) of your containers
API Any JSON endpoint on a tile — guided presets for common self-hosted services, or a fully custom request

Remote Docker hosts are reached through Lastboard Agent, a tiny token-authenticated bridge, so you never have to expose the Docker daemon over TCP.


Installation Methods

The easiest way to get started is using Docker. Images are automatically built and published to our Forgejo registry.

Using Docker Compose:

services:
  lastboard:
    image: git.codigosh.com/codigosh/lastboard:latest
    container_name: lastboard
    ports:
      - "8080:8080"
    environment:
      - TZ=America/New_York
      # - TRUST_PROXY=true   # Uncomment if running behind a reverse proxy
    volumes:
      - ./data:/var/lib/lastboard
    restart: unless-stopped
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

Using Docker CLI:

# Note: Add `-e TRUST_PROXY=true \` before the image name if running behind a reverse proxy.
docker run -d \
  --name lastboard \
  -p 8080:8080 \
  -e TZ=America/New_York \
  -v $(pwd)/data:/var/lib/lastboard \
  --restart unless-stopped \
  git.codigosh.com/codigosh/lastboard:latest

For advanced configuration options, environment variables, and data backups, please refer to the Configuration Guide.


Quick Install (Linux)

Run this command to install or update Lastboard automatically:

curl -fsSL https://git.codigosh.com/CodigoSH/Lastboard/raw/branch/main/install.sh | sudo bash

For more details on building from source, check the Development Guide.


Updates

Lastboard updates are handled securely via a dedicated proxy to guarantee performance and protect our infrastructure.

For detailed updating instructions, visit the Updates Guide, or see our Security Policy for info about our proxy infrastructure.


Support & Recognition

We are an open-source initiative managed through Open Collective Europe.

Financial Support

If you find our tools useful, consider supporting our infrastructure through an unconditional donation.

Acknowledgments

Special thanks to everyone supporting our mission.

Organizations

We appreciate the organizations that support us as a gesture of goodwill to help maintain our infrastructure.


Credits

Full attribution, including the Go modules compiled into the binaries, lives in NOTICE.


A project by CodigoSH — built to last.