mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-01-04 02:30:01 -06:00
- Remove redundant documentation files (DATABASE_INIT_FIX_*.md, TIMEZONE_FIX_README.md) - Delete unused Docker files (Dockerfile.test, Dockerfile.combined, docker-compose.yml) - Remove obsolete deployment scripts (deploy.sh) and unused files (index.html, _config.yml) - Clean up logs directory (remove 2MB timetracker.log, keep .gitkeep) - Remove .pytest_cache directory - Consolidate Docker setup to two main container types: * Simple container (recommended for production) * Public container (for development/testing) - Enhance timezone support in admin settings: * Add 100+ timezone options organized by region * Implement real-time timezone preview with current time display * Add timezone offset calculation and display * Remove search functionality for cleaner interface * Update timezone utility functions for database-driven configuration - Update documentation: * Revise README.md to reflect current project state * Add comprehensive timezone features documentation * Update Docker deployment instructions * Create PROJECT_STRUCTURE.md for project overview * Remove references to deleted files - Improve project structure: * Streamlined file organization * Better maintainability and focus * Preserved all essential functionality * Cleaner deployment options
Docker Database Initialization
This directory contains scripts and configuration for the TimeTracker Docker setup with automatic database initialization.
Overview
The Docker setup now includes automatic database connection checking and initialization:
- Database Connection Check: The app waits for the PostgreSQL database to be ready
- Initialization Check: Verifies if the database has the required tables
- Automatic Initialization: If needed, runs the Python initialization script to create tables and default data
Files
start.sh
Main startup script that:
- Waits for database connection
- Checks if database is initialized
- Runs initialization if needed
- Starts the Flask application
init-database.py
Python script that:
- Connects to the database
- Creates all required tables using SQLAlchemy models
- Creates default admin user, settings, and project
- Handles errors gracefully
test-db.py
Utility script to test database connectivity and show initialization status.
init.sql and init-db.sh
Legacy initialization scripts (kept for reference, not used by default).
How It Works
- Docker Compose starts the PostgreSQL container
- Health Check ensures PostgreSQL is ready
- App Container waits for database to be healthy
- Startup Script checks database connection
- Initialization Check verifies required tables exist
- Python Script creates tables and default data if needed
- Flask App starts normally
Environment Variables
The following environment variables are used:
DATABASE_URL: PostgreSQL connection stringADMIN_USERNAMES: Comma-separated list of admin usernamesTZ: Timezone settingCURRENCY: Currency settingROUNDING_MINUTES: Time rounding setting
Testing
To test the database setup manually:
# Test database connection and status
docker exec timetracker-app python /app/docker/test-db.py
# Manually initialize database (if needed)
docker exec timetracker-app python /app/docker/init-database.py
Troubleshooting
Database Connection Issues
- Check if PostgreSQL container is running:
docker ps - Check PostgreSQL logs:
docker logs timetracker-db - Verify environment variables are set correctly
Initialization Issues
- Check app container logs:
docker logs timetracker-app - Verify database permissions
- Check if tables exist:
docker exec timetracker-db psql -U timetracker -d timetracker -c "\dt"
Health Check Failures
- Ensure the
/_healthendpoint is accessible - Check if the app is binding to the correct port
- Verify network connectivity between containers