diff --git a/backend/.env.example b/backend/.env.example
new file mode 100644
index 0000000..14fab81
--- /dev/null
+++ b/backend/.env.example
@@ -0,0 +1,38 @@
+# JWT Configuration
+JWT_SECRET=your-super-secret-jwt-key-change-this-in-production-use-long-random-string
+
+# Email Configuration (Gmail SMTP)
+# Follow steps in docs/AUTH_SETUP_GUIDE.md to get App Password
+SMTP_HOST=smtp.gmail.com
+SMTP_PORT=587
+SMTP_USER=prompttechbz@gmail.com
+SMTP_PASSWORD=your-16-char-app-password-here
+FROM_EMAIL=prompttechbz@gmail.com
+
+# Frontend URL
+FRONTEND_URL=http://localhost:5300
+
+# Google OAuth
+# Get from: https://console.cloud.google.com/
+GOOGLE_CLIENT_ID=your-google-client-id.apps.googleusercontent.com
+GOOGLE_CLIENT_SECRET=GOCSPX-your-google-client-secret
+GOOGLE_REDIRECT_URI=http://localhost:8181/api/auth/google/callback
+
+# Facebook OAuth
+# Get from: https://developers.facebook.com/
+FACEBOOK_APP_ID=your-facebook-app-id
+FACEBOOK_APP_SECRET=your-facebook-app-secret
+FACEBOOK_REDIRECT_URI=http://localhost:8181/api/auth/facebook/callback
+
+# Yahoo OAuth
+# Get from: https://developer.yahoo.com/
+YAHOO_CLIENT_ID=your-yahoo-client-id
+YAHOO_CLIENT_SECRET=your-yahoo-client-secret
+YAHOO_REDIRECT_URI=http://localhost:8181/api/auth/yahoo/callback
+
+# Admin Configuration
+ADMIN_EMAIL=prompttechbz@gmail.com
+ADMIN_PHONE=+5016261234
+
+# Database (if needed)
+DATABASE_URL=postgresql://user:password@localhost:5432/dbname
diff --git a/backend/email_service.py b/backend/email_service.py
new file mode 100644
index 0000000..a60c45b
--- /dev/null
+++ b/backend/email_service.py
@@ -0,0 +1,227 @@
+"""
+Email Service for PromptTech Solutions
+Handles email verification, notifications, and password resets
+"""
+import smtplib
+import os
+from email.mime.text import MIMEText
+from email.mime.multipart import MIMEMultipart
+from email.mime.image import MIMEImage
+from pathlib import Path
+import logging
+
+logger = logging.getLogger(__name__)
+
+# Email configuration from environment
+SMTP_HOST = os.environ.get('SMTP_HOST', 'smtp.gmail.com')
+SMTP_PORT = int(os.environ.get('SMTP_PORT', 587))
+SMTP_USER = os.environ.get('SMTP_USER', '')
+SMTP_PASSWORD = os.environ.get('SMTP_PASSWORD', '')
+FROM_EMAIL = os.environ.get('FROM_EMAIL', SMTP_USER)
+FRONTEND_URL = os.environ.get('FRONTEND_URL', 'http://localhost:5300')
+
+
+def send_email(to_email: str, subject: str, html_content: str, text_content: str = None):
+ """
+ Send an email using SMTP
+
+ Args:
+ to_email: Recipient email address
+ subject: Email subject
+ html_content: HTML content of the email
+ text_content: Plain text fallback (optional)
+ """
+ if not SMTP_USER or not SMTP_PASSWORD:
+ logger.warning("SMTP credentials not configured. Email not sent.")
+ return False
+
+ try:
+ # Create message
+ message = MIMEMultipart('alternative')
+ message['Subject'] = subject
+ message['From'] = f"PromptTech Solutions <{FROM_EMAIL}>"
+ message['To'] = to_email
+
+ # Add text/plain part (fallback)
+ if text_content:
+ text_part = MIMEText(text_content, 'plain')
+ message.attach(text_part)
+
+ # Add text/html part
+ html_part = MIMEText(html_content, 'html')
+ message.attach(html_part)
+
+ # Send email
+ with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as server:
+ server.starttls()
+ server.login(SMTP_USER, SMTP_PASSWORD)
+ server.send_message(message)
+
+ logger.info(f"Email sent successfully to {to_email}")
+ return True
+
+ except Exception as e:
+ logger.error(f"Failed to send email to {to_email}: {e}")
+ return False
+
+
+def send_verification_email(to_email: str, first_name: str, verification_token: str):
+ """Send email verification link to new user"""
+ verification_link = f"{FRONTEND_URL}/verify-email?token={verification_token}"
+
+ subject = "Verify your PromptTech Solutions account"
+
+ html_content = f"""
+
+
+
+
+
+
+
+
+
Welcome to PromptTech Solutions!
+
+
+
Hi {first_name},
+
Thank you for creating an account with PromptTech Solutions. To complete your registration and verify your email address, please click the button below:
If you didn't create this account, you can safely ignore this email.
+
Best regards, The PromptTech Solutions Team
+
+
+
+
+
+ """
+
+ text_content = f"""
+ Hi {first_name},
+
+ Thank you for creating an account with PromptTech Solutions. To complete your registration and verify your email address, please visit:
+
+ {verification_link}
+
+ This link will expire in 24 hours.
+
+ If you didn't create this account, you can safely ignore this email.
+
+ Best regards,
+ The PromptTech Solutions Team
+ """
+
+ return send_email(to_email, subject, html_content, text_content)
+
+
+def send_welcome_email(to_email: str, first_name: str):
+ """Send welcome email after successful verification"""
+ subject = "Welcome to PromptTech Solutions!"
+
+ html_content = f"""
+
+
+
+
+
+
+
+
+
š Account Verified!
+
+
+
Hi {first_name},
+
Your email has been successfully verified! You now have full access to your PromptTech Solutions account.
+
+ {/* Value Detail Dialog */}
+
{/* Team */}
diff --git a/frontend/src/pages/Contact.js b/frontend/src/pages/Contact.js
index e91970f..c8ef13e 100644
--- a/frontend/src/pages/Contact.js
+++ b/frontend/src/pages/Contact.js
@@ -58,7 +58,7 @@ const Contact = () => {
{
icon: Clock,
title: "Business Hours",
- content: "Mon - Sat: 9AM - 7PM",
+ content: "Mon-Fri: 8AM-5PM | Sat: 9AM-5PM",
},
];
@@ -245,7 +245,7 @@ const Contact = () => {
{[
{
q: "What are your business hours?",
- a: "We are open Monday through Saturday, 9AM to 7PM. We are closed on Sundays.",
+ a: "We are open Monday to Friday, 8AM to 5PM, and Saturday, 9AM to 5PM. We are closed on Sundays.",
},
{
q: "Do you offer warranty on repairs?",
@@ -257,7 +257,7 @@ const Contact = () => {
},
{
q: "Do you offer pickup and delivery?",
- a: "Yes, we offer free pickup and delivery for repairs within a 10-mile radius.",
+ a: "Yes, we do offer pickups within Belmopan and free delivery within Belmopan. Anything outside Belmopan region must be either with a carrier or with BPMS or Interdistrict Belize covered by the customer.",
},
].map((faq, idx) => (