Change healthchecks to use 'ps aux | grep' instead of 'pgrep' since
procps may not be available in existing images. This works with the
base Python image without requiring a rebuild.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replace celery inspect ping with pgrep check for reliability.
The inspect command was failing in healthcheck context while
the worker process itself was running fine.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix import error in notifications/tasks.py (timezone.datetime -> datetime)
- Add healthchecks to celery-worker and celery-beat containers
- Add procps package to Dockerfile for pgrep command
- Add email environment variables to celery containers
The import error was causing celery workers to crash when loading tasks.
Missing healthchecks prevented proper container health monitoring.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Major changes:
- Switch from MariaDB to PostgreSQL 16
- Add all required environment variables to web service:
- SECRET_KEY, DEBUG, ALLOWED_HOSTS
- CSRF_TRUSTED_ORIGINS, CORS_ALLOWED_ORIGINS
- Email configuration (HOST, PORT, USER, PASSWORD, TLS)
- Gunicorn settings (WORKERS, TIMEOUT)
- Add SECRET_KEY to celery services (required for Django)
- Update all services to depend on 'postgres' instead of 'mariadb'
- Update DATABASE_URL to use PostgreSQL format
- Update .env.docker.example to reflect PostgreSQL and add WEB_PORT
All environment variables now properly declared in compose file
with ${VAR} syntax for Portainer/Docker compatibility.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Allows deployment when port 8000 is already in use (e.g., by Portainer)
- Defaults to 8000 if WEB_PORT not specified
- Use WEB_PORT=8001 (or any other port) to override
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Portainer provides environment variables through UI
- env_file references caused deployment failure when .env.docker not present
- Environment variables now come from Portainer Stack configuration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add Dockerfile for production (multi-stage build)
- Add Dockerfile.dev for development with hot reload
- Add docker-compose.yml with 5 services (web, mariadb, redis, celery-worker, celery-beat)
- Add docker-compose.dev.yml for development overrides
- Add .dockerignore for optimized builds
- Add docker/entrypoint.sh startup script
- Add .env.docker.example template
- Add Makefile for common commands
- Add deploy.sh for one-command deployment
- Update config/settings/selfhosted.py to support MariaDB via DATABASE_URL
- Add mysqlclient to requirements.txt for MariaDB support
- Update .gitignore to exclude .env.docker
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove Docker deployment files and all references from README:
- Deleted Dockerfile
- Deleted docker-compose.yml (production)
- Deleted docker-compose.dev.yml (development)
- Removed Docker from Tech Stack section
- Removed Docker Deployment section from README
Docker support may be revisited and added back in the future.
For now, focus is on manual deployment as documented in the
Production Setup Guide.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Features:
- Django-based REST API with web interface
- Task management with tags, priorities, and due dates
- Time tracking with start/stop timers
- Subtasks support
- Task filtering (all, today, upcoming, overdue, completed)
- Tag-based organization with color coding
- Sorting by due date and priority
- Auto-assign tags when filtering
- Responsive 3-pane layout (sidebar, task list, detail panel)
- Task sharing between users
- Mobile-responsive design with dark mode support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>