Files
aperonight/docker-compose.yml
kbe 7f36abbcec feat: Implement comprehensive email notifications system
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>
2025-09-06 13:25:02 +02:00

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