GoalType module.| Day | Task | Start Date | Completion Date | Reference Material |
|---|---|---|---|---|
| 2 | - Implement com.example.fitme.common.exception.GlobalExceptionHandler (@RestControllerAdvice)+ Handle MethodArgumentNotValidException → field-level validation errors+ Handle EntityNotFoundException, custom business exceptions+ All errors returned in ApiResponse envelope with appropriate HTTP status | 01/20/2026 | 01/20/2026 | |
| 2 | - Configure CorsConfig globally + Allow origins for local dev and production frontend URLs + Allow headers: Authorization, Content-Type+ Allow all HTTP methods | 01/20/2026 | 01/20/2026 | |
| 3 | - Build GoalType module + Entity: name (UNIQUE), description+ Repository, Service, Controller + Endpoints (all public): POST /api/goal-types, GET /api/goal-types, GET /api/goal-types/{id}, GET /api/goal-types/by-name/{name} | 01/21/2026 | 01/21/2026 | |
| 4 | - Build Frontend RootNavigator (within src/navigation/)+ Reads Redux isAuthenticated + hasCompletedOnboarding from authSlice+ Routes to AuthStack (unauthenticated) / OnboardingStack (pending) / MainTabs (ready)- Build AuthStack: WelcomeScreen + LoginScreen- Build MainTabs with CustomTabBar+ 4 bottom tabs: Home, Workout, Diet, Health + Center floating Chat button splitting left/right tabs | 01/22/2026 | 01/22/2026 | https://reactnavigation.org/ |
| 5 | - Build OnboardingStack (5-step wizard) + Step 1: Gender + Date-of-birth (day/month/year sliders) + Height + Weight + Step 2: Activity level + Job type + Step 3: Main fitness goal + Target weight + Target body areas + Step 4: Diet preferences + Food allergies + Meals per day + Water intake + Step 5: Experience level + Workout location + Frequency + Session duration | 01/23/2026 | 01/23/2026 | |
| 6 | - Add CaloriesScreen and TrainingScreen to Onboarding preview + CaloriesScreen: animated calorie management demo UI + TrainingScreen: weekly workout plan by day preview - Wire onboarding completion: dispatch(completeOnboarding()) → sync user profile to backend via POST /user/sync | 01/24/2026 | 01/24/2026 |
GlobalExceptionHandler catches all standard and custom exceptions; returns consistent ApiResponse to clients.localhost:8081 can communicate with the API on localhost:8080.GoalType entity persisted to PostgreSQL; supports types like Weight Loss, Muscle Gain, Maintenance.RootNavigator correctly redirects based on auth + onboarding state — no logic in individual screens.MainTabs renders with CustomTabBar; tab bar splits left (Home, Workout) and right (Diet, Health) around a center Chat button.AuthStack, OnboardingStack, WorkoutStack, DietStack, HealthStack.completeOnboarding() and calls the backend sync endpoint.OPTIONS behavior and how misconfigured headers or methods can silently break authenticated production traffic.In summary, week 3 focused on AWS-relevant API governance and observability foundations rather than infrastructure provisioning alone.
MuscleGroup, Exercise, WorkoutPlan, WorkoutPlanExercise entities with admin CRUD and public read endpoints.SuggestedPlanScreen (3-step plan selection wizard) and PlanExercisePicker.