Skip to content

Feature/backend - Aaron Fraze - #177

Open
fraze-dev wants to merge 9 commits into
becloudready:masterfrom
futurecoder123456:feature/backend
Open

Feature/backend - Aaron Fraze#177
fraze-dev wants to merge 9 commits into
becloudready:masterfrom
futurecoder123456:feature/backend

Conversation

@fraze-dev

@fraze-dev fraze-dev commented Aug 28, 2026

Copy link
Copy Markdown

Summary

This PR adds the backend submission for Group1_MAAD_Mark_Alena_Aaron_Danielle's NoticeBoardTracker project (an EdTech trainee-onboarding/progress tracker), under workshops/fullstack-aws/projects/submission/Group1_MAAD_Mark_Alena_Aaron_Danielle/.

Team: Aaron (fraze-dev) — Backend + MongoDB CRUD; Alena (futurecoder123456) — React frontend; Danielle (danielle-jack) — USP + UX; Mark (MarkPaulRosenthal) — Deployment + CI/CD.

This PR specifically covers the backend work:

  • Spring Boot 3.3.4 / Java 17 / Maven backend (com.edtech.noticeboard) with a multi-resource domain model (User/Cohort/TrainingPlan/ProgressLog)
  • Full CRUD for the Curriculum API (TrainingPlan), verified end-to-end against a live MongoDB Atlas cluster
  • Consistent {"message": "..."} error responses via a global exception handler
  • Scheduled NotificationService emailing a digest of blocked trainees daily
  • API_CONTRACT.md documenting the implemented backend for the rest of the team to build against
  • 5 JUnit/Mockito unit tests, plus a runnable Postman collection for manual/regression testing

Test plan

  • mvn test passes (context loads + 5 CurriculumService unit tests)
  • Full CRUD verified manually against live Atlas (create/list/get/update/delete)
  • Reviewed and merged internally via PR #1

futurecoder123456 and others added 9 commits August 28, 2026 11:38
adding task assignments
format readme
Sets up Maven project (Spring Boot 3.3.4, Java 17) with the
com.edtech.noticeboard package layout from the README plan: config,
controller, model, repository, and service packages with skeleton
classes for each team member's owned area, plus MongoDB/mail wiring
via application.properties env vars.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Wires CurriculumController/CurriculumService to TrainingPlanRepository
with full create/read/update/delete, 404 handling for missing ids, and
basic validation on title. Opens SecurityConfig to permitAll() so this
is testable ahead of Mark's real auth. Verified end-to-end against the
live Atlas cluster (create/list/get/update/delete all round-tripped).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ackend

GlobalExceptionHandler normalizes 400/404 responses to {"message": "..."}
across all controllers, replacing Spring's default noisy error body.

API_CONTRACT.md replaces an earlier single-Notice draft that didn't match
what's implemented. It now documents the real multi-resource backend
(User/Cohort/TrainingPlan/ProgressLog), the working Curriculum API,
implementation status per resource, env vars, CORS, auth status, and
open items — so Alena/Danielle/Mark can build against what's actually
there instead of a stale draft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds a daily @scheduled job (8am) that emails a digest of any
ProgressLog entries with status=BLOCKED, using JavaMailSender
(already configured via spring-boot-starter-mail). Only depends on
ProgressLog.status, which should survive whatever field shape Aaron
and Danielle land on, so this doesn't need to wait on that sync.
Recipient address is configurable via NOTIFICATION_RECIPIENT_EMAIL.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Five Mockito-based tests covering: listing, 404 on read-by-id, id
stripping on create, field updates on PUT, and 404 on delete. No
real MongoDB dependency, runs fast via mvn test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Postman collection covers the Curriculum API happy path (create -> list
-> get -> update -> delete, chained via a captured id, self-cleaning)
plus error cases (400 on blank title, 404 on missing id) with pm.test()
assertions on each request. API_CONTRACT.md section 10 documents both
this and the existing JUnit tests as the two testing layers.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.

3 participants