9a79778ad600dc64dd2890f1ef291bccc0d6f524
commit 1eeea9f83ad9230a5c1f7a75662770eaab0df837 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 21:15:41 2025 +0200 Disable resuming of old time entries. commit 3e3ec2f01cb7943622b819a19179388078ae1315 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 20:59:19 2025 +0200 Refactor db migrations. commit 15a51a569da36c6b7c9e01ab17b6fdbdee6ad994 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 19:58:04 2025 +0200 Apply new style for Time Tracking view. commit 77e5278b303e060d2b03853b06277f8aa567ae68 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 18:06:04 2025 +0200 Allow direct registrations as a Company. commit 188a8772757cbef374243d3a5f29e4440ddecabe Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 18:04:45 2025 +0200 Add email invitation feature. commit d9ebaa02aa01b518960a20dccdd5a327d82f30c6 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 17:12:32 2025 +0200 Apply common style for Company, User, Team management pages. commit 81149caf4d8fc6317e2ab1b4f022b32fc5aa6d22 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 16:44:32 2025 +0200 Move export functions to own module. commit 1a26e19338e73f8849c671471dd15cc3c1b1fe82 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 15:51:15 2025 +0200 Split up models.py. commit 61f1ccd10f721b0ff4dc1eccf30c7a1ee13f204d Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 12:05:28 2025 +0200 Move utility function into own modules. commit 84b341ed35e2c5387819a8b9f9d41eca900ae79f Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 11:44:24 2025 +0200 Refactor auth functions use. commit 923e311e3da5b26d85845c2832b73b7b17c48adb Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 11:35:52 2025 +0200 Refactor route nameing and fix bugs along the way. commit f0a5c4419c340e62a2615c60b2a9de28204d2995 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 10:34:33 2025 +0200 Fix URL endpoints in announcement template. commit b74d74542a1c8dc350749e4788a9464d067a88b5 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 09:25:53 2025 +0200 Move announcements to own module. commit 9563a28021ac46c82c04fe4649b394dbf96f92c7 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 09:16:30 2025 +0200 Combine Company view and edit templates. commit 6687c373e681d54e4deab6b2582fed5cea9aadf6 Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 08:17:42 2025 +0200 Move Users, Company and System Administration to own modules. commit 8b7894a2e3eb84bb059f546648b6b9536fea724e Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 07:40:57 2025 +0200 Move Teams and Projects to own modules. commit d11bf059d99839ecf1f5d7020b8c8c8a2454c00b Author: Jens Luedicke <jens@luedicke.me> Date: Mon Jul 7 07:09:33 2025 +0200 Move Tasks and Sprints to own modules.
TimeTrack
TimeTrack is a comprehensive web-based time tracking application built with Flask that provides enterprise-level time management capabilities for teams and organizations. The application features role-based access control, project management, team collaboration, and secure authentication.
Features
Core Time Tracking
- Real-time Time Tracking: Clock in/out with live timer functionality
- Project Time Logging: Track time spent on specific projects with project codes
- Break Management: Configurable mandatory and additional break tracking
- Time Entry Management: Edit, delete, and view time entries with complete history
- Automatic Calculations: Duration calculations for work hours and breaks
User Management & Security
- Two-Factor Authentication (2FA): TOTP-based authentication with QR codes
- Role-Based Access Control: Admin, Supervisor, Team Leader, and Team Member roles
- User Administration: Create, edit, block/unblock users with verification system
- Profile Management: Update email, password, and personal settings
Team & Project Management
- Team Management: Create teams, assign members, and track team hours
- Project Management: Create projects with codes, assign to teams, set active/inactive status
- Team Hours Tracking: View team member working hours with date filtering
- Project Assignment: Flexible project-team assignments and access control
Export & Reporting
- Multiple Export Formats: CSV and Excel export capabilities
- Individual Time Export: Personal time entries with date range selection
- Team Hours Export: Export team member hours with filtering options
- Quick Export Options: Today, week, month, or all-time data exports
Administrative Features
- Admin Dashboard: System overview with user, team, and activity statistics
- System Settings: Configure registration settings and global preferences
- User Administration: Complete user lifecycle management
- Team & Project Administration: Full CRUD operations for teams and projects
Tech Stack
- Backend: Flask 2.0.1 with SQLAlchemy ORM
- Database: SQLite with comprehensive relational schema
- Authentication: Flask session management with 2FA support
- Frontend: Responsive HTML, CSS, JavaScript with real-time updates
- Security: TOTP-based two-factor authentication, role-based access control
- Export: CSV and Excel export capabilities
- Dependencies: See Pipfile for complete dependency list
Installation
Prerequisites
- Python 3.12
- pip or pipenv
Setup with pipenv (recommended)
# Clone the repository
git clone https://github.com/nullmedium/TimeTrack.git
cd TimeTrack
# Install dependencies using pipenv
pipenv install
# Activate the virtual environment
pipenv shell
# Run the application (migrations run automatically on first startup)
python app.py
First-Time Setup
- Start the Application: The database is automatically created and initialized on first startup
- Admin Account: An initial admin user is created automatically with username
adminand passwordadmin - Change Default Password: IMPORTANT: Change the default admin password immediately after first login
- System Configuration: Access Admin Dashboard to configure system settings
- Team Setup: Create teams and assign team leaders
- Project Creation: Set up projects with codes and team assignments
- User Management: Add users and assign appropriate roles
Database Migrations
Automatic Migration System: All database migrations now run automatically when the application starts. No manual migration scripts need to be run.
The integrated migration system handles:
- Database schema creation for new installations
- Automatic schema updates for existing databases
- User table enhancements (verification, roles, teams, 2FA)
- Project and team management table creation
- Sample data initialization
- Data integrity maintenance during upgrades
Configuration
The application can be configured through:
- Admin Dashboard: System-wide settings and user management
- User Profiles: Individual work hour and break preferences
- Environment Variables: Database and Flask configuration
Usage
For Regular Users
- Register/Login: Create account or log in with existing credentials
- Setup 2FA: Optionally enable two-factor authentication for enhanced security
- Clock In/Out: Use the timer interface to track work hours
- Manage Breaks: Record and track break periods
- View History: Access complete time entry history with filtering
- Export Data: Download time entries in CSV or Excel format
For Team Leaders
- Manage Team Members: View team member status and activity
- Track Team Hours: Monitor team working hours with date filtering
- Export Team Data: Generate team hour reports
For Supervisors/Admins
- User Management: Create, edit, and manage user accounts
- Team Administration: Create teams and assign members
- Project Management: Set up projects and assign to teams
- System Configuration: Configure global settings and permissions
- Analytics: View system-wide statistics and activity
Security Features
- Two-Factor Authentication: TOTP-based 2FA with QR code setup
- Role-Based Access Control: Four distinct user roles with appropriate permissions
- Session Management: Secure login/logout with "remember me" functionality
- Data Validation: Comprehensive input validation and error handling
- Account Verification: Email verification system for new accounts
API Endpoints
The application provides various endpoints for different user roles:
/admin/*: Administrative functions (Admin only)/supervisor/*: Supervisor functions (Supervisor+ roles)/team/*: Team management (Team Leader+ roles)/export/*: Data export functionality/auth/*: Authentication and profile management
File Structure
app.py: Main Flask application with integrated migration systemmodels.py: Database models and relationshipstemplates/: HTML templates for all pagesstatic/: CSS and JavaScript filesmigrate_*.py: Legacy migration scripts (no longer needed)
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
This project is licensed under the MIT License.
Languages
HTML
52.9%
Python
27.2%
CSS
12.4%
JavaScript
7.1%
Shell
0.3%