diff --git a/BACKEND_PLAN.md b/BACKEND_PLAN.md
index c859953..68c8a4f 100644
--- a/BACKEND_PLAN.md
+++ b/BACKEND_PLAN.md
@@ -11,7 +11,7 @@
| **ORM / Queries** | SQLx |
| **Auth** | JWT (jsonwebtoken crate) |
| **Password Hashing** | argon2 |
-| **Email** | Lettre |
+| **Email** | mailtrap |
| **Serialization** | Serde |
| **Validation** | validator crate |
| **File Uploads** | axum-multipart |
diff --git a/Dockerfile b/Dockerfile
index f2c4fcd..e1c400f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# ── Stage 1: Build ──
-FROM rust:1.77-slim AS builder
+FROM rust:latest AS builder
RUN apt-get update && apt-get install -y pkg-config libssl-dev && rm -rf /var/lib/apt/lists/*
diff --git a/src/services/email_service.rs b/src/services/email_service.rs
index 9df1d28..6a3b28d 100644
--- a/src/services/email_service.rs
+++ b/src/services/email_service.rs
@@ -113,10 +113,10 @@ impl EmailService {
user_name: &str,
role: &str,
) -> Result<(), AuthError> {
- let subject = "Welcome to CourseFlow!";
+ let subject = "Welcome to BuidlFlow!";
let html_body = EmailTemplate::welcome_email(user_name, role);
let text_body = format!(
- "Hello {},\n\nWelcome to CourseFlow! Your account has been created with role: {}.\n\nBest regards,\nCourseFlow Team",
+ "Hello {},\n\nWelcome to BuidlFlow! Your account has been created with role: {}.\n\nBest regards,\nCourseFlow Team",
user_name, role
);
@@ -134,7 +134,7 @@ impl EmailService {
course_name: &str,
interview_venue: &str,
) -> Result<(), AuthError> {
- let subject = format!("CourseFlow: Interview Invitation for {}", course_name);
+ let subject = format!("BuidlFlow: Interview Invitation for {}", course_name);
let html_body = EmailTemplate::interview_invitation(applicant_name, course_name, interview_venue);
let text_body = format!(
"Hello {},\n\nCongratulations! Your application for {} has been reviewed and we would like to invite you for an interview.\n\nInterview Venue: {}\n\nPlease check your email for further scheduling details.\n\nBest regards,\nCourseFlow Admissions Team",
@@ -151,7 +151,7 @@ impl EmailService {
applicant_name: &str,
course_name: &str,
) -> Result<(), AuthError> {
- let subject = format!("CourseFlow: You're on the Waitlist for {}", course_name);
+ let subject = format!("BuidlFlow: You're on the Waitlist for {}", course_name);
let html_body = EmailTemplate::waitlist_notification(applicant_name, course_name);
let text_body = format!(
"Hello {},\n\nGreat news! After your interview, you have been added to the waitlist for {}.\n\nWe will notify you as soon as a spot becomes available.\n\nBest regards,\nCourseFlow Team",
@@ -169,7 +169,7 @@ impl EmailService {
course_name: &str,
temp_password: &str,
) -> Result<(), AuthError> {
- let subject = format!("CourseFlow: Welcome to {}!", course_name);
+ let subject = format!("BuidlFlow: Welcome to {}!", course_name);
let login_url = env::var("LOGIN_URL")
.unwrap_or_else(|_| "https://courseflow.com/login".to_string());
let html_body = EmailTemplate::enrollment_acceptance(applicant_name, course_name, temp_password, &login_url);
@@ -188,7 +188,7 @@ impl EmailService {
applicant_name: &str,
course_name: &str,
) -> Result<(), AuthError> {
- let subject = format!("CourseFlow: Update on Your {} Application", course_name);
+ let subject = format!("BuidlFlow: Update on Your {} Application", course_name);
let html_body = EmailTemplate::rejection_email(applicant_name, course_name);
let text_body = format!(
"Hello {},\n\nThank you for your interest in {}. After careful consideration, we regret to inform you that we are unable to offer you a place in this cohort.\n\nWe encourage you to apply again in the future.\n\nBest regards,\nCourseFlow Team",
@@ -202,6 +202,7 @@ impl EmailService {
/// Email template generator
pub struct EmailTemplate;
+
impl EmailTemplate {
pub fn welcome_email(user_name: &str, role: &str) -> String {
format!(
@@ -211,29 +212,38 @@ impl EmailTemplate {
Hello {},
-
Your account has been successfully created!
-
Your Role: {}
-
You can now log in to your account and start using CourseFlow.
+
+
You can now log in to your account and start using BuidlFlow.
If you have any questions, please contact our support team.
+
Best regards,
BuidlFlow Team
@@ -253,41 +263,41 @@ impl EmailTemplate {
Hello {},
-
We are thrilled to inform you that your application for {} has been reviewed and accepted! We would love to invite you for an interview.
-
+
We are pleased to inform you that your application for {} has been reviewed and accepted. We would like to invite you for an interview.
+
Interview Venue
-
{}
+
{}
-
- What to expect:
- Our admissions team will reach out to you with the exact date and time. Please keep an eye on your inbox for scheduling details.
-
-
We look forward to meeting you!
-
Best regards,
CourseFlow Admissions Team
+
+
We look forward to meeting you.
+
Best regards,
BuidlFlow Admissions Team
@@ -305,33 +315,37 @@ impl EmailTemplate {
Hello {},
-
Great news! After your interview, you have been added to the waitlist for {}.
-
-
What does this mean?
- You've passed the interview stage! We will notify you as soon as a spot becomes available in the course.
+
After your interview, you have been added to the waitlist for {}.
+
+
What does this mean?
+
You've passed the interview stage. We will notify you as soon as a spot becomes available in the course.
-
Thank you for your patience. We appreciate your interest in CourseFlow!
-
Best regards,
CourseFlow Admissions Team
+
Thank you for your patience. We appreciate your interest in BuidlFlow.
+
Best regards,
BuidlFlow Admissions Team
@@ -349,38 +363,42 @@ impl EmailTemplate {
Hello {},
-
Congratulations! You have been accepted and enrolled in {}.
-
-
Your Account Credentials:
-
Temporary Password: {}
+
Congratulations! You have been accepted and enrolled in {}.
+
+
Your Temporary Password
+
{}
Please change your password immediately after your first login.
Log In Now
-
We're excited to have you on board!
-
Best regards,
CourseFlow Team
+
We're excited to have you on board.
+
Best regards,
BuidlFlow Team
@@ -398,34 +416,38 @@ impl EmailTemplate {
Hello {},
-
Thank you for your interest in {} and for taking the time to apply.
+
Thank you for your interest in {} and for taking the time to apply.
After careful review, we regret to inform you that we are unable to offer you a place in this cohort.
-
-
Don't give up!
- We encourage you to continue developing your skills and to apply again for future cohorts. Many successful students applied multiple times before being accepted.
+
+
Don't give up
+
We encourage you to continue developing your skills and to apply again for future cohorts. Many successful students applied multiple times before being accepted.
-
We wish you the best in your learning journey!
-
Best regards,
CourseFlow Admissions Team
+
We wish you the best in your learning journey.
+
Best regards,
BuidlFlow Admissions Team