# 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) ```bash # 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 1. **Start the Application**: The database is automatically created and initialized on first startup 2. **Admin Account**: An initial admin user is created automatically with username `admin` and password `admin` 3. **Change Default Password**: **IMPORTANT**: Change the default admin password immediately after first login 4. **System Configuration**: Access Admin Dashboard to configure system settings 5. **Team Setup**: Create teams and assign team leaders 6. **Project Creation**: Set up projects with codes and team assignments 7. **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 1. **Register/Login**: Create account or log in with existing credentials 2. **Setup 2FA**: Optionally enable two-factor authentication for enhanced security 3. **Clock In/Out**: Use the timer interface to track work hours 4. **Manage Breaks**: Record and track break periods 5. **View History**: Access complete time entry history with filtering 6. **Export Data**: Download time entries in CSV or Excel format ### For Team Leaders 1. **Manage Team Members**: View team member status and activity 2. **Track Team Hours**: Monitor team working hours with date filtering 3. **Export Team Data**: Generate team hour reports ### For Supervisors/Admins 1. **User Management**: Create, edit, and manage user accounts 2. **Team Administration**: Create teams and assign members 3. **Project Management**: Set up projects and assign to teams 4. **System Configuration**: Configure global settings and permissions 5. **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 system - `models.py`: Database models and relationships - `templates/`: HTML templates for all pages - `static/`: CSS and JavaScript files - `migrate_*.py`: Legacy migration scripts (no longer needed) ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Test thoroughly 5. Submit a pull request ## License This project is licensed under the MIT License.