Skip to content

feat: refactor architecture and build course application pipeline wit… - #8

Merged
Christopherdominic merged 1 commit into
Christopherdominic:mainfrom
Emmyt24:pr-upstream
Mar 11, 2026
Merged

Christopherdominic merged 1 commit into
Christopherdominic:mainfrom
Emmyt24:pr-upstream

Conversation

@Emmyt24

@Emmyt24 Emmyt24 commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

…h email integration

Architecture:

  • Separate controllers (pure business logic) from routes (HTTP handlers)
  • Slim main.rs to server startup only; extract app builder to app.rs
  • Introduce AppState with shared PgPool and EmailService

Application Pipeline:

  • Add course application submission (public endpoint)
  • Implement admin dashboard with application management
  • Support pipeline: pending → interview_invited → waitlisted → accepted/rejected
  • Add admin endpoints: accept, reject, enroll, waitlist applications

Email Service:

  • Integrate Mailtrap SMTP (transactional stream) via Lettre
  • Send interview invitation emails with venue details
  • Send enrollment acceptance emails with login credentials
  • Send rejection notification emails
  • Graceful fallback when email service is unavailable

API & Documentation:

  • Add Swagger/OpenAPI docs for all endpoints via utoipa
  • Add health check endpoint
  • Configure CORS for frontend integration
  • Add JWT bearer auth with role-based access (admin, student, mentor)

Infrastructure:

  • Add multi-stage Dockerfile for production deployment
  • Add .dockerignore
  • Configure server to bind 0.0.0.0 with HOST/PORT env vars
  • Remove OTP service (replaced by direct auth flow)
  • Remove deprecated school/protected route files

…h email integration

Architecture:
- Separate controllers (pure business logic) from routes (HTTP handlers)
- Slim main.rs to server startup only; extract app builder to app.rs
- Introduce AppState with shared PgPool and EmailService

Application Pipeline:
- Add course application submission (public endpoint)
- Implement admin dashboard with application management
- Support pipeline: pending → interview_invited → waitlisted → accepted/rejected
- Add admin endpoints: accept, reject, enroll, waitlist applications

Email Service:
- Integrate Mailtrap SMTP (transactional stream) via Lettre
- Send interview invitation emails with venue details
- Send enrollment acceptance emails with login credentials
- Send rejection notification emails
- Graceful fallback when email service is unavailable

API & Documentation:
- Add Swagger/OpenAPI docs for all endpoints via utoipa
- Add health check endpoint
- Configure CORS for frontend integration
- Add JWT bearer auth with role-based access (admin, student, mentor)

Infrastructure:
- Add multi-stage Dockerfile for production deployment
- Add .dockerignore
- Configure server to bind 0.0.0.0 with HOST/PORT env vars
- Remove OTP service (replaced by direct auth flow)
- Remove deprecated school/protected route files
@Christopherdominic
Christopherdominic merged commit f0fc88b into Christopherdominic:main Mar 11, 2026
Manuel1234477 pushed a commit to Manuel1234477/School_API that referenced this pull request Apr 20, 2026
feat: refactor architecture and build course application pipeline wit…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants