# bradleyoosterveen/wikwok architecture

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

- Interactive diagram: https://gitdiagram.com/bradleyoosterveen/wikwok
- Repository: https://github.com/bradleyoosterveen/wikwok

## Overview

WikWok is a Flutter app for discovering and reading Wikipedia articles through a swipe-oriented browsing experience. Its main documented journey is a user browsing randomly selected articles and opening one to read; the showcase also identifies sharing, a saved-article library, and settings. The tree indicates separate presentation, domain, data, and core layers, but their wiring is not shown in the sampled source. Dashed edges mark these documented capabilities where implementation relationships could not be verified.

Main entry points: [`lib/src/presentation/screens/articles_screen.dart`](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/articles_screen.dart) (Article browsing), [`lib/src/presentation/screens/article_screen.dart`](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/article_screen.dart) (Article reading), [`lib/src/presentation/pages/article_page.dart`](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/pages/article_page.dart) (Article page), [`lib/src/presentation/screens/saved_articles_screen.dart`](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/saved_articles_screen.dart) (Saved articles)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Presentation"]
  node_browse["Article browsing"]
  node_article["Article reading"]
  node_article_page["Article page<br/>[article_page.dart]"]
  node_saved["Saved articles"]
  node_settings["Settings screen"]
  node_sharing["Article sharing<br/>[url_launcher.dart]"]
  node_article_cubit["Article state<br/>[article_cubit.dart]"]
  node_save_cubit["Save state"]
end

subgraph group_domain["Domain"]
  node_article_model["Article model<br/>[article.dart]"]
  node_article_repository["Article repository"]
  node_settings_repository["Settings repository"]
end

subgraph group_data["Data"]
  node_wikipedia["Wikipedia service"]
  node_github["GitHub service"]
end

subgraph group_core["Core"]
  node_network["Network configuration<br/>[network.dart]"]
  node_app_entry["App entry<br/>[main.dart]"]
end

node_user(("User"))

node_user -.->|"explores"| node_browse
node_browse -.->|"opens article"| node_article
node_browse -.->|"discovers articles"| node_wikipedia
node_article -.->|"reads"| node_article_page
node_user -.->|"views library"| node_saved
node_user -.->|"configures"| node_settings
node_user -.->|"shares article"| node_sharing

click node_browse "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/articles_screen.dart"
click node_article "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/article_screen.dart"
click node_article_page "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/pages/article_page.dart"
click node_saved "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/saved_articles_screen.dart"
click node_settings "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/settings_screen.dart"
click node_sharing "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/widgets/url_launcher.dart"
click node_article_cubit "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/cubits/article_cubit.dart"
click node_save_cubit "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/cubits/save_article_cubit.dart"
click node_article_model "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/models/article.dart"
click node_article_repository "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/repositories/article_repository.dart"
click node_settings_repository "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/repositories/settings_repository.dart"
click node_wikipedia "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/data/wikipedia/wikipedia_service.dart"
click node_github "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/data/github/github_service.dart"
click node_network "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/core/constants/network.dart"
click node_app_entry "https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/main.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_browse,node_article,node_article_page,node_saved,node_settings,node_sharing,node_article_cubit,node_save_cubit,node_user toneBlue
class node_article_model,node_article_repository,node_settings_repository toneAmber
class node_wikipedia,node_github toneMint
class node_network,node_app_entry toneRose
```

## Components

### Presentation

- [Article browsing](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/articles_screen.dart): `lib/src/presentation/screens/articles_screen.dart`
- [Article reading](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/article_screen.dart): `lib/src/presentation/screens/article_screen.dart`
- [Article page](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/pages/article_page.dart): `lib/src/presentation/pages/article_page.dart`
- [Saved articles](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/saved_articles_screen.dart): `lib/src/presentation/screens/saved_articles_screen.dart`
- [Settings screen](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/screens/settings_screen.dart): `lib/src/presentation/screens/settings_screen.dart`
- [Article sharing](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/widgets/url_launcher.dart): `lib/src/presentation/widgets/url_launcher.dart`
- [Article state](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/cubits/article_cubit.dart): `lib/src/presentation/cubits/article_cubit.dart`
- [Save state](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/presentation/cubits/save_article_cubit.dart): `lib/src/presentation/cubits/save_article_cubit.dart`

### Domain

- [Article model](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/models/article.dart): `lib/src/domain/models/article.dart`
- [Article repository](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/repositories/article_repository.dart): `lib/src/domain/repositories/article_repository.dart`
- [Settings repository](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/domain/repositories/settings_repository.dart): `lib/src/domain/repositories/settings_repository.dart`

### Data

- [Wikipedia service](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/data/wikipedia/wikipedia_service.dart): `lib/src/data/wikipedia/wikipedia_service.dart`
- [GitHub service](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/data/github/github_service.dart): `lib/src/data/github/github_service.dart`

### Core

- [Network configuration](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/core/constants/network.dart): `lib/src/core/constants/network.dart`
- [App entry](https://github.com/bradleyoosterveen/wikwok/blob/master/lib/src/main.dart): `lib/src/main.dart`

### Other components

- **User**

## Connections

- User → Article browsing: explores (evidence: `README.md`)
- Article browsing → Article reading: opens article (evidence: `README.md`)
- Article browsing → Wikipedia service: discovers articles (evidence: `README.md`)
- Article reading → Article page: reads (evidence: `README.md`)
- User → Saved articles: views library (evidence: `README.md`)
- User → Settings screen: configures (evidence: `README.md`)
- User → Article sharing: shares article (evidence: `README.md`)
