# escola-nova-era/babytracker architecture

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

- Interactive diagram: https://gitdiagram.com/escola-nova-era/babytracker
- Repository: https://github.com/escola-nova-era/babytracker

## Overview

Baby Tracker is a cross-platform app for caregivers to record baby-care routines and review activity and insights, backed by an API. The tree shows Android, iOS, and backend product areas; sampled code confirms authentication, profile retrieval, iOS network requests, and local tracking persistence. The graph preserves other documented/tree-visible features, but omits uncertain client-to-server and screen-to-view-model wiring where source excerpts do not establish calls.

Main entry points: [`backend/src/app.ts`](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/app.ts) (Express API), [`backend/src/modules/profile/profile.routes.ts`](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.routes.ts) (Profile route), [`backend/src/modules/auth/auth.service.ts`](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.service.ts) (Account authentication), [`backend/src/modules/profile/profile.controller.ts`](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.controller.ts) (Profile handler)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_mobile["Mobile apps"]
  node_android_entry["Android app entry<br/>[MainActivity.kt]"]
  node_android_home["Home and quick actions<br/>[HomeScreenUI.kt]"]
  node_android_timeline["Care timeline<br/>[TimelineScreen.kt]"]
  node_android_insights["Care insights<br/>[InsightsScreen.kt]"]
  node_android_login["Login<br/>[LoginScreen.kt]"]
  node_android_profile["Profile and settings<br/>[ProfileScreen.kt]"]
  node_ios_entry["iOS app entry"]
  node_ios_home["Home tracking<br/>[HomeView.swift]"]
  node_ios_tracking["Care tracking<br/>[TrackingView.swift]"]
  node_ios_insights["Care insights<br/>[InsightsView.swift]"]
  node_ios_login["Login and registration<br/>[LoginView.swift]"]
  node_ios_profile["Profile and settings<br/>[ProfileView.swift]"]
end

subgraph group_backend["Backend API"]
  node_api["Express API<br/>[app.ts]"]
  node_auth_routes["Authentication routes<br/>[auth.routes.ts]"]
  node_auth_controller["Authentication handlers<br/>[auth.controller.ts]"]
  node_auth_service["Account authentication<br/>[auth.service.ts]"]
  node_profile_routes["Profile route<br/>[profile.routes.ts]"]
  node_profile_controller["Profile handler"]
  node_profile_service["Profile lookup<br/>[profile.service.ts]"]
  node_insights_api["Insights API<br/>[insights.routes.ts]"]
  node_activity_api["Activity API<br/>[activity.routes.ts]"]
  node_server["API server<br/>[server.ts]"]
end

subgraph group_storage["Persistence and network"]
  node_android_db[("Local event database")]
  node_ios_auth["Authentication service<br/>[AuthService.swift]"]
  node_ios_network["HTTP client"]
  node_ios_tokens[("Keychain token storage<br/>[TokenStorage.swift]")]
  node_ios_tracking_store[("Tracking repository")]
  node_backend_db[("Prisma data store<br/>[prisma.ts]")]
end

node_caregiver(("Caregiver"))

node_caregiver -->|"opens app"| node_android_entry
node_caregiver -->|"opens app"| node_ios_entry
node_server -->|"starts"| node_api
node_api -->|"mounts routes"| node_auth_routes
node_api -->|"mounts routes"| node_profile_routes
node_api -->|"mounts routes"| node_insights_api
node_api -->|"mounts routes"| node_activity_api
node_profile_routes -->|"dispatches"| node_profile_controller
node_profile_routes -->|"protects with auth"| node_profile_service
node_profile_controller -->|"gets profile"| node_profile_service
node_auth_controller -->|"handles account actions"| node_auth_service
node_auth_service -->|"reads and writes"| node_backend_db
node_ios_auth -->|"sends requests"| node_ios_network
node_ios_tracking_store -.->|"stores tracking data"| node_ios_tracking

click node_android_entry "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/MainActivity.kt"
click node_android_home "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/home/ui/HomeScreenUI.kt"
click node_android_timeline "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/timeline/ui/TimelineScreen.kt"
click node_android_insights "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/insights/ui/InsightsScreen.kt"
click node_android_login "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/login/ui/LoginScreen.kt"
click node_android_profile "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/profile/ui/ProfileScreen.kt"
click node_android_db "https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/data/local/BabyTrackerDatabase.kt"
click node_ios_entry "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/BabyTrackerApp.swift"
click node_ios_home "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Home/HomeView.swift"
click node_ios_tracking "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Tracking/TrackingView.swift"
click node_ios_insights "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Insights/InsightsView.swift"
click node_ios_login "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Login/LoginView.swift"
click node_ios_profile "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Profile/ProfileView.swift"
click node_ios_auth "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Auth/AuthService.swift"
click node_ios_network "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Network/NetworkClient.swift"
click node_ios_tokens "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Auth/TokenStorage.swift"
click node_ios_tracking_store "https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Persistence/TrackingRepository.swift"
click node_api "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/app.ts"
click node_auth_routes "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.routes.ts"
click node_auth_controller "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.controller.ts"
click node_auth_service "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.service.ts"
click node_profile_routes "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.routes.ts"
click node_profile_controller "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.controller.ts"
click node_profile_service "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.service.ts"
click node_insights_api "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/insights/insights.routes.ts"
click node_activity_api "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/activity/activity.routes.ts"
click node_backend_db "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/lib/prisma.ts"
click node_server "https://github.com/escola-nova-era/babytracker/blob/main/backend/src/server.ts"

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_android_entry,node_android_home,node_android_timeline,node_android_insights,node_android_login,node_android_profile,node_ios_entry,node_ios_home,node_ios_tracking,node_ios_insights,node_ios_login,node_ios_profile toneBlue
class node_api,node_auth_routes,node_auth_controller,node_auth_service,node_profile_routes,node_profile_controller,node_profile_service,node_insights_api,node_activity_api,node_server toneAmber
class node_android_db,node_ios_auth,node_ios_network,node_ios_tokens,node_ios_tracking_store,node_backend_db toneMint
class node_caregiver toneIndigo
```

## Components

### Mobile apps

- [Android app entry](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/MainActivity.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/MainActivity.kt`
- [Home and quick actions](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/home/ui/HomeScreenUI.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/home/ui/HomeScreenUI.kt`
- [Care timeline](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/timeline/ui/TimelineScreen.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/timeline/ui/TimelineScreen.kt`
- [Care insights](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/insights/ui/InsightsScreen.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/insights/ui/InsightsScreen.kt`
- [Login](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/login/ui/LoginScreen.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/login/ui/LoginScreen.kt`
- [Profile and settings](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/profile/ui/ProfileScreen.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/profile/ui/ProfileScreen.kt`
- [iOS app entry](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/BabyTrackerApp.swift): `ios/BabyTracker/BabyTrackerApp.swift`
- [Home tracking](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Home/HomeView.swift): `ios/BabyTracker/Screens/Home/HomeView.swift`
- [Care tracking](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Tracking/TrackingView.swift): `ios/BabyTracker/Screens/Tracking/TrackingView.swift`
- [Care insights](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Insights/InsightsView.swift): `ios/BabyTracker/Screens/Insights/InsightsView.swift`
- [Login and registration](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Login/LoginView.swift): `ios/BabyTracker/Screens/Login/LoginView.swift`
- [Profile and settings](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Screens/Profile/ProfileView.swift): `ios/BabyTracker/Screens/Profile/ProfileView.swift`

### Backend API

- [Express API](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/app.ts): `backend/src/app.ts`
- [Authentication routes](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.routes.ts): `backend/src/modules/auth/auth.routes.ts`
- [Authentication handlers](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.controller.ts): `backend/src/modules/auth/auth.controller.ts`
- [Account authentication](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/auth/auth.service.ts): `backend/src/modules/auth/auth.service.ts`
- [Profile route](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.routes.ts): `backend/src/modules/profile/profile.routes.ts`
- [Profile handler](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.controller.ts): `backend/src/modules/profile/profile.controller.ts`
- [Profile lookup](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/profile/profile.service.ts): `backend/src/modules/profile/profile.service.ts`
- [Insights API](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/insights/insights.routes.ts): `backend/src/modules/insights/insights.routes.ts`
- [Activity API](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/modules/activity/activity.routes.ts): `backend/src/modules/activity/activity.routes.ts`
- [API server](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/server.ts): `backend/src/server.ts`

### Persistence and network

- [Local event database](https://github.com/escola-nova-era/babytracker/blob/main/android/app/src/main/java/com/escolanovaeratech/babytracker/data/local/BabyTrackerDatabase.kt): `android/app/src/main/java/com/escolanovaeratech/babytracker/data/local/BabyTrackerDatabase.kt`
- [Authentication service](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Auth/AuthService.swift): `ios/BabyTracker/Services/Auth/AuthService.swift`
- [HTTP client](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Network/NetworkClient.swift): `ios/BabyTracker/Services/Network/NetworkClient.swift`
- [Keychain token storage](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Auth/TokenStorage.swift): `ios/BabyTracker/Services/Auth/TokenStorage.swift`
- [Tracking repository](https://github.com/escola-nova-era/babytracker/blob/main/ios/BabyTracker/Services/Persistence/TrackingRepository.swift): `ios/BabyTracker/Services/Persistence/TrackingRepository.swift`
- [Prisma data store](https://github.com/escola-nova-era/babytracker/blob/main/backend/src/lib/prisma.ts): `backend/src/lib/prisma.ts`

### Other components

- **Caregiver**

## Connections

- Caregiver → Android app entry: opens app
- Caregiver → iOS app entry: opens app
- API server → Express API: starts
- Express API → Authentication routes: mounts routes
- Express API → Profile route: mounts routes
- Express API → Insights API: mounts routes
- Express API → Activity API: mounts routes
- Profile route → Profile handler: dispatches
- Profile route → Profile lookup: protects with auth
- Profile handler → Profile lookup: gets profile
- Authentication handlers → Account authentication: handles account actions
- Account authentication → Prisma data store: reads and writes
- Authentication service → HTTP client: sends requests
- Tracking repository → Care tracking: stores tracking data
