Sign inSign up

alextselegidis/timecrack

By alextselegidis

•Updated 12 days ago

Timecrack tracks work hours, organizes time by projects, and helps teams improve productivity.

Image
Content management system
0

582

alextselegidis/timecrack repository overview

⁠
Timecrack ⁠
Timecrack Docker


⁠ A powerful Open Source Time Tracking application that can be installed on your server.

GitHub GitHub release (latest by date) GitHub All Releases

About⁠ • Features⁠ • Setup⁠ • Environment Variables⁠ • License⁠

⁠About

Timecrack is a time tracking application, designed for simplicity and efficiency. It lets you define your projects and tasks, and then track the time you spend on them. You can also add notes to your time entries, and view reports of your time usage.

This Docker image is built on PHP 8.2 with Apache and is designed to run the Laravel-based Timecrack application. On container startup, the entrypoint script automatically generates the Laravel .env file from Docker environment variables, runs database migrations, and caches the configuration for optimal performance.

⁠Features

The application allows you to manage and organize your time trackings.

  • Clean & minimal interface
  • Tagging & search
  • Self-hosted (Docker support)
  • Multi-user capable (future/planned)
  • No tracking / no ads

⁠Setup

To clone and run this application, you'll need Docker⁠ installed on your computer. From your command line:

# Start a MySQL instance
docker run -d --name timecrack-db \
  -e MYSQL_ROOT_PASSWORD=secret \
  -e MYSQL_DATABASE=timecrack \
  mysql:8.0

# Pull and run the app
docker run -d --name timecrack-app \
  --link timecrack-db:db \
  -p 80:80 \
  -e APP_URL=http://localhost \
  -e DB_HOST=db \
  -e DB_DATABASE=timecrack \
  -e DB_USERNAME=root \
  -e DB_PASSWORD=secret \
  alextselegidis/timecrack:latest

⁠Docker Compose

You can use the following docker-compose.yml file to locally set up Timecrack with a MySQL database:

services:

  timecrack:
    image: alextselegidis/timecrack:latest
    restart: always
    ports:
      - '80:80'
    environment:
      - APP_NAME=Timecrack
      - APP_ENV=production
      - APP_DEBUG=false
      - APP_URL=http://localhost
      - DB_CONNECTION=mysql
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_DATABASE=timecrack
      - DB_USERNAME=root
      - DB_PASSWORD=secret
      - MAIL_MAILER=smtp
      - MAIL_HOST=smtp.example.org
      - MAIL_PORT=587
      - MAIL_USERNAME=
      - MAIL_PASSWORD=
      - MAIL_ENCRYPTION=tls
      - [email protected]
      - MAIL_FROM_NAME=Timecrack
    volumes:
      - timecrack-storage:/var/www/html/storage

  mysql:
    image: mysql:8.0
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=secret
      - MYSQL_DATABASE=timecrack
    volumes:
      - mysql:/var/lib/mysql

volumes:
  timecrack-storage:
  mysql:

⁠Environment Variables

The Docker image uses standard Laravel environment variables. All variables are passed through to the .env file that is generated on container startup.

⁠Application
VariableDefaultDescription
APP_NAMETimecrackApplication name
APP_ENVproductionApplication environment (production, local, testing)
APP_KEY(auto-generated)Application encryption key. If left empty, one is generated automatically on first start
APP_DEBUGfalseEnable debug mode (true / false)
APP_URLhttp://localhostThe public URL of the application
⁠Logging
VariableDefaultDescription
LOG_CHANNELstackLaravel log channel (stack, single, daily, stderr, etc.)
LOG_LEVELerrorMinimum log level (debug, info, notice, warning, error, critical)
⁠Database
VariableDefaultDescription
DB_CONNECTIONmysqlDatabase driver (mysql, pgsql, sqlite)
DB_HOSTdbDatabase hostname
DB_PORT3306Database port
DB_DATABASEtimecrackDatabase name
DB_USERNAMErootDatabase username
DB_PASSWORDsecretDatabase password
⁠Cache & Session
VariableDefaultDescription
CACHE_DRIVERfileCache driver (file, redis, memcached, database)
SESSION_DRIVERfileSession driver (file, redis, database, cookie)
SESSION_LIFETIME120Session lifetime in minutes
QUEUE_CONNECTIONsyncQueue connection (sync, redis, database)
BROADCAST_DRIVERlogBroadcast driver (log, redis, pusher)
FILESYSTEM_DISKlocalDefault filesystem disk
⁠Redis
VariableDefaultDescription
REDIS_HOST127.0.0.1Redis hostname
REDIS_PASSWORDnullRedis password
REDIS_PORT6379Redis port
⁠Mail
VariableDefaultDescription
MAIL_MAILERsmtpMail driver (smtp, sendmail, mailgun, ses, log)
MAIL_HOSTmailpitSMTP hostname
MAIL_PORT1025SMTP port
MAIL_USERNAMEnullSMTP username
MAIL_PASSWORDnullSMTP password
MAIL_ENCRYPTIONnullSMTP encryption (tls, ssl, or null)
MAIL_FROM_ADDRESS[email protected]Sender email address
MAIL_FROM_NAMETimecrackSender name

⁠Startup Behavior

On every container start the entrypoint script will:

  1. Generate the Laravel .env file from the Docker environment variables.
  2. Set correct permissions on storage/ and bootstrap/cache/.
  3. Auto-generate an APP_KEY if one was not provided.
  4. Run php artisan migrate --force to apply pending database migrations.
  5. Create the storage:link symbolic link.
  6. Cache configuration, routes, and views for performance.
  7. Start the Apache web server.

⁠License

Code Licensed Under GPL v3.0⁠ | Content Under CC BY 3.0⁠


Website alextselegidis.com⁠  ·  GitHub alextselegidis⁠  ·  Twitter @alextselegidis⁠

Tag summary

Content type

Image

Digest

sha256:45fde84e8…

Size

225.4 MB

Last updated

12 days ago

docker pull alextselegidis/timecrack