# somprakash04/daily_tech_desk architecture

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

- Interactive diagram: https://gitdiagram.com/somprakash04/daily_tech_desk
- Repository: https://github.com/somprakash04/daily_tech_desk

## Overview

Daily Tech Desk is a Flutter technology-news app. Users enter the app, browse and filter a technology feed, open articles, and use the daily digest or locally saved items; themes and account/onboarding flows support that experience. The README documents an ASP.NET Core API backed by PostgreSQL/Supabase and NewsAPI, but no backend source appears in this tree, so those components and links reflect README documentation rather than inspected implementation. The Flutter source is also unsampled, so internal connections are limited to documented behavior and evident subsystem responsibilities.

Main entry points: [`lib/features/home/presentation/pages/home_page.dart`](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/home_page.dart) (News feed), [`lib/features/home/presentation/pages/article_details_page.dart`](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/article_details_page.dart) (Article details), [`lib/core/network/api_client.dart`](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/network/api_client.dart) (API client), [`lib/main.dart`](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/main.dart) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Flutter app"]
  node_app["App entry<br/>[main.dart]"]
  node_router["App routing<br/>[app_router.dart]"]
  node_config["App configuration<br/>[app_config.dart]"]
  node_theme["Theme state<br/>[theme_cubit.dart]"]
  node_api["API client<br/>[api_client.dart]"]
  node_preferences[("Local preferences")]
end

subgraph group_news["News experience"]
  node_home["News feed<br/>[home_page.dart]"]
  node_feedstate["Feed state<br/>[news_cubit.dart]"]
  node_filter["Category filters"]
  node_newsrepo["News repository"]
  node_article["Article details"]
  node_digest["Daily digest"]
  node_saved["Saved items"]
  node_share["Share and links"]
end

subgraph group_account["User setup"]
  node_onboarding["Interest selection"]
  node_auth["Authentication<br/>[login_page.dart]"]
  node_session["Session state"]
end

subgraph group_platform["API services"]
  node_backend["ASP.NET API"]
  node_database[("PostgreSQL")]
  node_newsapi["NewsAPI"]
end

node_user(("Reader"))
node_browser["External browser"]

node_user -->|"opens"| node_app
node_app -->|"starts routes"| node_router
node_router -->|"routes to"| node_home
node_home -->|"requests feed"| node_feedstate
node_home -->|"selects category"| node_filter
node_feedstate -->|"loads articles"| node_newsrepo
node_newsrepo -->|"requests data"| node_api
node_api -->|"HTTPS requests"| node_backend
node_backend -->|"reads articles"| node_database
node_backend -->|"fetches news"| node_newsapi
node_user -->|"opens article"| node_article
node_user -->|"views digest"| node_digest
node_user -->|"manages bookmarks"| node_saved
node_saved -.->|"persists locally"| node_preferences
node_article -.->|"opens link"| node_browser
node_article -.->|"shares article"| node_user
node_user -->|"sets interests"| node_onboarding
node_user -->|"signs in"| node_auth
node_auth -->|"updates session"| node_session
node_user -->|"changes theme"| node_theme
node_config -->|"configures endpoint"| node_api

click node_app "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/main.dart"
click node_router "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/routes/app_router.dart"
click node_config "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/config/app_config.dart"
click node_theme "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/theme/theme_cubit.dart"
click node_home "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/home_page.dart"
click node_feedstate "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/cubit/news_cubit.dart"
click node_filter "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/cubit/feed_filter_cubit.dart"
click node_newsrepo "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/data/repositories/api_news_repository.dart"
click node_api "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/network/api_client.dart"
click node_article "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/article_details_page.dart"
click node_digest "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/menu/presentation/pages/daily_digest_page.dart"
click node_saved "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/menu/presentation/cubit/saved_articles_cubit.dart"
click node_share "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/article_details_page.dart"
click node_onboarding "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/onboarding/presentation/pages/interest_selection_page.dart"
click node_auth "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/authentication/presentation/pages/login_page.dart"
click node_session "https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/authentication/presentation/cubit/auth_session_cubit.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_app,node_router,node_config,node_theme,node_api,node_preferences,node_browser toneBlue
class node_home,node_feedstate,node_filter,node_newsrepo,node_article,node_digest,node_saved,node_share toneAmber
class node_onboarding,node_auth,node_session toneMint
class node_backend,node_database,node_newsapi toneRose
class node_user toneIndigo
```

## Components

### Flutter app

- [App entry](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/main.dart): `lib/main.dart`
- [App routing](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/routes/app_router.dart): `lib/core/routes/app_router.dart`
- [App configuration](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/config/app_config.dart): `lib/core/config/app_config.dart`
- [Theme state](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/theme/theme_cubit.dart): `lib/core/theme/theme_cubit.dart`
- [API client](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/core/network/api_client.dart): `lib/core/network/api_client.dart`
- **Local preferences**

### News experience

- [News feed](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/home_page.dart): `lib/features/home/presentation/pages/home_page.dart`
- [Feed state](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/cubit/news_cubit.dart): `lib/features/home/presentation/cubit/news_cubit.dart`
- [Category filters](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/cubit/feed_filter_cubit.dart): `lib/features/home/presentation/cubit/feed_filter_cubit.dart`
- [News repository](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/data/repositories/api_news_repository.dart): `lib/features/home/data/repositories/api_news_repository.dart`
- [Article details](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/article_details_page.dart): `lib/features/home/presentation/pages/article_details_page.dart`
- [Daily digest](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/menu/presentation/pages/daily_digest_page.dart): `lib/features/menu/presentation/pages/daily_digest_page.dart`
- [Saved items](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/menu/presentation/cubit/saved_articles_cubit.dart): `lib/features/menu/presentation/cubit/saved_articles_cubit.dart`
- [Share and links](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/home/presentation/pages/article_details_page.dart): `lib/features/home/presentation/pages/article_details_page.dart`

### User setup

- [Interest selection](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/onboarding/presentation/pages/interest_selection_page.dart): `lib/features/onboarding/presentation/pages/interest_selection_page.dart`
- [Authentication](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/authentication/presentation/pages/login_page.dart): `lib/features/authentication/presentation/pages/login_page.dart`
- [Session state](https://github.com/somprakash04/daily_tech_desk/blob/main/lib/features/authentication/presentation/cubit/auth_session_cubit.dart): `lib/features/authentication/presentation/cubit/auth_session_cubit.dart`

### API services

- **ASP.NET API**
- **PostgreSQL**
- **NewsAPI**

### Other components

- **Reader**
- **External browser**

## Connections

- Reader → App entry: opens
- App entry → App routing: starts routes
- App routing → News feed: routes to
- News feed → Feed state: requests feed
- News feed → Category filters: selects category
- Feed state → News repository: loads articles
- News repository → API client: requests data
- API client → ASP.NET API: HTTPS requests
- ASP.NET API → PostgreSQL: reads articles
- ASP.NET API → NewsAPI: fetches news
- Reader → Article details: opens article
- Reader → Daily digest: views digest
- Reader → Saved items: manages bookmarks
- Saved items → Local preferences: persists locally
- Article details → External browser: opens link
- Article details → Reader: shares article
- Reader → Interest selection: sets interests
- Reader → Authentication: signs in
- Authentication → Session state: updates session
- Reader → Theme state: changes theme
- App configuration → API client: configures endpoint
