A Self-Hosted Presence Board for Shared Spaces: What Small Businesses Should Know
This article explains how a self-hosted in/out board can solve the daily annoyance of knowing who is present without relying on external services or complex setups.
A self-hosted presence board runs on your own hardware, requires no external services, and gives every tenant in a shared space a live view of who is in or out. It uses one Node.js process and one SQLite file, so there is no need for a database server or npm install.
What Is a Self-Hosted Presence Board?
A self-hosted presence board is a simple web application that shows who is in and who is out — for offices, plazas, and shared buildings. According to the project’s README on GitHub, it is a multi-tenant clock in/out board with live status tracking, admin controls, and global search across all tenants. Each company appears with its logo, office, and contact details, then its people with a clear IN/OUT status and one big button.
The board is designed to be dependency-free. It runs on one Node.js process and one SQLite file; no database server and no npm install are required. This means a small business can deploy it quickly on any machine that supports Docker or Node.js 22.5+.
Why Small Businesses Need This
For small businesses sharing an office or a building, knowing who is present can be a daily annoyance. Group texts or hallway shouts are unreliable. The in/out board solves this by providing a single public board for the whole building. Visitors can search, filter by In/Out, and jump to a company. The board offers five layouts — table, list, cards, tiles, and the classic in/out board — chosen by the visitor; the admin sets the default.
Privacy is built in. Name, title, picture, and IN/OUT status are always shown. Office, phone, and email appear only when the person (or an admin) switches them on; phone and email are hidden by default. Search never matches phone numbers or emails. This gives each person control over what they share.
Key Features That Matter to Small Teams
The board includes features that reduce overhead. Tenant managers keep their own company’s logo and details up to date without being admins. People manage their own profile at /me: picture, title, office, phone, email, what is shared, their recent shifts, and password. A live preview shows how they will appear.
The admin console includes an overview, live board, tenants, people, time log (shifts and hours, CSV export, manual corrections), per-admin accounts, and settings. CSV import and export of all people comes with a preview and plain-English problem list before anything is written. This makes onboarding and data management straightforward.
Accessibility is a priority. The board is keyboard friendly, has screen-reader labels, text statuses (never colour alone), 44 px targets, scalable text, and reduced-motion and high-contrast support. Automated axe-core (WCAG 2.1 A/AA) checks pass on every page and layout.
How It Works and What It Costs
The board uses a simple data model: tenants (company, logo, office, contact details) → people (name, title, office, phone, email, what is shown, picture choice, optional sign-in) → clock_events (immutable IN/OUT records). A person’s status is derived from their latest event, so history is never overwritten. Also included are admin_users, sessions, person_sessions, and settings.
The backend is a Node.js built-in HTTP server with zero npm dependencies. The database is SQLite via node:sqlite, stored in one file (plus an uploads/ folder for pictures). The frontend is vanilla HTML/CSS/JS served by the same process, with no build step. Auth uses admin accounts (scrypt) plus server-side sessions; separate sign-in for people. HttpOnly SameSite=Strict cookies, login throttling, and CSRF guard are included.
Deployment options include Docker, systemd, backup, and restore. The project includes a Dockerfile and docker-compose.yml. For a quick start, you need Docker or Node.js 22.5+. The first admin comes from ADMIN_USER/ADMIN_PASSWORD on the very first start (a random password is printed once if you do not set one). Add more admins in the console.
What It Means for Your Small Business
This tool is designed to eliminate the daily annoyance of not knowing who is in the office. It runs locally, takes a few minutes to deploy, and just solves that one visibility problem. There are no external services, no complex setup, and no recurring subscription fees. The project is open source and self-hosted, giving you full control over your data.
For small businesses sharing a space, the board provides a clear, live view of presence without relying on group texts or hallway shouts. It respects privacy by letting each person choose what to share. And because it is self-hosted, you are not dependent on an internet connection or a third-party service.
Takeaways
- A self-hosted presence board runs on your own hardware with no external services, using one Node.js process and one SQLite file.
- Each person controls what they share (office, phone, email) and can manage their own profile, while tenant managers update their company’s details without being admins.
- The board is accessible by design, passes WCAG 2.1 A/AA checks, and includes features like CSV import/export, five layouts, and an admin console with time logs.
The board is open source, and the whole project — README, install notes, and code — lives on GitHub if you want to look under the hood.
Where would this work in your business?
Take the two-minute AI Opportunity Snapshot and we will point to where automation is most likely to pay off for you.