This document provides an overview of the cleaned up TimeTracker project structure after removing unnecessary files and consolidating the codebase.
TimeTracker/
βββ π app/ # Main Flask application
β βββ blueprint_registry.py # Centralized blueprint registration
β βββ routes/ # Route blueprints (auth, api, tasks, workforce, etc.)
β βββ templates/ # Jinja2 HTML templates
β βββ models/ # SQLAlchemy models
β βββ services/ # Business logic layer
β βββ utils/ # Utilities (timezone, validation, etc.)
βββ π desktop/ # Desktop app (Electron/Tauri-style wrapper, esbuild bundle)
βββ π mobile/ # Flutter mobile app
βββ π assets/ # Static assets (images, screenshots)
βββ π docker/ # Docker configuration files
βββ π tests/ # Test suite
βββ π .github/ # GitHub workflows and configurations
βββ π logs/ # Application logs (with .gitkeep)
βββ π³ Dockerfile # Main Dockerfile
βββ π docker-compose.yml # Default stack (HTTPS via nginx)
βββ π docker-compose.example.yml # HTTP on port 8080 (no nginx)
βββ π docker/docker-compose.local-test.yml # SQLite, HTTP 8080 (quick test)
βββ π docker/docker-compose.remote.yml # Remote/production compose (ghcr.io)
βββ π docker/docker-compose.remote-dev.yml # Remote dev/testing compose (ghcr.io)
βββ π requirements.txt # Python dependencies
βββ π app.py # Application entry point
βββ π env.example # Environment variables template
βββ π README.md # Main project documentation
βββ π CONTRIBUTING.md # Contribution guidelines
βββ π CODE_OF_CONDUCT.md # Community code of conduct
βββ π LICENSE # GPL v3 license
βββ π GITHUB_WORKFLOW_IMAGES.md # Docker image workflow docs
βββ π DOCKER_PUBLIC_SETUP.md # Public container setup docs
βββ π REQUIREMENTS.md # Detailed requirements documentation
βββ π deploy-public.bat # Windows deployment script
βββ π deploy-public.sh # Linux/Mac deployment script
DATABASE_INIT_FIX_FINAL_README.md- Database fix documentation (resolved)DATABASE_INIT_FIX_README.md- Database fix documentation (resolved)TIMEZONE_FIX_README.md- Timezone fix documentation (resolved)Dockerfile.test- Test Dockerfile (not needed)Dockerfile.combined- Combined Dockerfile (consolidated)docker-compose.yml- Old compose file (replaced)deploy.sh- Old deployment script (replaced)index.html- Unused HTML file_config.yml- Unused config filelogs/timetracker.log- Large log file (not in version control).pytest_cache/- Python test cache directory
- Dockerfiles: Primary
Dockerfileat repo root; additional Dockerfiles indocker/as needed - Docker Compose:
docker-compose.yml(local),docker/docker-compose.remote.yml,docker/docker-compose.remote-dev.yml - Deployment:
deploy-public.bat,deploy-public.sh
- blueprint_registry.py: Centralized registration of all route blueprints (reduces
__init__.pysize). Optional blueprints loglogger.exceptionon failure; in local development (FLASK_ENV=developmentorDEBUG) failures re-raise; production and tests continue without that blueprint. - Models: Database models for users, projects, time entries, tasks, and settings
- Routes: API endpoints and web routes (auth, api, api_v1, tasks, admin, etc.)
- Templates: Jinja2 HTML templates under
app/templates/(task management, reports, timer, etc.) - Utils: Utility functions including timezone management, validation, cache
- Config: Application configuration (
app/config.py)
- Startup scripts: Container initialization and database setup
- Database scripts: SQL-based database initialization
- Configuration files: Docker-specific configurations
- All Jinja2 templates live under
app/templates/(admin, main, projects, reports, tasks, timer, workforce, mileage, etc.)
- Screenshots: Application screenshots for documentation
- Images: Logo and other static images
- File:
docker-compose.yml - Image: Built from local source
- Use case: Quick start and production; serves https://localhost (nginx + self-signed cert).
- File:
docker-compose.example.ymlβ app on http://localhost:8080 (published image or build). - File:
docker/docker-compose.local-test.ymlβ SQLite, http://localhost:8080 (no PostgreSQL).
- File:
docker/docker-compose.remote.yml - Image:
ghcr.io/drytrix/timetracker:latest(or versioned tag) - Use case: Production deployment
- File:
docker/docker-compose.remote-dev.yml - Image:
ghcr.io/drytrix/timetracker:development - Use case: Pre-release testing
- README.md (root): Main project documentation and quick start guide
- CONTRIBUTING.md (root): Contributing β quick overview; full guidelines in CONTRIBUTING.md (this folder)
- CODE_OF_CONDUCT.md (this folder): CODE_OF_CONDUCT.md β community guidelines
- ARCHITECTURE.md: Architecture overview
- INSTALLATION.md (root): Installation guide
- DEVELOPMENT.md: Development guide
- API.md: API quick reference
- PROJECT_STRUCTURE.md (this folder): Project structure overview
- TASK_MANAGEMENT_README.md (docs/): Detailed Task Management feature documentation
Timesheet periods, policies, and time-off tracking for payroll and compliance:
- Models:
TimesheetPeriod,TimesheetPolicy,TimeOff(inapp/models/) - Routes:
workforceblueprint β dashboard, period close, policies, time-off, delete (periods, time-off requests, leave types, holidays) - Services:
workforce_governance_service.pyβ period close, policy checks, time-off logic, delete (period, leave request, leave type, holiday) - Templates:
app/templates/workforce/(e.g. dashboard, with delete buttons where allowed) - Migration:
132_add_timesheet_governance_and_time_off.py - Docs: Workforce delete feature (Issue #562)
The Task Management feature is fully integrated into the application with automatic database migration:
- No manual setup required: Database tables are created automatically on first startup
- Integrated migration: Migration logic is built into the application initialization
- Fallback support: Manual migration script available if needed
- Models:
Taskmodel with full relationship support - Routes: Complete CRUD operations for task management
- Templates: Responsive task management interface
- Integration: Tasks linked to projects and time tracking
- GITHUB_WORKFLOW_IMAGES.md: Docker image build workflow
- DOCKER_PUBLIC_SETUP.md: Public container setup guide
- REQUIREMENTS.md: Detailed system requirements
- requirements.txt: Python package dependencies
- app.py: Flask application entry point
- env.example: Environment variables template
- tests/: Test suite and test files
- Removed Duplicate Files: Eliminated redundant documentation and configuration files
- Consolidated Docker Setup: Streamlined to two main container types
- Updated Documentation: README now reflects current project state
- Timezone Support: Added comprehensive timezone management (100+ options)
- Clean Structure: Organized project for better maintainability
- Choose deployment type: Local dev, remote, or remote-dev
- Follow README.md: Complete setup instructions
- Use appropriate compose file:
docker-compose.yml,docker/docker-compose.remote.yml, ordocker/docker-compose.remote-dev.yml - Configure timezone: Access admin settings to set your local timezone
- Canonical app version: Defined in
setup.py(single source of truth). Do not duplicate the version in other docs. - Desktop:
desktop/package.jsonversion should align with the app version when the desktop client ships with that release. - Frontend build: Root
package.jsonis for Tailwind/build tooling and may use a separate semver (e.g. 1.0.0). - API docs (OpenAPI):
GET /api/openapi.jsonsetsinfo.versionfromget_version_from_setup()inapp/config/analytics_defaults.py(readssetup.pyat runtime).TIMETRACKER_VERSIONorAPP_VERSIONmay override that for CI or containers; if still unknown,app/routes/api_docs.pyfalls back to FlaskAPP_VERSIONconfig. Do not hardcode a version string in the spec.
.gitkeepfiles: Ensure empty directories are tracked in Git.github/: GitHub Actions workflows for automated buildslogs/: Application log storage (cleaned up, only.gitkeepremains)LICENSE: GPL v3 open source license.gitignore: Git ignore patterns for temporary files
This cleaned up structure provides a more maintainable and focused codebase while preserving all essential functionality and documentation.