- 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.
321 lines
7.5 KiB
HTML
321 lines
7.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Appointment Confirmed</title>
|
|
<style>
|
|
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
Roboto, sans-serif;
|
|
line-height: 1.6;
|
|
color: #333;
|
|
background-color: #f8fafc;
|
|
}
|
|
|
|
.email-container {
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
background: #ffffff;
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),
|
|
0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
}
|
|
|
|
.email-header {
|
|
background-image: linear-gradient(to right, #e11d48, #db2777, #f97316);
|
|
padding: 40px 30px;
|
|
text-align: center;
|
|
color: white;
|
|
}
|
|
|
|
.email-header h1 {
|
|
font-size: 28px;
|
|
font-weight: 700;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.email-header p {
|
|
font-size: 16px;
|
|
opacity: 0.9;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.header-icon {
|
|
font-size: 48px;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.email-body {
|
|
padding: 40px 30px;
|
|
}
|
|
|
|
.greeting {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: #1f2937;
|
|
margin-bottom: 30px;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
.confirmation-card {
|
|
background: linear-gradient(135deg, #c6f6d5 0%, #9ae6b4 100%);
|
|
border-radius: 16px;
|
|
padding: 30px;
|
|
text-align: center;
|
|
margin: 25px 0;
|
|
border: 2px dashed #38a169;
|
|
}
|
|
|
|
.confirmation-title {
|
|
font-size: 24px;
|
|
color: #22543d;
|
|
margin-bottom: 15px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.appointment-time {
|
|
font-size: 28px;
|
|
color: #22543d;
|
|
font-weight: 700;
|
|
margin: 15px 0;
|
|
}
|
|
|
|
.therapist-info {
|
|
color: #2d3748;
|
|
font-size: 16px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.details-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 20px;
|
|
margin: 30px 0;
|
|
}
|
|
|
|
.detail-card {
|
|
background: #f7fafc;
|
|
border: 1px solid #e2e8f0;
|
|
border-radius: 12px;
|
|
padding: 20px;
|
|
text-align: center;
|
|
}
|
|
|
|
.detail-icon {
|
|
font-size: 24px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.detail-label {
|
|
font-weight: 600;
|
|
color: #4a5568;
|
|
font-size: 14px;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.detail-value {
|
|
color: #2d3748;
|
|
font-size: 16px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.preparation {
|
|
background: #fffaf0;
|
|
border-radius: 12px;
|
|
padding: 25px;
|
|
margin: 25px 0;
|
|
border-left: 4px solid #ed8936;
|
|
}
|
|
|
|
.prep-title {
|
|
font-weight: 600;
|
|
color: #744210;
|
|
margin-bottom: 15px;
|
|
font-size: 18px;
|
|
}
|
|
|
|
.prep-list {
|
|
list-style: none;
|
|
}
|
|
|
|
.prep-list li {
|
|
margin-bottom: 10px;
|
|
padding-left: 25px;
|
|
position: relative;
|
|
color: #475569;
|
|
}
|
|
|
|
.prep-list li:before {
|
|
content: "✓";
|
|
position: absolute;
|
|
left: 0;
|
|
color: #48bb78;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.contact-info {
|
|
background: #edf2f7;
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
margin: 20px 0;
|
|
text-align: center;
|
|
color: #475569;
|
|
}
|
|
|
|
.action-section {
|
|
text-align: center;
|
|
margin: 35px 0;
|
|
}
|
|
|
|
.button {
|
|
display: inline-block;
|
|
background-image: linear-gradient(to right, #e11d48, #db2777, #f97316);
|
|
color: white;
|
|
padding: 16px 32px;
|
|
text-decoration: none;
|
|
border-radius: 8px;
|
|
font-weight: 600;
|
|
font-size: 16px;
|
|
transition: transform 0.2s;
|
|
}
|
|
|
|
.button:hover {
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.email-footer {
|
|
background-image: linear-gradient(to right, #e11d48, #db2777, #f97316);
|
|
padding: 30px;
|
|
text-align: center;
|
|
color: white;
|
|
}
|
|
|
|
.footer-text {
|
|
font-size: 14px;
|
|
margin-bottom: 10px;
|
|
opacity: 0.9;
|
|
}
|
|
|
|
.copyright {
|
|
font-size: 12px;
|
|
margin-top: 15px;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
@media (max-width: 600px) {
|
|
.email-container {
|
|
margin: 10px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.email-header,
|
|
.email-body,
|
|
.email-footer {
|
|
padding: 25px 20px;
|
|
}
|
|
|
|
.details-grid {
|
|
grid-template-columns: 1fr;
|
|
gap: 15px;
|
|
}
|
|
|
|
.confirmation-card {
|
|
padding: 25px 20px;
|
|
}
|
|
|
|
.appointment-time {
|
|
font-size: 24px;
|
|
}
|
|
|
|
.header-icon {
|
|
font-size: 36px;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="email-container">
|
|
<!-- Header -->
|
|
<div class="email-header">
|
|
<h1>Appointment Confirmed!</h1>
|
|
<p>Your therapy session has been scheduled</p>
|
|
</div>
|
|
|
|
<!-- Body -->
|
|
<div class="email-body">
|
|
<div class="greeting">
|
|
Hello <strong>{{ appointment.full_name }}</strong>,<br />
|
|
Great news! Your appointment request has been confirmed. We're looking
|
|
forward to seeing you.
|
|
</div>
|
|
|
|
<!-- Confirmation Card -->
|
|
<div class="confirmation-card">
|
|
<div class="confirmation-title">Your Appointment Details</div>
|
|
<div class="appointment-time">{{ scheduled_datetime }}</div>
|
|
<div class="therapist-info">With: Nathalie (Therapist)</div>
|
|
</div>
|
|
|
|
<div class="">
|
|
<div class="">
|
|
<div class="detail-icon">⏰</div>
|
|
<div class="detail-label">Duration</div>
|
|
<div class="detail-value">
|
|
{{ appointment.meeting_duration_display }}
|
|
</div>
|
|
</div>
|
|
<div class="">
|
|
<div class="detail-label">Session Type</div>
|
|
<div class="detail-value">Virtual Meeting</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Preparation Tips -->
|
|
<div class="">
|
|
<div class="">📋 To Prepare for Your Session</div>
|
|
<ul class="">
|
|
<li>Find a quiet, comfortable space for our session</li>
|
|
<li>Test your internet connection and audio/video</li>
|
|
<li>Have any notes or questions ready</li>
|
|
<li>Join the meeting 5 minutes early to get settled</li>
|
|
<li>Ensure you're in a private, distraction-free environment</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- Action Button -->
|
|
<div class="action-section">
|
|
<a href="{{ user_dashboard_url }}" class="button">
|
|
View in Dashboard
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Footer -->
|
|
<div class="email-footer">
|
|
<div class="company-name">{{ settings.SITE_NAME|default:"Attune Heart Therapy" }}</div>
|
|
<p class="support-info">
|
|
Need help? Contact our support team at
|
|
<a
|
|
href="mailto:{{ support_email }}"
|
|
style="color: #fff; text-decoration: none"
|
|
>hello@attunehearttherapy.com</a
|
|
>
|
|
</p>
|
|
<p class="copyright">
|
|
© {% now "Y" %} {{ settings.SITE_NAME|default:"Attune Heart Therapy" }}. All rights reserved.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|