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 {
-

Welcome to CourseFlow

+
Welcome
+

Welcome to BuidlFlow

+

Your account has been successfully created.

Hello {},

-

Your account has been successfully created!

-

Your Role: {}

-

You can now log in to your account and start using CourseFlow.

+
+
Your Role
+
{}
+
+

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 {
+
Interview Invitation

Congratulations!

-

You've been invited for an interview

+

You've been invited for an interview.

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 {
-

You're on the Waitlist!

+
Application Update
+

You're on the Waitlist

+

Great news — you've passed the interview stage.

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 {
-

Welcome to CourseFlow!

+
Enrollment Confirmed
+

Welcome to BuidlFlow

+

You've been accepted and enrolled.

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 {
-

Application Update

+
Application Update
+

Application Status

+

An update on your application.

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