# harshgupta2902/dev-o-lingo architecture

> Architecture diagram of the GitHub repository harshgupta2902/dev-o-lingo, 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/harshgupta2902/dev-o-lingo
- Repository: https://github.com/harshgupta2902/dev-o-lingo

## Overview

Dev-O-Lingo is a Flutter language-learning app. Its main user journey is social login, onboarding when needed, selecting a lesson, completing a quiz, and receiving results and updated learning rewards. The README also documents daily practice, review, social features, monetization, achievements, and notifications. The graph follows those documented responsibilities and API flows; Dart implementation details were not sampled, so uncertain internal call wiring is omitted.

Main entry points: [`lib/utilities/dio/api_client.dart`](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/dio/api_client.dart) (HTTP Client), [`lib/home_module/controller/shop/shop_controller.dart`](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/shop/shop_controller.dart) (Shop & Purchases), [`lib/main.dart`](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/main.dart) (App Startup), [`lib/auth_module/view/login_view.dart`](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/view/login_view.dart) (Login & Onboarding)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_auth_view["Login &amp; Onboarding<br/>[login_view.dart]"]
  node_auth_controller["Auth Controller"]
  node_onboarding_controller["Onboarding Controller"]
end

subgraph group_learning["Lesson Learning"]
  node_dashboard["Learning Dashboard"]
  node_language_controller["Language Controller"]
  node_exercise_view["Lesson Exercises"]
  node_exercises_controller["Exercises Controller"]
  node_quiz["Lesson Quiz<br/>[quiz_screen.dart]"]
  node_result["Lesson Results<br/>[result_view.dart]"]
  node_stats_controller["User Stats"]
end

subgraph group_engagement["Practice &amp; Community"]
  node_daily_controller["Daily Practice"]
  node_practice_center["Practice Review"]
  node_leaderboard["Leaderboard"]
  node_social["Follows &amp; Profiles"]
  node_achievements["Achievements"]
end

subgraph group_commerce["Rewards &amp; Shop"]
  node_shop["Shop &amp; Purchases"]
  node_iap["Native Purchases<br/>[iap_service.dart]"]
end

subgraph group_platform["App Platform"]
  node_main["App Startup<br/>[main.dart]"]
  node_router["Navigation"]
  node_api["HTTP Client<br/>[api_client.dart]"]
  node_storage[("Local Preferences<br/>[core_prefs.dart]")]
  node_notifications["Push Notifications"]
  node_analytics["Analytics &amp; Crash"]
end

node_learner(("Learner"))
node_backend["Lingo API"]
node_identity["Google Sign-In"]
node_firebase["Firebase Services"]
node_storefronts["App Stores"]
node_ad_network["Ad Network"]

node_learner -->|"starts"| node_auth_view
node_auth_view -->|"signs in"| node_auth_controller
node_auth_controller -.->|"authenticates"| node_identity
node_auth_controller -->|"social login"| node_api
node_auth_controller -->|"stores token"| node_storage
node_auth_view -->|"answers onboarding"| node_onboarding_controller
node_onboarding_controller -->|"submits answers"| node_api
node_auth_view -->|"continues"| node_router
node_main -->|"initializes"| node_storage
node_main -->|"launches"| node_router
node_learner -->|"opens lessons"| node_dashboard
node_dashboard -->|"loads course"| node_language_controller
node_language_controller -->|"fetches language"| node_api
node_language_controller -->|"opens lesson"| node_exercise_view
node_exercise_view -->|"loads exercises"| node_exercises_controller
node_exercises_controller -->|"fetches exercises"| node_api
node_learner -->|"answers questions"| node_quiz
node_quiz -->|"updates hearts"| node_stats_controller
node_quiz -->|"submits lesson"| node_api
node_api -->|"sends requests"| node_backend
node_backend -->|"returns data"| node_api
node_quiz -->|"shows outcome"| node_result
node_stats_controller -->|"loads stats"| node_api
node_learner -->|"practices daily"| node_daily_controller
node_daily_controller -->|"loads &amp; submits practice"| node_api
node_learner -->|"reviews errors"| node_practice_center
node_practice_center -->|"loads wrong answers"| node_api
node_learner -->|"views rankings"| node_leaderboard
node_leaderboard -->|"loads rankings"| node_api
node_learner -->|"manages follows"| node_social
node_social -->|"reads &amp; updates follows"| node_api
node_learner -->|"views achievements"| node_achievements
node_achievements -->|"loads achievements"| node_api
node_learner -->|"browses shop"| node_shop
node_shop -->|"loads &amp; verifies items"| node_api
node_shop -->|"initiates purchase"| node_iap
node_iap -->|"purchases"| node_storefronts
node_shop -->|"creates purchase"| node_api
node_shop -.->|"offers ad rewards"| node_ad_network
node_notifications -->|"receives messages"| node_firebase
node_notifications -->|"routes payload"| node_router
node_main -->|"initializes messaging"| node_notifications
node_main -->|"initializes services"| node_analytics

click node_main "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/main.dart"
click node_router "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/navigation/route_generator.dart"
click node_auth_view "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/view/login_view.dart"
click node_auth_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/controller/auth_controller.dart"
click node_onboarding_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/controller/onboarding_controller.dart"
click node_dashboard "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/dashboard_view.dart"
click node_language_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/language_controller.dart"
click node_exercise_view "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/exercises_view.dart"
click node_exercises_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/exercises_controller.dart"
click node_quiz "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/quiz_screen.dart"
click node_result "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/result_view.dart"
click node_stats_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/user_stats_controller.dart"
click node_daily_controller "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/daily_practise_controller.dart"
click node_practice_center "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/practise_center_controller.dart"
click node_leaderboard "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/leaderboard_controller.dart"
click node_social "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/social_controller.dart"
click node_achievements "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/achievement_controller.dart"
click node_shop "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/shop/shop_controller.dart"
click node_iap "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/shop/iap_service.dart"
click node_api "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/dio/api_client.dart"
click node_storage "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/core_prefs.dart"
click node_notifications "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/notification_service.dart"
click node_analytics "https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/analytics_service.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_auth_view,node_auth_controller,node_onboarding_controller toneBlue
class node_dashboard,node_language_controller,node_exercise_view,node_exercises_controller,node_quiz,node_result,node_stats_controller toneAmber
class node_daily_controller,node_practice_center,node_leaderboard,node_social,node_achievements,node_backend toneMint
class node_shop,node_iap toneRose
class node_main,node_router,node_api,node_storage,node_notifications,node_analytics,node_learner,node_identity,node_firebase,node_storefronts,node_ad_network toneIndigo
```

## Components

### Authentication

- [Login & Onboarding](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/view/login_view.dart): `lib/auth_module/view/login_view.dart`
- [Auth Controller](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/controller/auth_controller.dart): `lib/auth_module/controller/auth_controller.dart`
- [Onboarding Controller](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/auth_module/controller/onboarding_controller.dart): `lib/auth_module/controller/onboarding_controller.dart`

### Lesson Learning

- [Learning Dashboard](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/dashboard_view.dart): `lib/home_module/view/dashboard_view.dart`
- [Language Controller](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/language_controller.dart): `lib/home_module/controller/language_controller.dart`
- [Lesson Exercises](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/exercises_view.dart): `lib/home_module/view/exercises_view.dart`
- [Exercises Controller](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/exercises_controller.dart): `lib/home_module/controller/exercises_controller.dart`
- [Lesson Quiz](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/quiz_screen.dart): `lib/home_module/view/quiz_screen.dart`
- [Lesson Results](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/view/result_view.dart): `lib/home_module/view/result_view.dart`
- [User Stats](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/user_stats_controller.dart): `lib/home_module/controller/user_stats_controller.dart`

### Practice & Community

- [Daily Practice](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/daily_practise_controller.dart): `lib/home_module/controller/daily_practise_controller.dart`
- [Practice Review](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/practise_center_controller.dart): `lib/home_module/controller/practise_center_controller.dart`
- [Leaderboard](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/leaderboard_controller.dart): `lib/home_module/controller/leaderboard_controller.dart`
- [Follows & Profiles](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/social_controller.dart): `lib/home_module/controller/social_controller.dart`
- [Achievements](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/achievement_controller.dart): `lib/home_module/controller/achievement_controller.dart`

### Rewards & Shop

- [Shop & Purchases](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/shop/shop_controller.dart): `lib/home_module/controller/shop/shop_controller.dart`
- [Native Purchases](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/home_module/controller/shop/iap_service.dart): `lib/home_module/controller/shop/iap_service.dart`

### App Platform

- [App Startup](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/main.dart): `lib/main.dart`
- [Navigation](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/navigation/route_generator.dart): `lib/utilities/navigation/route_generator.dart`
- [HTTP Client](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/dio/api_client.dart): `lib/utilities/dio/api_client.dart`
- [Local Preferences](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/core_prefs.dart): `lib/utilities/firebase/core_prefs.dart`
- [Push Notifications](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/notification_service.dart): `lib/utilities/firebase/notification_service.dart`
- [Analytics & Crash](https://github.com/harshgupta2902/dev-o-lingo/blob/main/lib/utilities/firebase/analytics_service.dart): `lib/utilities/firebase/analytics_service.dart`

### Other components

- **Learner**
- **Lingo API**
- **Google Sign-In**
- **Firebase Services**
- **App Stores**
- **Ad Network**

## Connections

- Learner → Login & Onboarding: starts
- Login & Onboarding → Auth Controller: signs in
- Auth Controller → Google Sign-In: authenticates
- Auth Controller → HTTP Client: social login
- Auth Controller → Local Preferences: stores token
- Login & Onboarding → Onboarding Controller: answers onboarding
- Onboarding Controller → HTTP Client: submits answers
- Login & Onboarding → Navigation: continues
- App Startup → Local Preferences: initializes
- App Startup → Navigation: launches
- Learner → Learning Dashboard: opens lessons
- Learning Dashboard → Language Controller: loads course
- Language Controller → HTTP Client: fetches language
- Language Controller → Lesson Exercises: opens lesson
- Lesson Exercises → Exercises Controller: loads exercises
- Exercises Controller → HTTP Client: fetches exercises
- Learner → Lesson Quiz: answers questions
- Lesson Quiz → User Stats: updates hearts
- Lesson Quiz → HTTP Client: submits lesson
- HTTP Client → Lingo API: sends requests
- Lingo API → HTTP Client: returns data
- Lesson Quiz → Lesson Results: shows outcome
- User Stats → HTTP Client: loads stats
- Learner → Daily Practice: practices daily
- Daily Practice → HTTP Client: loads & submits practice
- Learner → Practice Review: reviews errors
- Practice Review → HTTP Client: loads wrong answers
- Learner → Leaderboard: views rankings
- Leaderboard → HTTP Client: loads rankings
- Learner → Follows & Profiles: manages follows
- Follows & Profiles → HTTP Client: reads & updates follows
- Learner → Achievements: views achievements
- Achievements → HTTP Client: loads achievements
- Learner → Shop & Purchases: browses shop
- Shop & Purchases → HTTP Client: loads & verifies items
- Shop & Purchases → Native Purchases: initiates purchase
- Native Purchases → App Stores: purchases
- Shop & Purchases → HTTP Client: creates purchase
- Shop & Purchases → Ad Network: offers ad rewards
- Push Notifications → Firebase Services: receives messages
- Push Notifications → Navigation: routes payload
- App Startup → Push Notifications: initializes messaging
- App Startup → Analytics & Crash: initializes services
