# flutter-kanpur/readmeapp architecture

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

## Overview

ReadMe is a cross-platform Flutter blog app, usable standalone or embedded in Flutter Kanpur. Readers discover and search articles, open details, and interact through likes, views, and comments; authors can create drafts and publish posts, and users can browse communities and profiles. Supabase backs app data and account services. The README documents article deep links, Kanpur session synchronization, account deletion, and standalone-only Shorebird patches. The tree and README support these product areas, but sampled Dart source is limited, so uncertain internal call wiring is omitted.

Main entry points: [`lib/core/network/readme_supabase.dart`](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/network/readme_supabase.dart) (Supabase), [`lib/core/router/routes.dart`](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/router/routes.dart) (Routes), [`lib/main.dart`](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/main.dart) (App entry), [`lib/features/auth/presentation/state/auth_controller_provider.dart`](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/auth/presentation/state/auth_controller_provider.dart) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_main["App entry<br/>[main.dart]"]
  node_router["Routes<br/>[routes.dart]"]
  node_deeplinks["Article links"]
end

subgraph group_reading["Read and discover"]
  node_home["Home feed<br/>[home_screen.dart]"]
  node_search["Search<br/>[search_screen.dart]"]
  node_feedstate["Feed and filters"]
  node_detail["Article detail"]
  node_engagement["Article engagement"]
  node_comments["Comments"]
end

subgraph group_authoring["Create and community"]
  node_communities["Communities"]
  node_editor["Blog editor"]
  node_drafts["Drafts and publishing"]
end

subgraph group_identity["Identity and services"]
  node_auth["Authentication"]
  node_authstate["Auth controller"]
  node_profiles["Profiles"]
  node_supabase[("Supabase")]
  node_sync["Kanpur session sync<br/>[index.ts]"]
  node_delete["Account deletion<br/>[index.ts]"]
end

subgraph group_operations["App lifecycle"]
  node_shorebird["Patch listener"]
  node_upgrader["Store upgrade checks<br/>[app_upgrader.dart]"]
end

node_user(("Reader or author"))
node_kanpur(("Flutter Kanpur"))
node_linksource(("Shared article link"))
node_shorebirdservice(("Shorebird service"))
node_store(("App store"))

node_user -->|"opens app"| node_main
node_main -->|"sets routes"| node_router
node_router -->|"navigates"| node_home
node_router -->|"navigates"| node_search
node_router -->|"navigates"| node_auth
node_router -->|"navigates"| node_profiles
node_router -->|"navigates"| node_communities
node_router -->|"navigates"| node_editor
node_linksource -->|"opens article"| node_deeplinks
node_deeplinks -->|"resolves article"| node_detail
node_home -->|"loads feed"| node_feedstate
node_feedstate -->|"reads feed"| node_supabase
node_detail -->|"loads engagement"| node_engagement
node_engagement -->|"reads and writes"| node_supabase
node_detail -->|"loads and posts"| node_comments
node_comments -->|"reads and writes"| node_supabase
node_auth -->|"submits credentials"| node_authstate
node_authstate -->|"authenticates"| node_supabase
node_kanpur -.->|"provides session"| node_sync
node_sync -->|"creates session and profile"| node_supabase
node_authstate -.->|"requests sync"| node_sync
node_profiles -->|"reads and updates"| node_supabase
node_editor -->|"edits draft"| node_drafts
node_drafts -->|"saves or publishes"| node_supabase
node_communities -->|"loads community data"| node_supabase
node_authstate -->|"requests deletion"| node_delete
node_delete -->|"deletes account and avatar"| node_supabase
node_main -.->|"checks patches"| node_shorebird
node_shorebird -.->|"downloads patch"| node_shorebirdservice
node_main -.->|"checks version"| node_upgrader
node_upgrader -.->|"prompts store update"| node_store

click node_main "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/main.dart"
click node_router "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/router/routes.dart"
click node_deeplinks "https://github.com/flutter-kanpur/readmeapp/tree/main/lib/core/deep_links"
click node_home "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/home_page/presentation/pages/home_screen.dart"
click node_search "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/search/presentation/pages/search_screen.dart"
click node_feedstate "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/state/blog_feed_provider.dart"
click node_detail "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/blog_detail/presentation/pages/blog_detail_screen.dart"
click node_engagement "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/state/blog_engagement_provider.dart"
click node_comments "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/blog_detail/data/datasource/blog_comment_datasource.dart"
click node_auth "https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/auth/presentation"
click node_authstate "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/auth/presentation/state/auth_controller_provider.dart"
click node_profiles "https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/profile_page"
click node_communities "https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/communities"
click node_editor "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/create_blog_page/presentation/controllers/blog_editor_controller.dart"
click node_drafts "https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/create_blog_page/domain/use_cases"
click node_supabase "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/network/readme_supabase.dart"
click node_sync "https://github.com/flutter-kanpur/readmeapp/blob/main/supabase/functions/sync-session/index.ts"
click node_delete "https://github.com/flutter-kanpur/readmeapp/blob/main/supabase/functions/delete-account/index.ts"
click node_shorebird "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/updater/shorebird_patch_listener.dart"
click node_upgrader "https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/updater/app_upgrader.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_router,node_deeplinks toneBlue
class node_home,node_search,node_feedstate,node_detail,node_engagement,node_comments toneAmber
class node_communities,node_editor,node_drafts toneMint
class node_auth,node_authstate,node_profiles,node_supabase,node_sync,node_delete toneRose
class node_shorebird,node_upgrader,node_user,node_kanpur,node_linksource,node_shorebirdservice,node_store toneIndigo
```

## Components

### App shell

- [App entry](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/main.dart): `lib/main.dart`
- [Routes](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/router/routes.dart): `lib/core/router/routes.dart`
- [Article links](https://github.com/flutter-kanpur/readmeapp/tree/main/lib/core/deep_links): `lib/core/deep_links`

### Read and discover

- [Home feed](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/home_page/presentation/pages/home_screen.dart): `lib/features/home_page/presentation/pages/home_screen.dart`
- [Search](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/search/presentation/pages/search_screen.dart): `lib/features/search/presentation/pages/search_screen.dart`
- [Feed and filters](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/state/blog_feed_provider.dart): `lib/core/state/blog_feed_provider.dart`
- [Article detail](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/blog_detail/presentation/pages/blog_detail_screen.dart): `lib/features/blog_detail/presentation/pages/blog_detail_screen.dart`
- [Article engagement](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/state/blog_engagement_provider.dart): `lib/core/state/blog_engagement_provider.dart`
- [Comments](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/blog_detail/data/datasource/blog_comment_datasource.dart): `lib/features/blog_detail/data/datasource/blog_comment_datasource.dart`

### Create and community

- [Communities](https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/communities): `lib/features/communities`
- [Blog editor](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/create_blog_page/presentation/controllers/blog_editor_controller.dart): `lib/features/create_blog_page/presentation/controllers/blog_editor_controller.dart`
- [Drafts and publishing](https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/create_blog_page/domain/use_cases): `lib/features/create_blog_page/domain/use_cases`

### Identity and services

- [Authentication](https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/auth/presentation): `lib/features/auth/presentation`
- [Auth controller](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/features/auth/presentation/state/auth_controller_provider.dart): `lib/features/auth/presentation/state/auth_controller_provider.dart`
- [Profiles](https://github.com/flutter-kanpur/readmeapp/tree/main/lib/features/profile_page): `lib/features/profile_page`
- [Supabase](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/network/readme_supabase.dart): `lib/core/network/readme_supabase.dart`
- [Kanpur session sync](https://github.com/flutter-kanpur/readmeapp/blob/main/supabase/functions/sync-session/index.ts): `supabase/functions/sync-session/index.ts`
- [Account deletion](https://github.com/flutter-kanpur/readmeapp/blob/main/supabase/functions/delete-account/index.ts): `supabase/functions/delete-account/index.ts`

### App lifecycle

- [Patch listener](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/updater/shorebird_patch_listener.dart): `lib/core/updater/shorebird_patch_listener.dart`
- [Store upgrade checks](https://github.com/flutter-kanpur/readmeapp/blob/main/lib/core/updater/app_upgrader.dart): `lib/core/updater/app_upgrader.dart`

### Other components

- **Reader or author**
- **Flutter Kanpur**
- **Shared article link**
- **Shorebird service**
- **App store**

## Connections

- Reader or author → App entry: opens app
- App entry → Routes: sets routes
- Routes → Home feed: navigates
- Routes → Search: navigates
- Routes → Authentication: navigates
- Routes → Profiles: navigates
- Routes → Communities: navigates
- Routes → Blog editor: navigates
- Shared article link → Article links: opens article
- Article links → Article detail: resolves article
- Home feed → Feed and filters: loads feed
- Feed and filters → Supabase: reads feed
- Article detail → Article engagement: loads engagement
- Article engagement → Supabase: reads and writes
- Article detail → Comments: loads and posts
- Comments → Supabase: reads and writes
- Authentication → Auth controller: submits credentials
- Auth controller → Supabase: authenticates
- Flutter Kanpur → Kanpur session sync: provides session
- Kanpur session sync → Supabase: creates session and profile
- Auth controller → Kanpur session sync: requests sync
- Profiles → Supabase: reads and updates
- Blog editor → Drafts and publishing: edits draft
- Drafts and publishing → Supabase: saves or publishes
- Communities → Supabase: loads community data
- Auth controller → Account deletion: requests deletion
- Account deletion → Supabase: deletes account and avatar
- App entry → Patch listener: checks patches
- Patch listener → Shorebird service: downloads patch
- App entry → Store upgrade checks: checks version
- Store upgrade checks → App store: prompts store update
