Professional time tracking solution for teams and enterprises with advanced LDAP integration, JIRA synchronization, and comprehensive reporting.
- Intuitive Entry Management - Quick time entry with smart autocompletion
- Bulk Operations - Efficient handling of vacation, sick leave, and recurring tasks
- Real-time Validation - Instant feedback on overlapping entries and constraints
- Flexible Time Formats - Support for various time input formats and rounding rules
- Multi-level Dashboards - Personal, project, and company-wide insights
- Export Integration - XLSX exports for controlling and compliance
- Custom Reports - Flexible reporting with filtering and grouping
- Performance Metrics - Track productivity trends and resource allocation
- LDAP/Active Directory - Seamless authentication with automatic user provisioning
- JIRA Synchronization - Bidirectional worklog sync with OAuth 2.0 support
- Multi-tenant Architecture - Support for multiple customers and projects
- External Ticket Systems - Integration with third-party project management tools
- Role-based Access Control - Developer, Controller, and Project Leader roles
- Team Organization - Hierarchical team structures with delegation support
- Service Users - API access for automated integrations
- Audit Trail - Comprehensive logging of all user actions
# Clone the repository
git clone https://github.com/netresearch/timetracker.git
cd timetracker
# Start development environment
make up
# Install dependencies and initialize database
make install
make db-migrate
# Load sample data (optional)
docker compose exec app php bin/console doctrine:fixtures:load
# Access the application
open http://localhost:8765
# Prerequisites: PHP 8.4+, MySQL/MariaDB, Composer, Node.js 18+
git clone https://github.com/netresearch/timetracker.git
cd timetracker
# Install PHP dependencies
composer install
# Install and build frontend assets
npm install
npm run build
# Configure environment
cp .env.example .env.local
# Edit .env.local with your database and LDAP settings
# Initialize database
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
# Start development server
symfony server:start
# Or: php -S localhost:8000 -t public/
- PHP: 8.4+ with extensions:
ldap
,pdo_mysql
,openssl
,intl
,json
,mbstring
- Database: MySQL 8.0+ or MariaDB 10.5+
- Node.js: 18+ for asset compilation
- Memory: Minimum 512MB, recommended 2GB for development
- Web Server: Nginx (recommended) or Apache 2.4+
- PHP-FPM: Recommended for production deployments
- SSL/TLS: Required for secure authentication flows
- Monitoring: Compatible with Prometheus, New Relic, Datadog
- Backend: PHP 8.4, Symfony 7.3, Doctrine ORM 3
- Frontend: Stimulus, SCSS, Webpack Encore
- Database: MySQL/MariaDB with optimized indexes
- Authentication: LDAP/AD with JWT token support
- Testing: PHPUnit 12, Parallel test execution
- Code Quality: PHPStan Level 9, Laravel Pint, Rector
timetracker/
βββ π src/
β βββ Controller/ # HTTP endpoints (action-based)
β βββ Service/ # Business logic layer
β βββ Entity/ # Doctrine data models
β βββ Repository/ # Data access layer
β βββ Security/ # Authentication & authorization
β βββ Dto/ # Data transfer objects
βββ π§ͺ tests/
β βββ Unit/ # Unit tests (70% coverage target)
β βββ Integration/ # Service integration tests
β βββ Controller/ # API endpoint tests
βββ π³ docker/ # Container configurations
βββ π docs/ # Comprehensive documentation
βββ π§ config/ # Application configuration
- Developer Onboarding - Complete setup guide
- Configuration Guide - Environment and feature configuration
- Architecture Overview - System design and patterns
- API Documentation - Complete API reference with examples
- Testing Guide - Testing strategy and best practices
- Security Implementation - Security patterns
- Docker Deployment - Production deployment guide
- Performance Tuning - Optimization guidelines
- Monitoring Setup - Observability configuration
The project maintains high code quality with comprehensive testing:
# Run all tests
make test
# Parallel execution (faster)
make test-parallel
# With coverage report
make coverage
# Performance benchmarks
make perf:benchmark
Current Coverage: 38% β Target: 80%
- Unit Tests (70%): Individual component testing
- Integration Tests (25%): Service interaction testing
- Functional Tests (5%): End-to-end user journey testing
- LDAP/Active Directory integration with automatic user provisioning
- JWT tokens for API authentication with configurable expiration
- Role-based access control with fine-grained permissions
- Service user support for automated integrations
- CSRF protection on all forms and API endpoints
- Input validation using Symfony's validation component
- SQL injection prevention via Doctrine ORM parameter binding
- XSS protection through Twig's auto-escaping
- GDPR compliance with data export and deletion capabilities
- Audit logging for all sensitive operations
- Secure token storage with encryption at rest
# Login and get JWT token
curl -X POST http://localhost:8765/api/login \
-H "Content-Type: application/json" \
-d '{"username": "john.doe", "password": "secret"}'
# Use token for API calls
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
http://localhost:8765/api/entries
# Create time entry
curl -X POST http://localhost:8765/api/entries \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"start": "09:00",
"end": "17:00",
"description": "Feature development",
"ticket": "PROJ-123",
"project": 1
}'
# Get user entries
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
"http://localhost:8765/api/entries?date=2024-01-15"
# Bulk create entries (vacation, sick leave)
curl -X POST http://localhost:8765/api/entries/bulk \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{"date": "2024-01-15", "preset": "vacation", "duration": 480},
{"date": "2024-01-16", "preset": "vacation", "duration": 480}
]
}'
π Full API Documentation: docs/API_DOCUMENTATION.md
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Follow our coding standards:
make check-all
- Write tests for your changes
- Submit a pull request with clear description
- PSR-12 code style with Laravel Pint
- PHPStan Level 9 static analysis
- PHPUnit tests with >80% coverage target
- Conventional Commits for clear change history
# Check code quality
make check-all
# Fix code style issues
make fix-all
# Run comprehensive test suite
make test-all
This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.
For commercial use without AGPL restrictions, please contact [email protected].
- π Documentation: Comprehensive guides in the docs/ directory
- π Issues: Report bugs and request features on GitHub Issues
- π¬ Discussions: Community support on GitHub Discussions
- π§ Enterprise: Commercial support at [email protected]
- π Star this repository if it helps your organization
- π Fork and customize for your specific needs
- π€ Contribute improvements back to the community
- GraphQL API for flexible data querying
- Mobile Apps for iOS and Android
- Advanced Analytics with ML-powered insights
- Slack Integration for seamless workflow integration
- Multi-language Support for international teams
- v4.x - Symfony 7.3, PHP 8.4, Modern architecture
- v3.x - Enhanced JIRA integration, Performance improvements
- v2.x - LDAP authentication, Team management
- v1.x - Core time tracking functionality
Built with β€οΈ by Netresearch
Empowering teams with professional time tracking since 2015