3cf2f381c16fbdb8fc7ca325f471cfee9c00375f
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
# Initialize the database and run migrations
python migrate_db.py
python migrate_roles_teams.py # Add role and team support
python migrate_projects.py # Add project management
# Run the application
python app.py
First-Time Setup
- Admin Account: Create the first admin user through the registration page
- 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
The application includes several migration scripts to upgrade existing installations:
migrate_db.py: Core database initializationmigrate_roles_teams.py: Add role-based access control and team managementmigrate_projects.py: Add project management capabilitiesrepair_roles.py: Fix role assignments if needed
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 applicationmodels.py: Database models and relationshipstemplates/: HTML templates for all pagesstatic/: CSS and JavaScript filesmigrate_*.py: Database migration scripts
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%