# valen-dasilva/frontend_grupo3_desarrolloapps1 architecture

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

- Interactive diagram: https://gitdiagram.com/valen-dasilva/frontend_grupo3_desarrolloapps1
- Repository: https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1

## Overview

1. **Overall shape**
   - This is an **Expo + React Native + TypeScript** app using **Expo Router** file-based navigation.
   - The repo is split between the router layer in `app/` and the actual feature implementation in `src/`.
   - The app appears to be a **travel itinerary app** with authentication, itinerary discovery, favorites management, preferences, and profile settings.

2. **Navigation and route boundaries**
   - `app/_layout.tsx` and `app/(tabs)/_layout.tsx` define the top-level navigation structure.
   - The `(tabs)` group contains the main authenticated areas: home, explore, favorites, and profile.
   - Nested route groups like `app/(tabs)/(favorite)` and `app/(tabs)/inicioApp`, `explorarApp`, `perfilApp` separate deeper screens from the top-level tab screens.
   - The files in `app/` are mostly thin route entry points that delegate to `src/screens/...`.

3. **Feature areas**
   - **Auth**: `app/login.tsx`, `app/register.tsx`, and `src/screens/auth/*` handle sign-in and registration.
   - **Home**: `src/screens/home/*` contains preferences and recommendations flows.
   - **Explore**: `src/screens/explore/*` covers browsing itineraries and itinerary detail.
   - **Favorites**: `src/screens/favorites/*` handles saved itineraries, editing, and activity modification.
   - **Profile**: `src/screens/profile/*` handles profile viewing, edit profile, and password change.

4. **State and app-wide context**
   - `src/context/AuthContext.tsx` is the core authentication boundary; it likely owns logged-in user state and session transitions.
   - `src/context/ThemeContext.tsx` handles visual theme mode across the app.
   - These contexts feed the screen layer and likely determine whether the user is routed to auth or the tabbed app shell.

5. **Data access and backend integration**
   - `src/services/api.ts` is the base API integration point.
   - Feature services like `authService.ts`, `userService.ts`, `itinerarioService.ts`, and `favoritosService.ts` isolate backend calls by domain.
   - `src/services/storage.ts` and `itineraryStorage.ts` handle persistence, suggesting a local offline or cached layer in addition to remote API access.
   - `src/services/queryClient.ts` indicates use of a client-side query/cache layer, likely to keep server state consistent across screens.

6. **Domain-specific data flow**
   - The app centers around **itineraries** and **favorites**.
   - Explore screens fetch itinerary data, show details, and allow favoriting.
   - Favorites screens read saved itineraries, drill into itinerary info, and support editing itinerary activities.
   - Home preferences likely influence recommendation output, creating a flow from user inputs to itinerary suggestions.

7. **Hooks as feature orchestration**
   - `useFavoritos.ts`, `useFavoriteToggle.ts`, and `useItinerarioDetalle.ts` encapsulate reusable feature logic and data loading.
   - These hooks sit between UI and services, so screens remain relatively thin and declarative.
   - This makes the architecture more “screen + hook + service” than “screen talks directly to API”.

8. **Component organization**
   - `src/components/common/` contains shared UI primitives used across the app: headers, buttons, badges, alerts, bottom navigation, offline indicator, and reusable card patterns.
   - Feature folders under `src/components/Explorar`, `Preferencias`, `Recomendaciones`, and `favorites` hold screen-specific presentation components.
   - This separation suggests a clean boundary between **shared design system pieces** and **workflow-specific components**.

9. **Favorites editing workflow**
   - The favorites area has the richest internal structure, with dedicated components for itinerary cards, edit modals, editable activity cards, and activity creation.
   - The edit flow is split across `ItineraryEditScreen`, `EditActivityScreen`, and components under `src/components/favorites/itinerary_edit`.
   - This implies a multi-step interaction model: select itinerary, inspect it, edit activities, confirm changes.

10. **Preferences and recommendations flow**
   - `src/screens/home/PreferencesScreen.tsx` and `RecommendationsScreen.tsx` represent a funnel from user preference selection to recommendation results.
   - Supporting components such as destination input, date range selector, calendar, province selector, and category grid suggest a structured preference form.
   - The recommendations screen uses dedicated header/empty-state components, indicating result-list behavior with explicit empty/loading-style states.

11. **Visual and UI infrastructure**
   - Styles are split into `*.styles.ts` files next to many components and screens, indicating a style module pattern rather than inline-heavy styling.
   - Constants in `src/constants/` centralize colors, fonts, icons, paddings, and category metadata, which helps keep the UI consistent.
   - `src/components/SplashScreen.tsx`, `AuthLayout.tsx`, and `HeaderLogo.tsx` support shared app-shell presentation.

12. **Cross-cutting concerns**
   - `src/components/common/OfflineBadge` and related storage/query pieces suggest the app is designed to handle limited connectivity or cached state.
   - `src/screens/profile/passwordValidation.ts` and its tests show that validation logic is kept near the profile feature, not embedded in UI only.
   - Coverage and test files are present for multiple components, indicating the architecture is already decomposed enough for unit-level testing.

13. **Diagramming takeaway**
   - A good architecture diagram should show:
     - **Expo Router/app shell** at the top,
     - **Contexts** for auth and theme spanning the app,
     - **Screens** grouped by feature,
     - **Hooks** as the orchestration layer,
     - **Services/storage/query client** as the data layer,
     - **Shared/common components** as a reusable UI layer.
   - The main data flow is: user interaction in a feature screen → hook logic → service/storage/API → state/cache update → UI refresh.

Main entry points: [`app/(tabs)/_layout.tsx`](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/app/(tabs)/_layout.tsx) (Tabs layout), [`src/services/itinerarioService.ts`](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/itinerarioService.ts) (Itinerary service), [`src/components/favorites`](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/favorites) (Favorites UI), [`src/services/api.ts`](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/api.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_router["Router"]
  node_app_layout["App layout<br/>router shell<br/>[_layout.tsx]"]
  node_tabs_layout["Tabs layout<br/>router shell<br/>[_layout.tsx]"]
end

subgraph group_state["State"]
  node_auth_context[("Auth context<br/>app context<br/>[AuthContext.tsx]")]
  node_theme_context[("Theme context<br/>app context<br/>[ThemeContext.tsx]")]
end

subgraph group_screens["Screens"]
  node_login_screen["Login<br/>auth screen<br/>[LoginScreen.tsx]"]
  node_register_screen["Register<br/>auth screen<br/>[RegisterScreen.tsx]"]
  node_home_screen["Home<br/>[HomeScreen.tsx]"]
  node_preferences_screen["Preferences<br/>home flow"]
  node_recommendations_screen["Recommendations<br/>home flow"]
  node_explore_screen["Explore<br/>browse screen<br/>[ExploreScreen.tsx]"]
  node_itinerary_detail_screen["Itinerary detail<br/>detail screen"]
  node_favorites_screen["Favorites<br/>saved screen"]
  node_itinerary_info_screen["Saved detail"]
  node_itinerary_edit_screen["Edit itinerary<br/>edit flow"]
  node_edit_activity_screen["Edit activity<br/>edit flow"]
  node_profile_screen["Profile<br/>[ProfileScreen.tsx]"]
  node_edit_profile_screen["Edit profile<br/>profile flow"]
  node_change_password_screen["Change password<br/>profile flow"]
end

subgraph group_hooks["Hooks"]
  node_favorite_hooks(("Favorite hooks<br/>feature hooks"))
  node_itinerary_hook(("Itinerary hook<br/>feature hook"))
  node_favorites_list_hook(("Favorites hook<br/>feature hook<br/>[useFavoritos.ts]"))
end

subgraph group_data["Data"]
  node_api_service["API client<br/>backend client<br/>[api.ts]"]
  node_auth_service["Auth service<br/>domain service<br/>[authService.ts]"]
  node_user_service["User service<br/>domain service<br/>[userService.ts]"]
  node_itinerary_service["Itinerary service<br/>domain service"]
  node_favorites_service["Favorites service<br/>domain service"]
  node_storage_service[("Storage<br/>local persistence<br/>[storage.ts]")]
  node_itinerary_storage[("Itinerary cache<br/>local cache")]
  node_query_client[("Query client<br/>cache client<br/>[queryClient.ts]")]
end

subgraph group_ui["UI"]
  node_shared_components{{"Shared UI<br/>ui kit"}}
  node_feature_components{{"Feature UI"}}
  node_favorite_ui{{"Favorites UI<br/>workflow ui"}}
end

node_app_layout -->|"navigates"| node_tabs_layout
node_app_layout -->|"provides"| node_auth_context
node_app_layout -->|"provides"| node_theme_context
node_tabs_layout -->|"routes"| node_home_screen
node_tabs_layout -->|"routes"| node_explore_screen
node_tabs_layout -->|"routes"| node_favorites_screen
node_tabs_layout -->|"routes"| node_profile_screen
node_login_screen -->|"uses"| node_auth_service
node_register_screen -->|"uses"| node_auth_service
node_home_screen -->|"starts"| node_preferences_screen
node_preferences_screen -->|"feeds"| node_recommendations_screen
node_preferences_screen -->|"renders"| node_feature_components
node_recommendations_screen -->|"queries"| node_itinerary_service
node_explore_screen -->|"queries"| node_itinerary_service
node_explore_screen -->|"toggles"| node_favorite_hooks
node_itinerary_detail_screen -->|"loads"| node_itinerary_hook
node_itinerary_detail_screen -->|"toggles"| node_favorite_hooks
node_favorites_screen -->|"loads"| node_favorites_list_hook
node_favorites_screen -->|"renders"| node_favorite_ui
node_itinerary_info_screen -->|"reads"| node_favorites_service
node_itinerary_info_screen -->|"renders"| node_favorite_ui
node_itinerary_edit_screen -->|"renders"| node_favorite_ui
node_edit_activity_screen -->|"renders"| node_favorite_ui
node_profile_screen -->|"reads"| node_user_service
node_edit_profile_screen -->|"updates"| node_user_service
node_change_password_screen -->|"updates"| node_user_service
node_login_screen -->|"renders"| node_shared_components
node_favorites_list_hook -->|"uses"| node_favorites_service
node_favorite_hooks -->|"uses"| node_favorites_service
node_itinerary_hook -->|"uses"| node_itinerary_service
node_auth_service -->|"builds on"| node_api_service
node_user_service -->|"builds on"| node_api_service
node_itinerary_service -->|"builds on"| node_api_service
node_favorites_service -->|"builds on"| node_api_service
node_auth_service -->|"persists"| node_storage_service
node_itinerary_service -->|"caches"| node_itinerary_storage
node_query_client -->|"caches"| node_api_service
node_feature_components -->|"composes"| node_shared_components
node_favorite_ui -->|"composes"| node_shared_components

click node_app_layout "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/app/_layout.tsx"
click node_tabs_layout "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/app/(tabs)/_layout.tsx"
click node_auth_context "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/context/AuthContext.tsx"
click node_theme_context "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/context/ThemeContext.tsx"
click node_login_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/auth/LoginScreen.tsx"
click node_register_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/auth/RegisterScreen.tsx"
click node_home_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/HomeScreen.tsx"
click node_preferences_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/PreferencesScreen.tsx"
click node_recommendations_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/RecommendationsScreen.tsx"
click node_explore_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/explore/ExploreScreen.tsx"
click node_itinerary_detail_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/explore/ExploreItineraryDetailScreen.tsx"
click node_favorites_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/FavoritesScreen.tsx"
click node_itinerary_info_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/ItineraryInfoScreen.tsx"
click node_itinerary_edit_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/ItineraryEditScreen.tsx"
click node_edit_activity_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/EditActivityScreen.tsx"
click node_profile_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/ProfileScreen.tsx"
click node_edit_profile_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/EditProfileScreen.tsx"
click node_change_password_screen "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/ChangePasswordScreen.tsx"
click node_favorite_hooks "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useFavoriteToggle.ts"
click node_itinerary_hook "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useItinerarioDetalle.ts"
click node_favorites_list_hook "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useFavoritos.ts"
click node_api_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/api.ts"
click node_auth_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/authService.ts"
click node_user_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/userService.ts"
click node_itinerary_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/itinerarioService.ts"
click node_favorites_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/favoritosService.ts"
click node_storage_service "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/storage.ts"
click node_itinerary_storage "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/itineraryStorage.ts"
click node_query_client "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/queryClient.ts"
click node_shared_components "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/common"
click node_feature_components "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/Preferencias"
click node_favorite_ui "https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/favorites"

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_app_layout,node_tabs_layout toneBlue
class node_auth_context,node_theme_context toneAmber
class node_login_screen,node_register_screen,node_home_screen,node_preferences_screen,node_recommendations_screen,node_explore_screen,node_itinerary_detail_screen,node_favorites_screen,node_itinerary_info_screen,node_itinerary_edit_screen,node_edit_activity_screen,node_profile_screen,node_edit_profile_screen,node_change_password_screen toneMint
class node_favorite_hooks,node_itinerary_hook,node_favorites_list_hook toneRose
class node_api_service,node_auth_service,node_user_service,node_itinerary_service,node_favorites_service,node_storage_service,node_itinerary_storage,node_query_client toneIndigo
class node_shared_components,node_feature_components,node_favorite_ui toneTeal
```

## Components

### Router

Expo Router navigation and route entrypoints

- [App layout](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/app/_layout.tsx): router shell · Root Expo Router layout and app-wide shell · `app/_layout.tsx`
- [Tabs layout](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/app/(tabs)/_layout.tsx): router shell · Main tab navigator and nested route structure · `app/(tabs)/_layout.tsx`

### State

Global app context and cache boundaries

- [Auth context](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/context/AuthContext.tsx): app context · Authentication state and session transitions · `src/context/AuthContext.tsx`
- [Theme context](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/context/ThemeContext.tsx): app context · Theme mode and color-scheme coordination · `src/context/ThemeContext.tsx`

### Screens

Feature screens implemented under src/screens

- [Login](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/auth/LoginScreen.tsx): auth screen · Sign-in flow screen · `src/screens/auth/LoginScreen.tsx`
- [Register](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/auth/RegisterScreen.tsx): auth screen · Account creation screen · `src/screens/auth/RegisterScreen.tsx`
- [Home](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/HomeScreen.tsx): home screen · Authenticated landing screen · `src/screens/home/HomeScreen.tsx`
- [Preferences](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/PreferencesScreen.tsx): home flow · Travel preference collection screen · `src/screens/home/PreferencesScreen.tsx`
- [Recommendations](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/home/RecommendationsScreen.tsx): home flow · Itinerary recommendation results screen · `src/screens/home/RecommendationsScreen.tsx`
- [Explore](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/explore/ExploreScreen.tsx): browse screen · Itinerary discovery and browsing screen · `src/screens/explore/ExploreScreen.tsx`
- [Itinerary detail](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/explore/ExploreItineraryDetailScreen.tsx): detail screen · Detailed itinerary view in explore · `src/screens/explore/ExploreItineraryDetailScreen.tsx`
- [Favorites](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/FavoritesScreen.tsx): saved screen · Saved itineraries overview · `src/screens/favorites/FavoritesScreen.tsx`
- [Saved detail](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/ItineraryInfoScreen.tsx): saved detail · Favorite itinerary detail view · `src/screens/favorites/ItineraryInfoScreen.tsx`
- [Edit itinerary](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/ItineraryEditScreen.tsx): edit flow · Favorite itinerary editing screen · `src/screens/favorites/ItineraryEditScreen.tsx`
- [Edit activity](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/favorites/EditActivityScreen.tsx): edit flow · Activity-level editor for favorite itineraries · `src/screens/favorites/EditActivityScreen.tsx`
- [Profile](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/ProfileScreen.tsx): profile screen · User profile overview screen · `src/screens/profile/ProfileScreen.tsx`
- [Edit profile](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/EditProfileScreen.tsx): profile flow · Profile editing screen · `src/screens/profile/EditProfileScreen.tsx`
- [Change password](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/screens/profile/ChangePasswordScreen.tsx): profile flow · Password update screen · `src/screens/profile/ChangePasswordScreen.tsx`

### Hooks

Reusable feature orchestration hooks

- [Favorite hooks](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useFavoriteToggle.ts): feature hooks · Favorite toggle and favorites data orchestration · `src/hooks/useFavoriteToggle.ts`
- [Itinerary hook](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useItinerarioDetalle.ts): feature hook · Itinerary detail loading and composition · `src/hooks/useItinerarioDetalle.ts`
- [Favorites hook](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/hooks/useFavoritos.ts): feature hook · Saved itineraries data access and refresh logic · `src/hooks/useFavoritos.ts`

### Data

API, storage, and query client services

- [API client](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/api.ts): backend client · Shared HTTP entry point · `src/services/api.ts`
- [Auth service](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/authService.ts): domain service · Login and registration backend calls · `src/services/authService.ts`
- [User service](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/userService.ts): domain service · Profile and user account backend calls · `src/services/userService.ts`
- [Itinerary service](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/itinerarioService.ts): domain service · Itinerary discovery and detail backend calls · `src/services/itinerarioService.ts`
- [Favorites service](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/favoritosService.ts): domain service · Saved itinerary backend operations · `src/services/favoritosService.ts`
- [Storage](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/storage.ts): local persistence · Shared persistence abstraction · `src/services/storage.ts`
- [Itinerary cache](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/itineraryStorage.ts): local cache · Itinerary-specific persisted storage · `src/services/itineraryStorage.ts`
- [Query client](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/blob/main/src/services/queryClient.ts): cache client · Client-side server-state cache configuration · `src/services/queryClient.ts`

### UI

Shared components and feature-specific presentation

- [Shared UI](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/common): ui kit · Reusable app shell and common presentation components · `src/components/common`
- [Feature UI](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/Preferencias): feature ui · Feature-specific screens and workflow components · `src/components/Preferencias`
- [Favorites UI](https://github.com/valen-dasilva/frontend_grupo3_desarrolloapps1/tree/main/src/components/favorites): workflow ui · Favorites cards, edit modal, and activity editors · `src/components/favorites`

## Connections

- App layout → Tabs layout: navigates · Root layout delegates into the main tab shell
- App layout → Auth context: provides · Authentication state is available across the app
- App layout → Theme context: provides · Theme state wraps the application UI
- Tabs layout → Home: routes · Tab entry to the home area
- Tabs layout → Explore: routes · Tab entry to itinerary browsing
- Tabs layout → Favorites: routes · Tab entry to saved itineraries
- Tabs layout → Profile: routes · Tab entry to user profile
- Login → Auth service: uses · Sign-in calls the auth backend
- Register → Auth service: uses · Registration calls the auth backend
- Home → Preferences: starts · Home leads into preference collection
- Preferences → Recommendations: feeds · Preferences generate recommendation results
- Preferences → Feature UI: renders · Preference form uses specialized inputs and selectors
- Recommendations → Itinerary service: queries · Recommendation results depend on itinerary data
- Explore → Itinerary service: queries · Browse screen loads itinerary listings
- Explore → Favorite hooks: toggles · Explore can favorite and unfavorite itineraries
- Itinerary detail → Itinerary hook: loads · Detail view is orchestrated by the itinerary hook
- Itinerary detail → Favorite hooks: toggles · Detail view can favorite the itinerary
- Favorites → Favorites hook: loads · Saved itineraries are fetched through a hook
- Favorites → Favorites UI: renders · Favorites overview uses itinerary cards and empty states
- Saved detail → Favorites service: reads · Saved detail pulls favorite itinerary data
- Saved detail → Favorites UI: renders · Detail view uses saved-itinerary presentation components
- Edit itinerary → Favorites UI: renders · Edit itinerary workflow relies on edit cards and modal UI
- Edit activity → Favorites UI: renders · Activity editor uses the editable activity form components
- Profile → User service: reads · Profile data comes from the user domain service
- Edit profile → User service: updates · Profile edits persist through the user service
- Change password → User service: updates · Password changes go through the user service
- Login → Shared UI: renders · Auth screens reuse shared buttons, inputs, and layout pieces
- Favorites hook → Favorites service: uses · Favorites hook coordinates favorite persistence
- Favorite hooks → Favorites service: uses · Favorite toggles depend on favorites backend operations
- Itinerary hook → Itinerary service: uses · Itinerary detail hook composes itinerary data
- Auth service → API client: builds on · Auth requests share the common API client
- User service → API client: builds on · User requests share the common API client
- Itinerary service → API client: builds on · Itinerary requests share the common API client
- Favorites service → API client: builds on · Favorite requests share the common API client
- Auth service → Storage: persists · Auth state likely relies on persisted session storage
- Itinerary service → Itinerary cache: caches · Itinerary data has a dedicated local persistence layer
- Query client → API client: caches · Query client sits in front of server requests
- Feature UI → Shared UI: composes · Feature forms build on shared UI primitives
- Favorites UI → Shared UI: composes · Favorites workflow components use the shared component layer
