A modern, elegant web application for displaying office door status with remote control capabilities. Perfect for offices, meeting rooms, or any space where you need to communicate availability.
- β Available β Come on in
- β Busy β Please knock first
- β In Meeting β In a meeting
- πΆ In Physical Meeting β In a physical meeting
- β Executive Meeting β Executive meeting in progress
- β Teams Call β On a Teams call
- β Focus Work β Deep focus β minimal interruptions
- β Do Not Disturb β Do not disturb
- β Away β Away from desk
- π¬ Custom Messages β Add personalized notes like "Back at 3pm" or "On lunch break"
- β° Auto-Reset Timer β Automatically revert to a chosen status after 5min-2hrs
- π Dark Mode β Easy on the eyes with automatic theme switching
- β¨οΈ Keyboard Shortcuts β Quick status changes with number keys (1-9)
- π± Remote Control β Control from any device on your network
- π Real-Time Sync β Status updates across all connected devices
- πΎ Persistent State β Status survives page refreshes and server restarts
- π₯οΈ Fullscreen Mode β Perfect for dedicated displays
- Beautiful gradient backgrounds for each status
- Smooth transitions and animations
- Responsive design (desktop, tablet, mobile)
- Live clock and date display
- Character counter for custom messages (60 char limit)
- Emoji support π
Perfect for single-device use with localStorage persistence.
# Just open the HTML file in your browser
open index.htmlRun a Node.js server to sync status across multiple devices.
# Start the server
node server.js
# Access from:
# - This machine: http://localhost:3000
# - Other devices: http://YOUR_IP:3000The server will display your local IP address for remote access.
- Standalone Mode: Any modern web browser
- Server Mode: Node.js (no additional dependencies required)
| Key | Action |
|---|---|
1-9 |
Set status (Available, Busy, Meeting, etc.) |
F |
Toggle fullscreen |
D |
Toggle dark mode |
P |
Show/hide control panel |
Edit app.js and add to the STATUSES array:
{
key: 'custom',
label: 'Custom Status',
icon: 'π―',
color: '--c-custom',
note: 'Your custom note',
key_num: '0'
}Then add the color variable in styles.css:
--c-custom: #your-color-hex;All status colors are defined as CSS variables in styles.css:
:root {
--c-available: #1e9e5a;
--c-busy: #e0792e;
/* ... customize as needed */
}- Vanilla JavaScript (no frameworks)
- localStorage for standalone persistence
- 1.5s polling for server sync
- CSS custom properties for dynamic theming
- Node.js HTTP server (zero dependencies)
- REST API:
GET/POST /api/status - CORS-enabled for network access
- Persists to
.status.json
GET /api/status
Response: {"status": "busy", "customMessage": "Back at 3pm"}POST /api/status
Body: {"status": "busy", "customMessage": "Back at 3pm"}
Response: {"status": "busy", "customMessage": "Back at 3pm"}BusyBoard/
βββ index.html # Main UI structure
βββ app.js # Client-side logic
βββ server.js # Node.js server (optional)
βββ styles.css # Complete styling
βββ .status.json # Persistent status (auto-generated)
βββ README.md # This file
PORT=3000 node server.js # Change default portbusyboard.statusβ Current statusbusyboard.customMessageβ Custom message textbusyboard.themeβ Light/dark preferencebusyboard.panelHiddenβ Panel visibilitybusyboard.autoResetMinutesβ Timer durationbusyboard.autoResetTargetβ Target statusbusyboard.autoResetAtβ Scheduled reset timestamp
- Office Doors β Display on a tablet outside your office
- Meeting Rooms β Show room availability
- Home Office β Let family know when you're busy
- Co-working Spaces β Communicate availability to colleagues
- Remote Teams β Share status with distributed team members
# Clone the repository
git clone https://github.com/yourusername/BusyBoard.git
cd BusyBoard
# Option 1: Open directly in browser
open index.html
# Option 2: Run with server
node server.js- Test standalone mode by opening
index.htmldirectly - Test server mode by running
node server.js - Test remote access from another device on your network
MIT License β Feel free to use, modify, and distribute.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
- Improve documentation
Built with β€οΈ for better office communication.
Made with Devin