root cbe06c2d33 Fix Dockerfile: use --no-scripts for cached composer install
composer install needs full app source for post-autoload-dump scripts.
Use --no-scripts in the cached layer, run dump-autoload after full copy.
Build verified locally.
2026-07-14 05:45:36 +02:00

Quatriz TimeSheet

Admin-facing weekly timesheet application built with Laravel 13, Filament 5, and PostgreSQL.

Local setup

composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
npm install && npm run build
php artisan serve

Run the scheduler and queue in separate terminals for full parity with production:

php artisan schedule:work
php artisan queue:work

Testing

php artisan test
composer audit

Observability

This app integrates three production monitoring tools:

Tool Purpose
Flare Exception and error tracking
spatie/laravel-activitylog Admin audit trail
Better Uptime Uptime + scheduler/queue heartbeats

Full setup, env vars, monitor URLs, and ops runbook: docs/OBSERVABILITY.md

Quick start (observability)

  1. Copy observability vars from .env.example
  2. php artisan migrate (creates activity_log table)
  3. Flare: set FLARE_KEY + FLARE_REPORT=true, then php artisan flare:test --errors
  4. Better Uptime: set BETTER_UPTIME_ENABLED=true, generate UPTIME_HEARTBEAT_TOKEN, create monitors (see runbook)
  5. Audit log: log in as admin → Administration → Audit Log

Troubleshooting

Symptom Check
No Flare events FLARE_KEY set, FLARE_REPORT=true, php artisan config:clear
Heartbeat 503 Cron running? php artisan schedule:run · Queue worker up?
Heartbeat 403 UPTIME_HEARTBEAT_TOKEN matches monitor URL query string
Audit log empty ACTIVITYLOG_ENABLED=true, migration applied
/up fails from monitor Add probe IP to HEALTH_CHECK_ALLOWED_IPS

Security

  • Security contact: see /.well-known/security.txt
  • Production: APP_DEBUG=false, SESSION_ENCRYPT=true, CSP enforcement after verification

License

MIT

Description
Timesheet staging deployment
Readme 2.1 MiB
Languages
PHP 52.1%
HTML 15%
Blade 14.6%
JavaScript 13.7%
CSS 2.8%
Other 1.8%