▶ Live now: https://industrial-ella-mohammedelattar-8b6e3b6c.koyeb.app
The official live demo for LensJS — a self-contained, publicly deployable Lens instance. It's an Express app that wires every watcher (requests, queries, cache, exceptions, mail, HTTP, events, Redis, FCM, logs, jobs) and continuously seeds realistic activity, so anyone who opens the dashboard sees a live, populated instance.
It depends only on the published @lensjs/* packages, so it deploys anywhere
with a plain npm install — no monorepo build required.
- Dashboard:
/lens - Health check:
/healthz - Root
/redirects to the dashboard.
npm install
npm start
# open http://localhost:8000/lens| Variable | Default | Purpose |
|---|---|---|
PORT |
8000 |
Injected by the host. |
LENS_DEMO |
true |
Background activity seeder. Set false to disable. |
REDIS_URL |
– | Optional. A free Upstash rediss://… URL lights up the Redis watcher. |
LENS_PASSWORD |
– | Optional. Password-locks the dashboard. |
PUBLIC_URL |
– | Optional. If set, the app pings its own /healthz every 10 min to stay warm. |
The store is bounded (size cap + ~2 h age-based retention) and the filesystem on free hosts is ephemeral, so the demo self-cleans and never fills the disk.
Koyeb has a genuine free instance (512 MB, no credit card) and wakes in ~1–5 s after idle — ideal for a demo. On wake, the boot seeder repopulates immediately.
- Push this repo to GitHub (see below).
- In Koyeb: Create Web Service → GitHub, pick this repo.
- Builder: Dockerfile (a
Dockerfileis included; work directory = repo root). - Instance type: Free. Region: Frankfurt or Washington, D.C.
- Health check: HTTP path
/healthz. - (Optional) add the env vars above, then Deploy.
Your demo will be live at https://<your-app>.koyeb.app (root redirects to the /lens dashboard).
Works the same on Render, Google Cloud Run, Northflank, or any Docker host. On Render's free tier (which sleeps after 15 min with a ~60 s cold start), add a free uptime pinger (cron-job.org / UptimeRobot) hitting
/healthz, or setPUBLIC_URLto your Render URL.
- Create a free database at upstash.com (Redis).
- Copy the
rediss://…TCP URL (not the REST URL). - Set it as
REDIS_URLon your host. The Redis watcher will now be populated.
Without REDIS_URL, the demo still runs — the Redis section just stays empty.
Add a Live Demo entry to the docs nav in the main
lensjs/lens repo
(packages/docs/.vitepress/config.mts):
nav: [
// …
{ text: "Live Demo", link: "https://<your-app>.koyeb.app", target: "_blank" },
],- This is a public demo: it only ever handles obviously fake data. Don't add real secrets or PII.
- The dashboard's "delete all" is destructive, but the seeder repopulates within
seconds, so a wipe self-heals. Set
LENS_PASSWORDif you'd rather lock it.