Commit 28a846
2025-08-08 19:55:24 Tebby Dog: init| /dev/null .. 2-code/flask/employee-hour-tracker.md | |
| @@ 0,0 1,250 @@ | |
| + | # 📊 Employee Hour Tracker | 
| + | |
| + | > A comprehensive web application for tracking employee work time with real-time analytics, management features, and automated backups. | 
| + | |
| + |  | 
| + |  | 
| + |  | 
| + |  | 
| + |  | 
| + | |
| + | ## ✨ Features | 
| + | |
| + | ### 📅 **Time Tracking** | 
| + | - Interactive weekly grid interface for tracking employee time entries | 
| + | - Click-to-cycle through status states: Not Entered → Entered → Incorrect | 
| + | - Week navigation with integrated calendar picker | 
| + | - Configurable default week settings | 
| + | - Auto-save functionality for all changes | 
| + | |
| + | ### 📈 **Analytics Dashboard** | 
| + | - **Visual Analytics**: Interactive charts powered by Chart.js | 
| + | - **Date Filtering**: Preset ranges (Last Week, Last Month, Last 90 Days) or custom date selection | 
| + | - **Status Distribution**: Pie chart showing overall entry patterns | 
| + | - **Employee Comparison**: Bar chart for performance analysis | 
| + | - **Summary Cards**: Quick statistics at a glance | 
| + | |
| + | ### 👥 **Employee Management** | 
| + | - Complete employee lifecycle management | 
| + | - Add new employees with immediate tracking integration | 
| + | - Inline editing for employee names | 
| + | - Safe removal with confirmation dialogs | 
| + | - Session-based authentication for secure access | 
| + | |
| + | ### 💾 **Data Export & Backup** | 
| + | - **Multiple Export Formats**: | 
| + | - Colored Excel files maintaining visual status indicators | 
| + | - JSON format for system integrations | 
| + | - CSV for universal compatibility | 
| + | - **Automated Backups**: Scheduled database backups with configurable retention | 
| + | |
| + | ### 🎨 **Modern UI/UX** | 
| + | - Responsive design optimized for all devices | 
| + | - Cohesive purple gradient theme throughout | 
| + | - Smooth animations and transitions | 
| + | - Mobile-friendly touch interactions | 
| + | - Clean, intuitive navigation | 
| + | |
| + | ## 🚀 Quick Start | 
| + | |
| + | ### Prerequisites | 
| + | - Node.js 18+ and npm | 
| + | - OR Docker and Docker Compose | 
| + | |
| + | ### Installation Options | 
| + | |
| + | #### **Option 1: Node.js** | 
| + | |
| + | ```bash | 
| + | # Clone the repository | 
| + | git clone https://github.com/tebwritescode/employee-hour-tracker.git | 
| + | cd employee-hour-tracker | 
| + | |
| + | # Install dependencies | 
| + | npm install | 
| + | |
| + | # Start the application | 
| + | npm start | 
| + | |
| + | # For development with auto-reload | 
| + | npm run dev | 
| + | ``` | 
| + | |
| + | #### **Option 2: Docker Compose** (Recommended) | 
| + | |
| + | ```bash | 
| + | # Clone the repository | 
| + | git clone https://github.com/tebwritescode/employee-hour-tracker.git | 
| + | cd employee-hour-tracker | 
| + | |
| + | # Start with Docker Compose | 
| + | docker-compose up -d | 
| + | |
| + | # View logs | 
| + | docker-compose logs -f | 
| + | |
| + | # Stop the application | 
| + | docker-compose down | 
| + | ``` | 
| + | |
| + | #### **Option 3: Docker CLI** | 
| + | |
| + | ```bash | 
| + | # Build the image | 
| + | docker build -t employee-hour-tracker . | 
| + | |
| + | # Run the container | 
| + | docker run -d \ | 
| + | --name employee-tracker \ | 
| + | -p 3000:3000 \ | 
| + | -v employee-tracker-data:/app/data \ | 
| + | employee-hour-tracker | 
| + | ``` | 
| + | |
| + | Access the application at `http://localhost:3000` | 
| + | |
| + | ## 🔧 Configuration | 
| + | |
| + | ### Environment Variables | 
| + | |
| + | | Variable | Default | Description | | 
| + | |----------|---------|-------------| | 
| + | | `PORT` | `3000` | Server port | | 
| + | | `NODE_ENV` | `development` | Environment mode (`development` or `production`) | | 
| + | | `DB_PATH` | `./employee_tracker.db` | Database file location | | 
| + | | `SESSION_SECRET` | `employee-tracker-secret-key` | Session encryption key | | 
| + | | `DEFAULT_ADMIN_USERNAME` | `admin` | Initial admin username | | 
| + | | `DEFAULT_ADMIN_PASSWORD` | `admin123` | Initial admin password | | 
| + | | `BACKUP_ENABLED` | `true` | Enable automated backups | | 
| + | | `BACKUP_INTERVAL` | `86400000` | Backup interval in milliseconds (default: 24 hours) | | 
| + | | `BACKUP_RETENTION_DAYS` | `30` | Number of days to keep backup files | | 
| + | |
| + | ### Docker Compose Configuration | 
| + | |
| + | ```yaml | 
| + | 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`) | 
| + | 1. Select the desired week using the date picker or arrow navigation | 
| + | 2. Click on any cell in the grid to cycle through status states | 
| + | 3. Changes are automatically saved to the database | 
| + | 4. Use the week selector to navigate between different time periods | 
| + | |
| + | ### **Analytics** (`/analytics`) | 
| + | 1. Select a date range using preset options or custom dates | 
| + | 2. View status distribution in the pie chart | 
| + | 3. Compare employee performance in the bar chart | 
| + | 4. Export data using the export buttons | 
| + | |
| + | ### **Management** (`/management`) | 
| + | 1. Login with admin credentials (default: `admin`/`admin123`) | 
| + | 2. Add new employees using the "Add Employee" form | 
| + | 3. Edit employee names by clicking the edit icon | 
| + | 4. Remove employees with the delete button (requires confirmation) | 
| + | 5. Access global settings and export options | 
| + | |
| + | ## 🏗️ Architecture | 
| + | |
| + | ``` | 
| + | employee-hour-tracker/ | 
| + | ├── 📄 server.js # Express server and API endpoints | 
| + | ├── 📄 backup.js # Automated backup functionality | 
| + | ├── 📄 package.json # Dependencies and scripts | 
| + | ├── 📄 docker-compose.yml # Docker composition | 
| + | ├── 📄 Dockerfile # Container configuration | 
| + | ├── 📁 public/ # Frontend assets | 
| + | │ ├── 📄 index.html # Main application HTML | 
| + | │ ├── 📄 style.css # Styles and responsive design | 
| + | │ ├── 📄 script.js # Frontend logic and interactions | 
| + | │ └── 📄 chart.js # Analytics visualization | 
| + | ├── 📁 backups/ # Automated backup storage | 
| + | └── 📗 employee_tracker.db # SQLite database | 
| + | ``` | 
| + | |
| + | ### Tech Stack | 
| + | - **Backend**: Node.js + Express.js | 
| + | - **Database**: SQLite3 with better-sqlite3 | 
| + | - **Frontend**: Vanilla JavaScript + Chart.js | 
| + | - **Authentication**: Express-session + bcryptjs | 
| + | - **Containerization**: Docker + Docker Compose | 
| + | |
| + | ## 🔐 Security | 
| + | |
| + | - Password hashing using bcryptjs | 
| + | - Session-based authentication | 
| + | - CORS protection | 
| + | - SQL injection prevention via parameterized queries | 
| + | - Secure session management with configurable secrets | 
| + | |
| + | ## 🛠️ Development | 
| + | |
| + | ### Available Scripts | 
| + | |
| + | ```bash | 
| + | # Start development server with auto-reload | 
| + | npm run dev | 
| + | |
| + | # Start production server | 
| + | npm start | 
| + | |
| + | # Install all dependencies | 
| + | npm run install-deps | 
| + | ``` | 
| + | |
| + | ### API Endpoints | 
| + | |
| + | | Method | Endpoint | Description | Auth Required | | 
| + | |--------|----------|-------------|---------------| | 
| + | | GET | `/api/employees` | List all employees | No | | 
| + | | POST | `/api/employees` | Add new employee | Yes | | 
| + | | PUT | `/api/employees/:id` | Update employee | Yes | | 
| + | | DELETE | `/api/employees/:id` | Remove employee | Yes | | 
| + | | GET | `/api/time-entries` | Get time entries | No | | 
| + | | POST | `/api/time-entries` | Update time entry | No | | 
| + | | GET | `/api/analytics` | Get analytics data | No | | 
| + | | POST | `/api/login` | Admin authentication | No | | 
| + | | POST | `/api/logout` | End admin session | Yes | | 
| + | | GET | `/api/export/:format` | Export data | Yes | | 
| + | |
| + | ## 🐛 Known Issues | 
| + | |
| + | - Week navigation may occasionally show incorrect dates when changing weeks rapidly | 
| + | - Status markers might not update immediately in some edge cases with week transitions | 
| + | |
| + | ## 📝 License | 
| + | |
| + | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. | 
| + | |
| + | ## 🤝 Contributing | 
| + | |
| + | Contributions are welcome! Please feel free to submit a Pull Request. | 
| + | |
| + | 1. Fork the project | 
| + | 2. Create your feature branch (`git checkout -b feature/AmazingFeature`) | 
| + | 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) | 
| + | 4. Push to the branch (`git push origin feature/AmazingFeature`) | 
| + | 5. Open a Pull Request | 
| + | |
| + | ## 📧 Support | 
| + | |
| + | For issues, questions, or suggestions, please open an issue on the [GitHub repository](https://github.com/tebwritescode/employee-hour-tracker/issues). | 
| + | |
| + | --- | 
| + | |
| + | <p align="center">Made with ❤️ by <a href="https://github.com/tebwritescode">tebwritescode</a></p> |