# fitcubes/backend architecture

> Architecture diagram of the GitHub repository fitcubes/backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fitcubes/backend
- Repository: https://github.com/fitcubes/backend

## Overview

FitCubes is a Spring Boot fitness and nutrition backend. Users authenticate, manage food and exercise records, and access diary, dashboard, and weight-progress features; they can also browse products, recipes, and exercises. Admins have product and recipe management endpoints. The graph preserves these domain areas, but only the recipe controller and authentication-related calls are directly shown in sampled source; other service links are therefore left unwired. PostgreSQL and Redis are documented dependencies.

Main entry points: [`src/main/java/fitcubes/security/AuthenticationService.java`](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/AuthenticationService.java) (Authentication service), [`src/main/java/fitcubes/controller/RecipeController.java`](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/RecipeController.java) (Recipe API), [`src/main/java/fitcubes/security/TokenBlacklistService.java`](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/TokenBlacklistService.java) (Token blacklist), [`src/main/java/fitcubes/repository/UserRepository.java`](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/repository/UserRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API endpoints"]
  node_recipe_api["Recipe API"]
  node_auth_api["Authentication API"]
  node_diary_api["Diary API"]
  node_dashboard_api["Dashboard API"]
  node_food_api["Food entry API"]
  node_exercise_entry_api["Exercise entry API"]
  node_weight_api["Weight log API"]
  node_product_api["Product API"]
  node_admin_api["Admin APIs"]
end

subgraph group_identity["Identity and security"]
  node_auth_service["Authentication service"]
  node_user_details["User details lookup"]
  node_jwt["JWT utilities<br/>[JwtUtil.java]"]
  node_blacklist["Token blacklist"]
  node_auth_manager["Authentication manager"]
  node_users_repo["User repository"]
  node_roles_repo["Role repository"]
  node_user_mapper["User mapper<br/>[UserMapper.java]"]
end

subgraph group_nutrition["Nutrition and diary"]
  node_diary_service["Diary assembly"]
  node_food_service["Food entry service"]
  node_food_calc["Food calculations"]
  node_dashboard_service["Daily summary"]
end

subgraph group_fitness["Activity and progress"]
  node_exercise_service["Exercise entries"]
  node_exercise_calc["Exercise calculations"]
  node_weight_service["Weight logging"]
  node_weight_progress["Weight progress"]
  node_prediction["Weight prediction"]
end

subgraph group_catalog["Food and recipe catalog"]
  node_recipe_service["Recipe service"]
  node_product_service["Product service"]
  node_exercise_catalog["Exercise catalog"]
end

node_user(("User"))
node_redis[("Redis")]

node_user -->|"requests recipes"| node_recipe_api
node_recipe_api -->|"delegates"| node_recipe_service
node_auth_service -->|"authenticates"| node_auth_manager
node_auth_service -->|"reads and saves"| node_users_repo
node_auth_service -->|"looks up role"| node_roles_repo
node_auth_service -->|"maps registration"| node_user_mapper
node_auth_service -->|"issues token"| node_jwt
node_auth_service -->|"blacklists token"| node_blacklist
node_user_details -->|"loads user"| node_users_repo
node_blacklist -.->|"stores blacklist"| node_redis

click node_recipe_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/RecipeController.java"
click node_auth_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/AuthenticationController.java"
click node_diary_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/DiaryController.java"
click node_dashboard_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/DashboardController.java"
click node_food_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/FoodEntryController.java"
click node_exercise_entry_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/ExerciseEntryController.java"
click node_weight_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/WeightLogController.java"
click node_product_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/ProductController.java"
click node_admin_api "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/AdminProductController.java"
click node_auth_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/AuthenticationService.java"
click node_user_details "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/CustomUserDetailsService.java"
click node_jwt "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/JwtUtil.java"
click node_blacklist "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/TokenBlacklistService.java"
click node_users_repo "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/repository/UserRepository.java"
click node_roles_repo "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/repository/RoleRepository.java"
click node_user_mapper "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/mapper/UserMapper.java"
click node_diary_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/diary/DiaryServiceImpl.java"
click node_food_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/foodentry/impl/FoodEntryServiceImpl.java"
click node_food_calc "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/foodentry/impl/FoodCalculationServiceImpl.java"
click node_dashboard_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/dashboard/impl/DailySummaryServiceImpl.java"
click node_exercise_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exerciseentry/impl/ExerciseEntryServiceImpl.java"
click node_exercise_calc "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exerciseentry/impl/ExerciseCalculationServiceImpl.java"
click node_weight_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightLogServiceImpl.java"
click node_weight_progress "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightProgressServiceImpl.java"
click node_prediction "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightPredictionServiceImpl.java"
click node_recipe_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/recipe/impl/RecipeServiceImpl.java"
click node_product_service "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/product/impl/ProductServiceImpl.java"
click node_exercise_catalog "https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exercise/ExerciseServiceImpl.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_recipe_api,node_auth_api,node_diary_api,node_dashboard_api,node_food_api,node_exercise_entry_api,node_weight_api,node_product_api,node_admin_api,node_user toneBlue
class node_auth_service,node_user_details,node_jwt,node_blacklist,node_auth_manager,node_users_repo,node_roles_repo,node_user_mapper,node_redis toneAmber
class node_diary_service,node_food_service,node_food_calc,node_dashboard_service toneMint
class node_exercise_service,node_exercise_calc,node_weight_service,node_weight_progress,node_prediction toneRose
class node_recipe_service,node_product_service,node_exercise_catalog toneIndigo
```

## Components

### API endpoints

- [Recipe API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/RecipeController.java): `src/main/java/fitcubes/controller/RecipeController.java`
- [Authentication API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/AuthenticationController.java): `src/main/java/fitcubes/controller/AuthenticationController.java`
- [Diary API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/DiaryController.java): `src/main/java/fitcubes/controller/DiaryController.java`
- [Dashboard API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/DashboardController.java): `src/main/java/fitcubes/controller/DashboardController.java`
- [Food entry API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/FoodEntryController.java): `src/main/java/fitcubes/controller/FoodEntryController.java`
- [Exercise entry API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/ExerciseEntryController.java): `src/main/java/fitcubes/controller/ExerciseEntryController.java`
- [Weight log API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/WeightLogController.java): `src/main/java/fitcubes/controller/WeightLogController.java`
- [Product API](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/ProductController.java): `src/main/java/fitcubes/controller/ProductController.java`
- [Admin APIs](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/controller/AdminProductController.java): `src/main/java/fitcubes/controller/AdminProductController.java`

### Identity and security

- [Authentication service](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/AuthenticationService.java): `src/main/java/fitcubes/security/AuthenticationService.java`
- [User details lookup](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/CustomUserDetailsService.java): `src/main/java/fitcubes/security/CustomUserDetailsService.java`
- [JWT utilities](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/JwtUtil.java): `src/main/java/fitcubes/security/JwtUtil.java`
- [Token blacklist](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/security/TokenBlacklistService.java): `src/main/java/fitcubes/security/TokenBlacklistService.java`
- **Authentication manager**
- [User repository](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/repository/UserRepository.java): `src/main/java/fitcubes/repository/UserRepository.java`
- [Role repository](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/repository/RoleRepository.java): `src/main/java/fitcubes/repository/RoleRepository.java`
- [User mapper](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/mapper/UserMapper.java): `src/main/java/fitcubes/mapper/UserMapper.java`

### Nutrition and diary

- [Diary assembly](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/diary/DiaryServiceImpl.java): `src/main/java/fitcubes/service/diary/DiaryServiceImpl.java`
- [Food entry service](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/foodentry/impl/FoodEntryServiceImpl.java): `src/main/java/fitcubes/service/foodentry/impl/FoodEntryServiceImpl.java`
- [Food calculations](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/foodentry/impl/FoodCalculationServiceImpl.java): `src/main/java/fitcubes/service/foodentry/impl/FoodCalculationServiceImpl.java`
- [Daily summary](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/dashboard/impl/DailySummaryServiceImpl.java): `src/main/java/fitcubes/service/dashboard/impl/DailySummaryServiceImpl.java`

### Activity and progress

- [Exercise entries](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exerciseentry/impl/ExerciseEntryServiceImpl.java): `src/main/java/fitcubes/service/exerciseentry/impl/ExerciseEntryServiceImpl.java`
- [Exercise calculations](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exerciseentry/impl/ExerciseCalculationServiceImpl.java): `src/main/java/fitcubes/service/exerciseentry/impl/ExerciseCalculationServiceImpl.java`
- [Weight logging](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightLogServiceImpl.java): `src/main/java/fitcubes/service/weight/impl/WeightLogServiceImpl.java`
- [Weight progress](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightProgressServiceImpl.java): `src/main/java/fitcubes/service/weight/impl/WeightProgressServiceImpl.java`
- [Weight prediction](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/weight/impl/WeightPredictionServiceImpl.java): `src/main/java/fitcubes/service/weight/impl/WeightPredictionServiceImpl.java`

### Food and recipe catalog

- [Recipe service](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/recipe/impl/RecipeServiceImpl.java): `src/main/java/fitcubes/service/recipe/impl/RecipeServiceImpl.java`
- [Product service](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/product/impl/ProductServiceImpl.java): `src/main/java/fitcubes/service/product/impl/ProductServiceImpl.java`
- [Exercise catalog](https://github.com/fitcubes/backend/blob/main/src/main/java/fitcubes/service/exercise/ExerciseServiceImpl.java): `src/main/java/fitcubes/service/exercise/ExerciseServiceImpl.java`

### Other components

- **User**
- **Redis**

## Connections

- User → Recipe API: requests recipes
- Recipe API → Recipe service: delegates
- Authentication service → Authentication manager: authenticates
- Authentication service → User repository: reads and saves
- Authentication service → Role repository: looks up role
- Authentication service → User mapper: maps registration
- Authentication service → JWT utilities: issues token
- Authentication service → Token blacklist: blacklists token
- User details lookup → User repository: loads user
- Token blacklist → Redis: stores blacklist
