115972c918615c63f038ef238b1fb362cb72a6f3
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
Legacy Migration Files: The following files are maintained for reference but are no longer needed:
migrate_db.py: Legacy core database migration (now integrated)migrate_roles_teams.py: Legacy role and team migration (now integrated)migrate_projects.py: Legacy project migration (now integrated)repair_roles.py: Legacy role repair utility (functionality now integrated)
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%