Add a complete contact form system with the following changes:
- Create ContactMessage model to store form submissions with tracking fields (is_read, is_responded)
- Implement ContactMessage admin interface with custom actions, filters, and bulk operations
- Add contact endpoint documentation to API root view
- Update email configuration to use admin@attunehearttherapy.com as sender address
This enables users to submit contact inquiries and allows administrators to track and manage these messages efficiently through the Django admin panel.
- Set explicit default=None for jitsi_room_id field to ensure consistent null handling
- Update rejection logic to use None instead of empty strings for Jitsi fields, maintaining database consistency with nullable field definitions
- Add login instructions to appointment confirmation email directing users to join 15 minutes early
- Remove outdated "self-guided resources" option from rejection email
- Add styling for new login-info section in scheduled appointment template
This ensures proper null value handling in the database and improves user communication for appointment workflows.
- Replace dynamic admin_dashboard_url construction with hardcoded production URL (https://attunehearttherapy.com/admin/dashboard)
- Add target="_blank" to admin notification email button to open dashboard in new tab
- Improves user experience by preventing email client navigation disruption
- Change support email from hello@attunehearttherapy.com to admin@attunehearttherapy.com across all email templates
- Remove support contact section from admin notification template
- Standardize email addresses by hardcoding admin email in templates
- Remove unused CSS comment from base email template
This ensures consistent support contact information across the application and directs user inquiries to the appropriate admin channel.
- Remove strip_tags usage and use explicit fallback text for HTML emails
- Use named parameters in EmailMultiAlternatives for better clarity
- Add fail_silently=False to email.send() for explicit error handling
- Rename variables (html_content -> html_message, email_msg -> email)
- Remove action buttons from appointment email templates
These changes improve code readability and provide a clearer fallback
message for non-HTML email clients instead of relying on stripped HTML.
- Enable meetings app in INSTALLED_APPS and add URL routing
- Switch from PostgreSQL to SQLite for default database configuration
- Remove meetings directory from .gitignore
- Move API root endpoint from users app to main URL configuration
- Remove HIPAA-specific email and compliance settings (EMAIL_ENCRYPTION_KEY, HIPAA_EMAIL_CONFIG, BAA_VERIFICATION)
- Add SITE_NAME and ENCRYPTION_KEY environment variables
- Regenerate initial user migrations
These changes simplify the development setup by using SQLite as the default database and removing complex compliance configurations while enabling the core meetings functionality.
Add comprehensive HIPAA compliance features and OTP-based authentication:
- Configure HIPAA email settings with AES-256 encryption standard
- Add secure portal URL and BAA verification configuration
- Implement OTP verification for user registration and password reset
- Add user model fields for email verification and password reset OTPs
- Configure templates directory in Django settings
- Add authentication flow endpoints with detailed documentation
- Update dependencies to support new security features
- Reorganize .gitignore for better structure
These changes ensure HIPAA compliance for healthcare data handling
with 6-year audit retention, secure email communications, and
multi-factor authentication capabilities.