ChatScreen integrating AWS Bedrock (Claude 3.5 Haiku) with a sliding-window memory, and ProfileScreen with user account management.HomeScreen as the central dashboard, resolve all outstanding bugs, and polish the overall UX across the app.| Day | Task | Start Date | Completion Date | Reference Material |
|---|---|---|---|---|
| 2 | - Backend endpoint refinements + Add @Valid annotations and custom constraint validators to all request DTOs+ Standardize paginated responses: PageResponse<T> with page, size, totalPages, totalElements+ Add GET /api/sessions/user/{userId}?startDate=&endDate= date-range filter for session history | 03/16/2026 | 03/16/2026 | |
| 3 | - Write unit tests (Spring Boot Test + JUnit 5 + Mockito) + UserWorkoutPlanServiceTest: clone method, activate logic, IDOR prevention+ HealthCalculationServiceTest: BMI/BMR/TDEE formulas for various inputs+ UserWorkoutSessionServiceTest: active session query, deactivate behavior | 03/17/2026 | 03/17/2026 | |
| 4 | - Build chatService (Frontend) + Direct AWS Bedrock Runtime API call (no Lambda proxy) + Model: anthropic.claude-3-5-haiku-20241022-v1:0+ Vietnamese system prompt: fitness coach persona + Send last 12 conversation turns as context (sliding window memory) | 03/18/2026 | 03/18/2026 | https://docs.aws.amazon.com/bedrock/ |
| 5 | - Build ChatScreen (Frontend) + Full-screen chat UI with message bubble list (user / bot) + Animated “typing” indicator (3 bouncing dots) while waiting for response + 4 quick-option chips: “Suggest exercises”, “Today’s menu”, “Calorie goal”, “Weight loss advice” + Vietnamese initial greeting from the fitness bot + Animated keyboard avoidance + notifyAlert error handling via global alert proxy | 03/19/2026 | 03/19/2026 | |
| 6 | - Build ProfileScreen (Frontend) + Display avatar (initial-letter fallback), name, email, username, birthdate, gender + Edit modal: update birthdate (YYYY-MM-DD) and gender via updateUserProfile API + dispatch(updateUserProfile)+ Logout: signOut (Cognito revoke) + dispatch(logout) + clear secure storage+ Delete account: deleteUserProfile + signOut — both gated by ConfirmModal | 03/20/2026 | 03/20/2026 | |
| 7 | - Build HomeScreen (Frontend) — 5 parallel data fetches on mount + Today’s meals: sum MealFood calories → daily calorie progress bar vs. 2500 kcal target + Latest HealthCalculation → show BMI+ Latest BodyMetric → show current height/weight+ Active workout plan name → quick link to PlanDetail + This-week session count → weekly progress vs. 4 sessions target | 03/21/2026 | 03/21/2026 | |
| 7 | - Backend deployment preparation + Refine Docker Compose with postgres health checks and Spring Actuator liveness/readiness probes+ CI/CD: Push immutable backend image to Amazon ECR + Define ECS Fargate task definition mapped to ALB for serverless runtime + Protect public endpoints with AWS WAF | 03/21/2026 | 03/21/2026 | |
| 8 | - Comprehensive bug fix session across key Frontend screens + Fix WorkoutSessionScreen: edge case when all exercises completed before timer finishes+ Fix DietScreen: ensure ensureDailyMeals not called on every render — move to useEffect with empty deps+ Fix HealthDashboardScreen: loading state shown during calculateMetrics call | 03/22/2026 | 03/22/2026 |
@Valid constraints and validation was completed in Week 9.PageResponse<T> standardizes all paginated endpoints, date-range filtering works, unit tests all pass..env.example fully documents all 10+ required environment variables with descriptions.chatService.sendChatToBedrock calls AWS Bedrock Runtime directly using credentials from .env.authSlice — no extra API call needed on screen mount.Promise.all API calls complete in under 1.5s on localhost.ensureDailyMeals called only once on first mount — eliminated 4 redundant API calls per render.NotificationBox replaces native alerts — consistent in-app notification style.