# diogoslsceno/tesi-react-native architecture

> Architecture diagram of the GitHub repository diogoslsceno/tesi-react-native, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/diogoslsceno/tesi-react-native
- Repository: https://github.com/diogoslsceno/tesi-react-native
- Video tour (about a minute): https://gitdiagram.com/diogoslsceno/tesi-react-native/video

## Overview

Rotina Acadêmica is a React Native/Expo app for organizing a student’s academic routine. The visible workflow enters through the app shell, opens dashboard or activity views, and uses activity context and a SQLite repository to load and update activities; activity lists and detail screens present those records. Other documented-in-code areas include discipline search, profile-photo management, and dashboard summaries and course cards. Evidence is partial, so unsampled routes and database initialization are included without guessed connections.

Main entry points: [`src/styles/colors.ts`](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/styles/colors.ts) (Visual tokens), [`src/app/(tabs)/index.tsx`](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/index.tsx) (Dashboard), [`src/app/_layout.tsx`](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/_layout.tsx) (App shell), [`src/contexts/ActivitiesContext.tsx`](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/contexts/ActivitiesContext.tsx) (Activities state)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_navigation["App navigation"]
  node_app_shell["App shell<br/>[_layout.tsx]"]
  node_tab_layout["Tab navigation<br/>[_layout.tsx]"]
  node_activity_details_route["Activity details route"]
  node_new_activity_route["New activity route<br/>[new-activity.tsx]"]
end

subgraph group_academic["Academic views"]
  node_dashboard["Dashboard<br/>[index.tsx]"]
  node_activity_route["Activity route<br/>[activity.tsx]"]
  node_discipline_route["Discipline view<br/>[discipline.tsx]"]
  node_activity_list["Activity list<br/>[index.tsx]"]
  node_activity_card["Activity editor<br/>[index.tsx]"]
  node_activity_details["Activity details<br/>[index.tsx]"]
  node_course_card["Course card<br/>[index.tsx]"]
  node_summary_card["Summary card<br/>[index.tsx]"]
  node_task_card["Task card<br/>[index.tsx]"]
  node_discipline_card["Discipline card<br/>[index.tsx]"]
  node_search_bar["Discipline search<br/>[index.tsx]"]
  node_discipline_tile["Discipline tile<br/>[index.tsx]"]
end

subgraph group_state["State and persistence"]
  node_activities_context["Activities state"]
  node_activities_repository["Activity repository"]
  node_sqlite[("SQLite database")]
end

subgraph group_profile["Profile and presentation"]
  node_profile_context["Profile state<br/>[ProfileContext.tsx]"]
  node_profile_card["Profile card<br/>[index.tsx]"]
  node_visual_tokens["Visual tokens<br/>[colors.ts]"]
  node_dashboard_styles["Dashboard styles<br/>[index-style.ts]"]
  node_course_styles["Course card styles<br/>[style.ts]"]
  node_discipline_styles["Discipline card styles<br/>[style.ts]"]
  node_search_styles["Search styles<br/>[style.ts]"]
  node_summary_styles["Summary styles<br/>[styles.ts]"]
  node_task_styles["Task styles<br/>[style.ts]"]
  node_activity_card_styles["Activity card styles<br/>[style.ts]"]
  node_activity_details_styles["Details styles<br/>[style.ts]"]
  node_activity_list_styles["List styles<br/>[style.ts]"]
  node_profile_styles["Profile styles<br/>[style.ts]"]
  node_font_tokens["Font tokens<br/>[fontFamily.ts]"]
end

node_student(("Student"))

node_student -->|"opens"| node_app_shell
node_app_shell -->|"hosts"| node_tab_layout
node_app_shell -->|"provides"| node_activities_context
node_app_shell -->|"provides"| node_profile_context
node_app_shell -->|"initializes"| node_sqlite
node_tab_layout -->|"routes"| node_dashboard
node_student -->|"views"| node_dashboard
node_dashboard -->|"renders"| node_summary_card
node_dashboard -->|"renders"| node_task_card
node_dashboard -->|"renders"| node_course_card
node_dashboard -->|"reads photo"| node_profile_context
node_dashboard -->|"uses styles"| node_dashboard_styles
node_activity_route -->|"renders"| node_activity_list
node_activity_details_route -->|"renders"| node_activity_details
node_activity_list -->|"reads activities"| node_activities_context
node_activity_details -->|"updates activities"| node_activities_context
node_activity_card -->|"saves edits"| node_activities_context
node_activities_context -->|"calls"| node_activities_repository
node_activities_repository -->|"queries and writes"| node_sqlite
node_discipline_route -->|"renders"| node_search_bar
node_discipline_route -->|"renders"| node_discipline_card
node_discipline_route -->|"reads profile"| node_profile_context
node_profile_card -->|"reads and updates"| node_profile_context
node_activity_list -->|"reads photo"| node_profile_context
node_course_card -->|"uses styles"| node_course_styles
node_discipline_card -->|"uses styles"| node_discipline_styles
node_search_bar -->|"uses styles"| node_search_styles
node_summary_card -->|"uses styles"| node_summary_styles
node_task_card -->|"uses styles"| node_task_styles
node_activity_list -->|"uses styles"| node_activity_list_styles
node_activity_details -->|"uses styles"| node_activity_details_styles
node_activity_card -->|"uses styles"| node_activity_card_styles
node_profile_card -->|"uses styles"| node_profile_styles
node_course_styles -->|"uses colors"| node_visual_tokens
node_discipline_styles -->|"uses colors"| node_visual_tokens
node_search_styles -->|"uses colors"| node_visual_tokens
node_summary_styles -->|"uses colors"| node_visual_tokens
node_task_styles -->|"uses colors"| node_visual_tokens
node_activity_card_styles -->|"uses colors"| node_visual_tokens
node_activity_details_styles -->|"uses colors"| node_visual_tokens
node_activity_list_styles -->|"uses colors"| node_visual_tokens
node_profile_styles -->|"uses colors"| node_visual_tokens
node_dashboard_styles -->|"uses colors"| node_visual_tokens
node_visual_tokens -.->|"shares design system"| node_font_tokens

click node_app_shell "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/_layout.tsx"
click node_tab_layout "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/_layout.tsx"
click node_dashboard "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/index.tsx"
click node_activity_route "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/activity.tsx"
click node_discipline_route "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/discipline.tsx"
click node_activity_details_route "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/activity-details.tsx"
click node_new_activity_route "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/new-activity.tsx"
click node_activity_list "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityList/index.tsx"
click node_activity_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityCard/index.tsx"
click node_activity_details "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityDetails/index.tsx"
click node_course_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CourseCard/index.tsx"
click node_summary_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SummaryCard/index.tsx"
click node_task_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/TaskCard/index.tsx"
click node_discipline_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/DisciplineCard/index.tsx"
click node_search_bar "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SearchBar/index.tsx"
click node_activities_context "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/contexts/ActivitiesContext.tsx"
click node_activities_repository "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/database/activitiesRepository.ts"
click node_sqlite "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/database/initializeDatabase.ts"
click node_profile_context "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/contexts/ProfileContext.tsx"
click node_profile_card "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/profileCard/index.tsx"
click node_discipline_tile "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CardDiscipline/index.tsx"
click node_visual_tokens "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/styles/colors.ts"
click node_dashboard_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/screens/index-style.ts"
click node_course_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CourseCard/style.ts"
click node_discipline_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/DisciplineCard/style.ts"
click node_search_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SearchBar/style.ts"
click node_summary_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SummaryCard/styles.ts"
click node_task_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/TaskCard/style.ts"
click node_activity_card_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityCard/style.ts"
click node_activity_details_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityDetails/style.ts"
click node_activity_list_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityList/style.ts"
click node_profile_styles "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/profileCard/style.ts"
click node_font_tokens "https://github.com/diogoslsceno/tesi-react-native/blob/main/src/styles/fontFamily.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_app_shell,node_tab_layout,node_activity_details_route,node_new_activity_route toneBlue
class node_dashboard,node_activity_route,node_discipline_route,node_activity_list,node_activity_card,node_activity_details,node_course_card,node_summary_card,node_task_card,node_discipline_card,node_search_bar,node_discipline_tile toneAmber
class node_activities_context,node_activities_repository,node_sqlite toneMint
class node_profile_context,node_profile_card,node_visual_tokens,node_dashboard_styles,node_course_styles,node_discipline_styles,node_search_styles,node_summary_styles,node_task_styles,node_activity_card_styles,node_activity_details_styles,node_activity_list_styles,node_profile_styles,node_font_tokens toneRose
class node_student toneIndigo
```

## Components

### App navigation

- [App shell](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/_layout.tsx): `src/app/_layout.tsx`
- [Tab navigation](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/_layout.tsx): `src/app/(tabs)/_layout.tsx`
- [Activity details route](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/activity-details.tsx): `src/app/activity-details.tsx`
- [New activity route](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/new-activity.tsx): `src/app/new-activity.tsx`

### Academic views

- [Dashboard](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/index.tsx): `src/app/(tabs)/index.tsx`
- [Activity route](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/activity.tsx): `src/app/(tabs)/activity.tsx`
- [Discipline view](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/app/(tabs)/discipline.tsx): `src/app/(tabs)/discipline.tsx`
- [Activity list](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityList/index.tsx): `src/components/activityList/index.tsx`
- [Activity editor](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityCard/index.tsx): `src/components/activityCard/index.tsx`
- [Activity details](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityDetails/index.tsx): `src/components/activityDetails/index.tsx`
- [Course card](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CourseCard/index.tsx): `src/components/CourseCard/index.tsx`
- [Summary card](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SummaryCard/index.tsx): `src/components/SummaryCard/index.tsx`
- [Task card](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/TaskCard/index.tsx): `src/components/TaskCard/index.tsx`
- [Discipline card](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/DisciplineCard/index.tsx): `src/components/DisciplineCard/index.tsx`
- [Discipline search](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SearchBar/index.tsx): `src/components/SearchBar/index.tsx`
- [Discipline tile](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CardDiscipline/index.tsx): `src/components/CardDiscipline/index.tsx`

### State and persistence

- [Activities state](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/contexts/ActivitiesContext.tsx): `src/contexts/ActivitiesContext.tsx`
- [Activity repository](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/database/activitiesRepository.ts): `src/database/activitiesRepository.ts`
- [SQLite database](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/database/initializeDatabase.ts): `src/database/initializeDatabase.ts`

### Profile and presentation

- [Profile state](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/contexts/ProfileContext.tsx): `src/contexts/ProfileContext.tsx`
- [Profile card](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/profileCard/index.tsx): `src/components/profileCard/index.tsx`
- [Visual tokens](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/styles/colors.ts): `src/styles/colors.ts`
- [Dashboard styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/screens/index-style.ts): `src/screens/index-style.ts`
- [Course card styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/CourseCard/style.ts): `src/components/CourseCard/style.ts`
- [Discipline card styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/DisciplineCard/style.ts): `src/components/DisciplineCard/style.ts`
- [Search styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SearchBar/style.ts): `src/components/SearchBar/style.ts`
- [Summary styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/SummaryCard/styles.ts): `src/components/SummaryCard/styles.ts`
- [Task styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/TaskCard/style.ts): `src/components/TaskCard/style.ts`
- [Activity card styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityCard/style.ts): `src/components/activityCard/style.ts`
- [Details styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityDetails/style.ts): `src/components/activityDetails/style.ts`
- [List styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/activityList/style.ts): `src/components/activityList/style.ts`
- [Profile styles](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/components/profileCard/style.ts): `src/components/profileCard/style.ts`
- [Font tokens](https://github.com/diogoslsceno/tesi-react-native/blob/main/src/styles/fontFamily.ts): `src/styles/fontFamily.ts`

### Other components

- **Student**

## Connections

- Student → App shell: opens
- App shell → Tab navigation: hosts (evidence: `src/app/_layout.tsx`)
- App shell → Activities state: provides (evidence: `src/app/_layout.tsx`)
- App shell → Profile state: provides (evidence: `src/app/_layout.tsx`)
- App shell → SQLite database: initializes (evidence: `src/app/_layout.tsx`)
- Tab navigation → Dashboard: routes (evidence: `src/app/(tabs)/_layout.tsx`)
- Student → Dashboard: views
- Dashboard → Summary card: renders (evidence: `src/app/(tabs)/index.tsx`)
- Dashboard → Task card: renders (evidence: `src/app/(tabs)/index.tsx`)
- Dashboard → Course card: renders (evidence: `src/app/(tabs)/index.tsx`)
- Dashboard → Profile state: reads photo (evidence: `src/app/(tabs)/index.tsx`)
- Dashboard → Dashboard styles: uses styles (evidence: `src/app/(tabs)/index.tsx`)
- Activity route → Activity list: renders (evidence: `src/app/(tabs)/activity.tsx`)
- Activity details route → Activity details: renders (evidence: `src/app/activity-details.tsx`)
- Activity list → Activities state: reads activities (evidence: `src/components/activityList/index.tsx`)
- Activity details → Activities state: updates activities (evidence: `src/components/activityDetails/index.tsx`)
- Activity editor → Activities state: saves edits (evidence: `src/components/activityCard/index.tsx`)
- Activities state → Activity repository: calls (evidence: `src/contexts/ActivitiesContext.tsx`)
- Activity repository → SQLite database: queries and writes (evidence: `src/database/activitiesRepository.ts`)
- Discipline view → Discipline search: renders (evidence: `src/app/(tabs)/discipline.tsx`)
- Discipline view → Discipline card: renders (evidence: `src/app/(tabs)/discipline.tsx`)
- Discipline view → Profile state: reads profile (evidence: `src/app/(tabs)/discipline.tsx`)
- Profile card → Profile state: reads and updates (evidence: `src/components/profileCard/index.tsx`)
- Activity list → Profile state: reads photo (evidence: `src/components/activityList/index.tsx`)
- Course card → Course card styles: uses styles (evidence: `src/components/CourseCard/index.tsx`)
- Discipline card → Discipline card styles: uses styles (evidence: `src/components/DisciplineCard/index.tsx`)
- Discipline search → Search styles: uses styles (evidence: `src/components/SearchBar/index.tsx`)
- Summary card → Summary styles: uses styles (evidence: `src/components/SummaryCard/index.tsx`)
- Task card → Task styles: uses styles (evidence: `src/components/TaskCard/index.tsx`)
- Activity list → List styles: uses styles (evidence: `src/components/activityList/index.tsx`)
- Activity details → Details styles: uses styles (evidence: `src/components/activityDetails/index.tsx`)
- Activity editor → Activity card styles: uses styles (evidence: `src/components/activityCard/index.tsx`)
- Profile card → Profile styles: uses styles (evidence: `src/components/profileCard/index.tsx`)
- Course card styles → Visual tokens: uses colors (evidence: `src/components/CourseCard/style.ts`)
- Discipline card styles → Visual tokens: uses colors (evidence: `src/components/DisciplineCard/style.ts`)
- Search styles → Visual tokens: uses colors (evidence: `src/components/SearchBar/style.ts`)
- Summary styles → Visual tokens: uses colors (evidence: `src/components/SummaryCard/styles.ts`)
- Task styles → Visual tokens: uses colors (evidence: `src/components/TaskCard/style.ts`)
- Activity card styles → Visual tokens: uses colors (evidence: `src/components/activityCard/style.ts`)
- Details styles → Visual tokens: uses colors (evidence: `src/components/activityDetails/style.ts`)
- List styles → Visual tokens: uses colors (evidence: `src/components/activityList/style.ts`)
- Profile styles → Visual tokens: uses colors (evidence: `src/components/profileCard/style.ts`)
- Dashboard styles → Visual tokens: uses colors (evidence: `src/screens/index-style.ts`)
- Visual tokens → Font tokens: shares design system
