Initial commit - Shopfloor Dashboard

- Node.js Express server with MySQL integration
- Real-time event dashboard with live updates
- GE Aerospace branding and design
- Auto-refresh every 10 seconds (AJAX)
- Shows current and upcoming events (48 hour window)
- Connection status monitoring
- Optimized for TV display

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
cproudlock
2025-10-21 16:17:45 -04:00
commit 6a9bb8c7a4
11 changed files with 2760 additions and 0 deletions

192
README.md Normal file
View File

@@ -0,0 +1,192 @@
# Shopfloor Dashboard
GE Aerospace West Jefferson shopfloor events and notifications dashboard.
## Overview
Real-time display dashboard for showing current and upcoming events on the shopfloor. Designed for TV displays with large, readable text and GE Aerospace branding.
## Features
- **Live Data Updates**: Auto-refreshes every 10 seconds via AJAX (no page reload)
- **48-Hour Window**: Shows current events and upcoming events within next 48 hours
- **Real-Time Clock**: Always-on clock display
- **Connection Monitoring**: Visual indicator shows live connection status
- **GE Aerospace Branding**: Official colors, fonts, and logo
## Technology Stack
- **Backend**: Node.js with Express
- **Database**: MySQL 5.6
- **Frontend**: Vanilla JavaScript (no frameworks)
- **Styling**: Custom CSS with GE Aerospace brand colors
## Installation
### Prerequisites
- Node.js 16+ and npm
- MySQL 5.6+ database
- Access to ShopDB database
### Setup
```bash
# Install dependencies
npm install
# Set environment variables (optional)
export DB_HOST=localhost
export DB_PORT=3306
export DB_USER=570005354
export DB_PASS=570005354
export DB_NAME=shopdb
export PORT=3001
# Start the server
npm start
# Or for development with auto-restart
npm run dev
```
## Configuration
Environment variables:
| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | 3000 | Server port |
| `DB_HOST` | localhost | Database host |
| `DB_PORT` | 3306 | Database port |
| `DB_USER` | 570005354 | Database username |
| `DB_PASS` | 570005354 | Database password |
| `DB_NAME` | shopdb | Database name |
## Usage
### Access the Dashboard
Open your browser to:
```
http://localhost:3001
```
### API Endpoints
**Get Notifications:**
```
GET /api/notifications
```
Returns current and upcoming events in JSON format.
**Health Check:**
```
GET /health
```
Returns server status.
## Display on TV
1. Open the dashboard URL in a web browser (Chrome recommended)
2. Press F11 for fullscreen mode
3. Dashboard will auto-refresh every 10 seconds
4. Connection status indicator shows "LIVE" when connected
## Project Structure
```
shopfloor-dashboard/
├── server.js # Express server
├── package.json # Dependencies
├── public/
│ ├── index.html # Dashboard UI
│ └── ge-aerospace-logo.svg
├── .gitignore
└── README.md
```
## Database Schema
Queries the `notifications` table in ShopDB:
```sql
SELECT notificationid, notification, starttime, endtime,
ticketnumber, link, isactive
FROM notifications
WHERE isactive = 1
AND (conditions for current/upcoming)
ORDER BY starttime ASC
```
## Design
### Colors (GE Aerospace Brand)
- **Deep Navy**: `#00003d` (background)
- **Sky Blue**: `#4181ff` (accents, clock)
- **Avionics Green**: `#0ad64f` (live indicator)
- **Tungsten**: `#eaeaea` (secondary text)
### Typography
- **Font**: Inter (sans-serif)
- **Sizes**: Large for TV readability (38px-48px headers)
## Development
```bash
# Install dev dependencies
npm install
# Run with auto-restart
npm run dev
# The server will restart automatically when you edit files
```
## Deployment
For production deployment:
1. Use a process manager (PM2, systemd)
2. Set environment variables
3. Configure reverse proxy (nginx/Apache) if needed
4. Enable SSL/TLS for secure connections
### Example with PM2:
```bash
npm install -g pm2
pm2 start server.js --name shopfloor-dashboard
pm2 save
pm2 startup
```
## Troubleshooting
**Port already in use:**
```bash
# Use a different port
PORT=3001 npm start
```
**Can't connect to database:**
- Verify MySQL is running
- Check credentials in environment variables
- Ensure database exists and user has permissions
**Dashboard not updating:**
- Check browser console for errors
- Verify `/api/notifications` endpoint returns data
- Check network connectivity
## License
Internal GE Aerospace project - West Jefferson facility
## Support
Contact: IT Support - West Jefferson