π Employee Hour Tracker
A badass web app to monitor employees entering their time, serve up real-time analytics, and automate your backups β so you can stop worrying and focus on getting sh*t done.
Screenshots
β¨ Features
π Time Tracking (A.K.A. Keeping Tabs on Your Squad)
- Weekly grid interface sharp enough to make spreadsheets cry
 - Click once? Log it. Twice? Flag it. Thrice? Fix-it mode, baby
 - Built-in calendar picker so you don't fat-finger the wrong week
 - Default week your way β past, present, or hell, even the future
 - No βSaveβ button needed β everything saves itself like grown-up software
 
π Analytics Dashboard
- Sexy-ass charts courtesy of Chart.js
 - Date ranges? Yep. Choose from Last Week, Month, 90 Days, or freestyle
 - Pie charts of shame: See who's not entered a damn thing
 - Employee comparisons so you know whoβs crushing it
 - Summary stats that slap you with truths at a glance
 
π₯ Employee Management
- Add, edit, and yeet employees in or out with full control
 - Inline editing β because popups can get bent
 - Confirmation dialogs keep you from rage-deleting poor Jim by mistake
 - Secure, session-based login β no freeloaders allowed
 
πΎ Data Export & Backup
- Export in:
- Colored Excel (preserves all that green/yellow/red goodness)
 - JSON (for the nerds and the APIs)
 - CSV (because boring as hell = universal)
 
 - Auto-backups so you can sleep like a baby β configurable too
 
π¨ Beautiful AF UI
- Responsive as heck β use it on a tablet, a phone, or a potato
 - A glorious purple gradient worth showing off to design nerds
 - Smooth transitions that donβt make you nauseous
 - Touch support that'll make any mobile user say βdamn thatβs cleanβ
 - You might actually enjoy navigating this one
 
π Quick Start
Prerequisites (Donβt Skip This, Ya Animal)
- Node.js 18+
 - OR Docker & Docker Compose (weβre fancy)
 
π§ͺ Option 1: Raw Node.js
git clone https://github.com/tebwritescode/employee-hour-tracker.git cd employee-hour-tracker npm install npm start # Start like a regular ol' app npm run dev # If you want auto-reload magic
π³ Option 2: Docker Compose (Recommended as Hell)
git clone https://github.com/tebwritescode/employee-hour-tracker.git cd employee-hour-tracker docker-compose up -d docker-compose logs -f # Because watching logs is oddly satisfying docker-compose down # When itβs time to kill it
π¨ Option 3: Docker CLI (For Hardcore Terminal Nerds)
docker build -t employee-hour-tracker . docker run -d \ --name employee-tracker \ -p 3000:3000 \ -v employee-tracker-data:/app/data \ employee-hour-tracker
App launches at http://localhost:3000
Go ahead, open it. We dare you.
π§ Configuration (Don't Screw These Up)
| Variable | Default | Description | 
|---|---|---|
PORT | 
3000 | 
Where the hell the server listens | 
NODE_ENV | 
development | 
Pick your poison: development vs production | 
DB_PATH | 
./employee_tracker.db | 
Where your crucial time data lives | 
SESSION_SECRET | 
employee-tracker-secret-key | 
Hide this like itβs your banking password | 
DEFAULT_ADMIN_USERNAME | 
admin | 
The overlordβs default login | 
DEFAULT_ADMIN_PASSWORD | 
admin123 | 
CHANGE THIS ASAP π₯ | 
BACKUP_ENABLED | 
true | 
Yeah, you want this on | 
BACKUP_INTERVAL | 
86400000 | 
How often to save your backside (MS) | 
BACKUP_RETENTION_DAYS | 
30 | 
How long to keep your safety net | 
π Docker Compose Config
version: '3.8' services: app: image: employee-hour-tracker environment: - NODE_ENV=production - SESSION_SECRET=your-secure-secret-here - DEFAULT_ADMIN_USERNAME=admin - DEFAULT_ADMIN_PASSWORD=change-this-password ports: - "3000:3000" volumes: - ./data:/app/data - ./backups:/app/backups
π Usage Guide
β±οΈ Time Tracking /tracking
- Pick your week and start clicking grid cells like a god
 - Cycle statuses like a boss
 - Sit back β auto-saveβs doing the work for you
 - Use arrows & selectors if you like jumping through time
 
π Analytics /analytics
- Choose your dates
 - Interpret shame-slices in the pie chart
 - Compare your teamβs hustle in bar form
 - Click Export and flex on your boss with pretty data
 
π¨βπΌ Admin Stuff /management
- Log in as admin (
admin/admin123) β seriously, change that - Add new employees like itβs HR day
 - Click to edit names (typos wonβt fix themselves)
 - Boot off old names thoughtfully (confirmation included)
 - Global settings & data export tools right at your manicured fingertips
 
ποΈ Project Architecture
employee-hour-tracker/ βββ π server.js # RESTful backend engine of doom βββ π backup.js # Makes sure your data doesnβt go *poof* βββ π package.json # Clearly youβve heard of this βββ π docker-compose.yml # Container boyband orchestration βββ π Dockerfile # Turns your app into deployable magic βββ π public/ # Frontend good stuff β βββ index.html # Your glorious entry point β βββ style.css # Sharp purple swagger β βββ script.js # Grid logic + admin finesse β βββ chart.js # Analytics eye-candy βββ π backups/ # This folder saves asses βββ π employee_tracker.db # Don't delete this... seriously
βοΈ Tech Stack
- Backend: Node.js + Express
 - Database: SQLite3 + better-sqlite3 (the better part matters)
 - Frontend: Raw Vanilla JS (no extra calories) + Chart.js
 - Auth: express-session + bcryptjs (like a bouncer for your admin area)
 - Containerization: Docker & Docker Compose
 
π Security
- Hashed passwords (get rekt plain text)
 - Session-based login β no silly tokens
 - CORS-tight so outsiders canβt jack your data
 - SQL injection-proof β parameterized 'cause weβre not amateurs
 - Secrets optional but highly encouraged (youβve been warned)
 
π§ Dev Life
npm run dev # Hot reload fixups npm start # Serious prod mode npm run install-deps # Just in case you skipped setup like a rebel
π API Endpoints
| Method | URL | What-It-Does | Auth | 
|---|---|---|---|
| GET | /api/employees | 
Fetch worker list | β | 
| POST | /api/employees | 
Add a badass | β | 
| PUT | /api/employees/:id | 
Update someoneβs stuff | β | 
| DELETE | /api/employees/:id | 
Boot 'em | β | 
| GET | /api/time-entries | 
Fetch time logs | β | 
| POST | /api/time-entries | 
Save/correct logs | β | 
| GET | /api/analytics | 
Data candy | β | 
| POST | /api/login | 
Get in | β | 
| POST | /api/logout | 
Peace out | β | 
| GET | /api/export/:format | 
Download your victory proof | β | 
π Known WTFs
- Week nav is a little moody if you click like a caffeinated squirrel
 - In rare cases, the status markerβs a lazy bastard and doesnβt update instantly
 
(Fix coming soon. Or yell at us, that works too.)
Support
Issues? Questions? Praise-singing?
File an issue on GitHub or yell at teb.
π Created by: tebbydog0605
π Docker Hub: tebwritescode
π» Website: teb.codes