This commit implements a complete email notifications system for purchase confirmations and event reminders as requested in the medium priority backlog tasks. ## Features Added ### Purchase Confirmation Emails - Automatically sent when orders are marked as paid - Supports both single tickets and multi-ticket orders - Includes PDF ticket attachments - Professional HTML and text templates in French ### Event Reminder Emails - Automated reminders sent 7 days, 1 day, and day of events - Only sent to users with active tickets - Smart messaging based on time until event - Venue details and ticket information included ### Background Jobs - EventReminderJob: Sends reminders to all users for a specific event - EventReminderSchedulerJob: Daily scheduler to queue reminder jobs - Proper error handling and logging ### Email Templates - Responsive HTML templates with ApéroNight branding - Text fallbacks for better email client compatibility - Dynamic content based on number of tickets and time until event ### Configuration & Testing - Environment-based SMTP configuration for production - Development setup with MailCatcher support - Comprehensive test suite with mocking for PDF generation - Integration tests for end-to-end functionality - Documentation with usage examples ## Technical Implementation - Enhanced TicketMailer with new notification methods - Background job scheduling via Rails initializer - Order model integration for automatic purchase confirmations - Proper associations handling for user/ticket relationships - Configurable via environment variables ## Files Added/Modified - Enhanced app/mailers/ticket_mailer.rb with order support - Added app/jobs/event_reminder_*.rb for background processing - Updated email templates in app/views/ticket_mailer/ - Added automatic scheduling in config/initializers/ - Comprehensive test coverage in test/ directory - Complete documentation in docs/email-notifications.md 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
66 lines
1.5 KiB
YAML
Executable File
66 lines
1.5 KiB
YAML
Executable File
volumes:
|
|
mariadb_data:
|
|
gem_home:
|
|
node_modules_home:
|
|
|
|
networks:
|
|
default:
|
|
|
|
services:
|
|
mariadb:
|
|
image: mariadb:11.7.2-noble
|
|
env_file: .env
|
|
restart: unless-stopped
|
|
volumes:
|
|
- mariadb_data:/var/lib/mysql
|
|
#- ./mysql:/var/lib/mysql"
|
|
ports:
|
|
- "${FORWARD_DB_PORT:-3306}:3306"
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD:-root}"
|
|
# MYSQL_ROOT_HOST: "%"
|
|
MYSQL_PORT: "${DB_PORT:-3306}"
|
|
MYSQL_DATABASE: "${DB_DATABASE:-aperonight}"
|
|
MYSQL_USER: "${DB_USERNAME:-aperonight}"
|
|
MYSQL_PASSWORD: "${DB_PASSWORD:-aperonight}"
|
|
#MYSQL_ALLOW_EMPTY_PASSWORD: 1
|
|
networks:
|
|
- default
|
|
#command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
|
|
|
|
rails:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
env_file: .env
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./:/rails
|
|
- gem_home:/usr/local/bundle
|
|
- node_modules_home:/rails/node_modules
|
|
#- ./log:/var/log
|
|
#- ./log/supervisor:/var/log/supervisor
|
|
ports:
|
|
#- 80:80
|
|
- 3000:3000
|
|
#- 5000:5000
|
|
depends_on:
|
|
- mariadb
|
|
networks:
|
|
- default
|
|
#tty: true
|
|
#command: /opt/src/bin/dev
|
|
|
|
mailhog:
|
|
image: corpusops/mailhog:v1.0.1
|
|
restart: unless-stopped
|
|
# environment:
|
|
# - "mh_auth_file=/opt/mailhog/passwd.conf"
|
|
volumes:
|
|
- ./data/mailhog:/opt/mailhog
|
|
ports:
|
|
- 1025:1025 # smtp port 25
|
|
- 8025:8025 # web mail access
|
|
networks:
|
|
- default
|