Sign inSign up

beztebya666/notes-ui

By beztebya666

Updated 4 months ago

Self-hosted team link & contact directory. Node + SQLite + Helm + Chrome extension. EN/RU UI.

Image
Developer tools
Operating systems
Content management system
1

1.7K

beztebya666/notes-ui repository overview

notes-ui

A self-hosted team link & contact directory. One Docker container, SQLite for shared state, WebSocket for live sync. Browser extension included.

GitHub License: MIT Live demo

🚀 Live demo → — each visitor gets their own session in localStorage.

A fast, keyboard-friendly grid of links (dashboards, dev/test/prod stands, docs, contacts) that everyone on the team can edit and everyone sees in real time. No accounts, no SaaS, no third-party dependencies — one shared password, one SQLite file, one Docker image.

Internal codename: portal. Distributed here as beztebya666/notes-ui. The Helm chart and source tree use portal (charts/portal, package.json:name=portal) — the image name is independent.

Main view


Quick start

docker run -d --name notes-ui \
  -p 8080:8080 \
  -v notes-ui-data:/app/data \
  -e EDIT_PASSWORD=please-change-me \
  -e PORTAL_LANG=en \
  beztebya666/notes-ui:1.1.1

Open http://localhost:8080. Click Sign in, paste the edit password, start editing. Switch to Russian with -e PORTAL_LANG=ru. Also on GHCR: ghcr.io/beztebya666/notes-ui:1.1.1.


Demos

Live editingCommand paletteTheme switch
editpalettetheme

Screenshots

Stands
Per-environment Stands (DEV / INT / LT / PROD)
Contacts
Contacts grouped by role
Command palette
Command palette (Ctrl/⌘ K)
Search
Inline search across names, tags, URLs, notes
Sign-in
Sign-in with shared password + editor name
Add link
Add/edit a link with tags and icon picker
Diagnostics
Diagnostics — duplicates, empty URLs, untagged
Russian UI
Russian UI (PORTAL_LANG=ru) — bilingual

Tags

TagWhat it is
latestAlways the newest stable release (currently 1.1.1).
1.1.1Pinned semver — recommended for production.
1.1.0i18n + GitHub Pages demo, before banner/red fix.
1.0.0Initial public release.

Features

  • Sections out of the box: Main links, per-environment stands (DEV / INT / LT / PROD), Useful third-party links, and a Contacts directory. Create your own sections (flat list / multi-env grid / grouped) at runtime.
  • Live sync over WebSocket — every browser tab connected to the same server sees edits within milliseconds.
  • Edit mode behind one shared password (EDIT_PASSWORD); separate read password (READ_PASSWORD) — leave empty to keep the portal public-read.
  • Per-user customization on top of shared data: pin cards, add personal notes, hide built-ins — kept in localStorage, never overwritten by team edits.
  • Command palette (Ctrl/⌘ K), fuzzy search across names/tags/URLs/notes, audit panel (dead URLs / duplicates / missing tags).
  • Edit history for every card (who/when), with optional manual undo.
  • Automatic backups: SQLite is snapshotted to BACKUP_DIR on a schedule.
  • Bilingual UI: English by default, Russian via PORTAL_LANG=ru.
  • Demo mode (PORTAL_DEMO=true): drop-in client-side shim that runs the same UI with localStorage-only state — powers the GitHub Pages demo.
  • Ships in five forms: Docker image, Helm chart, .deb / .rpm, standalone pkg binary, and a Chrome MV3 extension.

Configuration

VariableDefaultWhat it does
PORT8080HTTP listen port
DB_PATH/app/data/portal.dbSQLite database file
BACKUP_DIR/app/data/backupsWhere backups are written
BACKUP_INTERVAL_MS21600000 (6h)Backup cadence
BACKUP_RETENTION20How many backups to keep
EDIT_PASSWORDchangemeChange this. Edit mode auth.
READ_PASSWORDfalls back to EDIT_PASSWORDView-only auth, or "" for anonymous read
READ_SESSION_MS43200000 (12h)Read cookie lifetime
CORS_ORIGINS(empty)Comma-separated cross-origin allowlist
PORTAL_LANGenUI language: en or ru

Persistence

docker volume create notes-ui-data
docker run -d --name notes-ui -p 8080:8080 \
  -v notes-ui-data:/app/data \
  -e EDIT_PASSWORD=change-me \
  beztebya666/notes-ui:latest

The image runs as a non-root user (uid 1000). For host-path mounts, ensure uid 1000 has write access.


Helm

git clone https://github.com/beztebya666/notes-ui.git
cd notes-ui
helm install portal charts/portal \
  --namespace portal --create-namespace \
  --set secrets.editPassword=change-me \
  --set ingress.enabled=true \
  --set ingress.hosts[0].host=portal.example.com

image.repository defaults to beztebya666/notes-ui. Chart features: HPA, PDB, NetworkPolicy, ServiceMonitor, custom CA, configurable PVC.


Tag summary

Content type

Image

Digest

sha256:b40a0e1de

Size

81.4 MB

Last updated

4 months ago

docker pull beztebya666/notes-ui