# mohsenbahaj/crossroad architecture

> Architecture diagram of the GitHub repository mohsenbahaj/crossroad, 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/mohsenbahaj/crossroad
- Repository: https://github.com/mohsenbahaj/crossroad

## Overview

Crossroads is a Flutter media and community app. Its documented user journey begins with onboarding or authentication, then reaches media discovery, episode details and playback; users can also explore mentors and team members, manage a cart and checkout, and maintain profile and address information. The tree shows feature-specific screens, controllers and repositories, while the README documents Firebase services, GetX, connectivity monitoring and local storage. Sampled source is platform-runner boilerplate rather than Dart runtime code, so links between feature layers and specific backend services are limited to documented capabilities and are not inferred from naming alone.

Main entry points: [`lib/features/services/services.dart`](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/services/services.dart) (App services), [`lib/main.dart`](https://github.com/mohsenbahaj/crossroad/blob/main/lib/main.dart) (Dart entry), [`lib/features/authentication/screens`](https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/screens) (Login and signup), [`lib/features/authentication/controllers`](https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/controllers) (Auth controllers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry"]
  node_main["Dart entry<br/>[main.dart]"]
  node_root["App root<br/>[app.dart]"]
end

subgraph group_identity["Identity"]
  node_onboarding["Onboarding<br/>[onboarding.dart]"]
  node_auth["Login and signup"]
  node_auth_controller["Auth controllers"]
  node_auth_repo["Authentication repository"]
end

subgraph group_media["Media discovery"]
  node_home["Home and browse<br/>[home.dart]"]
  node_search["Search<br/>[search.dart]"]
  node_episode["Episode details"]
  node_video["Video playback"]
  node_episode_controller["Episode controller"]
  node_episode_repo["Episode repository<br/>[episoderepo.dart]"]
  node_community["Mentors and teams<br/>[crossroadpage.dart]"]
  node_mentor_repo["Mentor repository<br/>[mentor_repo.dart]"]
end

subgraph group_commerce["Commerce"]
  node_cart["Cart<br/>[cart.dart]"]
  node_checkout["Checkout<br/>[checkout.dart]"]
end

subgraph group_account["Account and services"]
  node_profile["Profile and settings<br/>[profile.dart]"]
  node_addresses["Address management<br/>[address.dart]"]
  node_user_repo["User repository"]
  node_services["App services<br/>[services.dart]"]
  node_local_storage[("Local storage")]
  node_connectivity["Connectivity monitor"]
end

node_user(("App user"))
node_firebase_auth["Firebase Auth"]
node_firestore[("Cloud Firestore")]
node_storage["Firebase Storage"]
node_notifications["Push notifications"]

node_user -->|"launches"| node_main
node_main -->|"starts"| node_root
node_user -->|"begins onboarding"| node_onboarding
node_user -->|"authenticates"| node_auth
node_auth -->|"uses"| node_auth_controller
node_auth_controller -->|"delegates"| node_auth_repo
node_auth_repo -->|"authenticates with"| node_firebase_auth
node_user -->|"discovers media"| node_home
node_user -->|"searches"| node_search
node_user -->|"opens episode"| node_episode
node_episode -->|"plays"| node_video
node_user -->|"explores community"| node_community
node_user -->|"manages items"| node_cart
node_user -->|"checks out"| node_checkout
node_user -->|"manages account"| node_profile
node_user -->|"manages addresses"| node_addresses
node_services -.->|"supports alerts"| node_notifications
node_services -.->|"uses"| node_storage
node_services -.->|"monitors"| node_connectivity
node_services -.->|"uses"| node_local_storage

click node_main "https://github.com/mohsenbahaj/crossroad/blob/main/lib/main.dart"
click node_root "https://github.com/mohsenbahaj/crossroad/blob/main/lib/app.dart"
click node_onboarding "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/authentication/screens/onboarding/onboarding.dart"
click node_auth "https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/screens"
click node_auth_controller "https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/controllers"
click node_auth_repo "https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/authentication/authentication_repo.dart"
click node_home "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/home/home.dart"
click node_search "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/browse/search.dart"
click node_episode "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/episode_details/product_details.dart"
click node_video "https://github.com/mohsenbahaj/crossroad/blob/main/lib/common/widgets/video_display/video_display_widget.dart"
click node_episode_controller "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/controllers/video_controller.dart"
click node_episode_repo "https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/episode/episoderepo.dart"
click node_community "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/crossroadpage/crossroadpage.dart"
click node_mentor_repo "https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/crossroad/mentor_repo.dart"
click node_cart "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/cart/cart.dart"
click node_checkout "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/checkout/checkout.dart"
click node_profile "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/personalization/screens/profile/profile.dart"
click node_addresses "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/personalization/screens/address/address.dart"
click node_user_repo "https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/user/user_repositry.dart"
click node_services "https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/services/services.dart"
click node_local_storage "https://github.com/mohsenbahaj/crossroad/blob/main/lib/utils/local_storage/storage_utility.dart"
click node_connectivity "https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/services/network_manager.dart"

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_main,node_root,node_user toneBlue
class node_onboarding,node_auth,node_auth_controller,node_auth_repo,node_firestore,node_storage toneAmber
class node_home,node_search,node_episode,node_video,node_episode_controller,node_episode_repo,node_community,node_mentor_repo toneMint
class node_cart,node_checkout toneRose
class node_profile,node_addresses,node_user_repo,node_services,node_local_storage,node_connectivity,node_firebase_auth,node_notifications toneIndigo
```

## Components

### App entry

- [Dart entry](https://github.com/mohsenbahaj/crossroad/blob/main/lib/main.dart): `lib/main.dart`
- [App root](https://github.com/mohsenbahaj/crossroad/blob/main/lib/app.dart): `lib/app.dart`

### Identity

- [Onboarding](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/authentication/screens/onboarding/onboarding.dart): `lib/features/authentication/screens/onboarding/onboarding.dart`
- [Login and signup](https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/screens): `lib/features/authentication/screens`
- [Auth controllers](https://github.com/mohsenbahaj/crossroad/tree/main/lib/features/authentication/controllers): `lib/features/authentication/controllers`
- [Authentication repository](https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/authentication/authentication_repo.dart): `lib/data/repositories/authentication/authentication_repo.dart`

### Media discovery

- [Home and browse](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/home/home.dart): `lib/features/crossroad/screens/home/home.dart`
- [Search](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/browse/search.dart): `lib/features/crossroad/screens/browse/search.dart`
- [Episode details](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/episode_details/product_details.dart): `lib/features/crossroad/screens/episode_details/product_details.dart`
- [Video playback](https://github.com/mohsenbahaj/crossroad/blob/main/lib/common/widgets/video_display/video_display_widget.dart): `lib/common/widgets/video_display/video_display_widget.dart`
- [Episode controller](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/controllers/video_controller.dart): `lib/features/crossroad/controllers/video_controller.dart`
- [Episode repository](https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/episode/episoderepo.dart): `lib/data/repositories/episode/episoderepo.dart`
- [Mentors and teams](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/crossroadpage/crossroadpage.dart): `lib/features/crossroad/screens/crossroadpage/crossroadpage.dart`
- [Mentor repository](https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/crossroad/mentor_repo.dart): `lib/data/repositories/crossroad/mentor_repo.dart`

### Commerce

- [Cart](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/cart/cart.dart): `lib/features/crossroad/screens/cart/cart.dart`
- [Checkout](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/crossroad/screens/checkout/checkout.dart): `lib/features/crossroad/screens/checkout/checkout.dart`

### Account and services

- [Profile and settings](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/personalization/screens/profile/profile.dart): `lib/features/personalization/screens/profile/profile.dart`
- [Address management](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/personalization/screens/address/address.dart): `lib/features/personalization/screens/address/address.dart`
- [User repository](https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/repositories/user/user_repositry.dart): `lib/data/repositories/user/user_repositry.dart`
- [App services](https://github.com/mohsenbahaj/crossroad/blob/main/lib/features/services/services.dart): `lib/features/services/services.dart`
- [Local storage](https://github.com/mohsenbahaj/crossroad/blob/main/lib/utils/local_storage/storage_utility.dart): `lib/utils/local_storage/storage_utility.dart`
- [Connectivity monitor](https://github.com/mohsenbahaj/crossroad/blob/main/lib/data/services/network_manager.dart): `lib/data/services/network_manager.dart`

### Other components

- **App user**
- **Firebase Auth**
- **Cloud Firestore**
- **Firebase Storage**
- **Push notifications**

## Connections

- App user → Dart entry: launches
- Dart entry → App root: starts
- App user → Onboarding: begins onboarding
- App user → Login and signup: authenticates
- Login and signup → Auth controllers: uses
- Auth controllers → Authentication repository: delegates
- Authentication repository → Firebase Auth: authenticates with
- App user → Home and browse: discovers media
- App user → Search: searches
- App user → Episode details: opens episode
- Episode details → Video playback: plays
- App user → Mentors and teams: explores community
- App user → Cart: manages items
- App user → Checkout: checks out
- App user → Profile and settings: manages account
- App user → Address management: manages addresses
- App services → Push notifications: supports alerts
- App services → Firebase Storage: uses
- App services → Connectivity monitor: monitors
- App services → Local storage: uses
