# blazertweaks/aidoku-pt-br-sources architecture

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

- Interactive diagram: https://gitdiagram.com/blazertweaks/aidoku-pt-br-sources
- Repository: https://github.com/blazertweaks/aidoku-pt-br-sources

## Overview

This repository supplies Brazilian Portuguese manga sources for Aidoku: users browse or search a source, open a title to retrieve details and chapters, then request chapter pages. The four source crates are independent adapters—MangaFlix uses an API, while the other listed sources use website requests. The tree also contains reusable source templates and a small public-facing site. Template capabilities are documented by their module paths, but the excerpts do not establish which source crates use them at runtime.

Main entry points: [`templates/libgroup/src/lib.rs`](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/lib.rs) (API source framework), [`templates/libgroup/src/cdn/mod.rs`](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/cdn/mod.rs) (Image server lookup), [`sources/pt-br.mangaflix/src/lib.rs`](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.mangaflix/src/lib.rs) (MangaFlix adapter), [`sources/pt-br.tsundoku/src/lib.rs`](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.tsundoku/src/lib.rs) (Tsundoku adapter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Aidoku Sources"]
  node_mangaflix["MangaFlix adapter<br/>[lib.rs]"]
  node_tsundoku["Tsundoku adapter<br/>[lib.rs]"]
  node_ninja["Ninja Comics adapter<br/>[lib.rs]"]
  node_ler["Ler Mangas adapter<br/>[lib.rs]"]
end

subgraph group_templates["Source Templates"]
  node_libgroup["API source framework<br/>[lib.rs]"]
  node_auth["Authentication<br/>[mod.rs]"]
  node_cdn["Image server lookup<br/>[mod.rs]"]
  node_filters["Filter processing<br/>[mod.rs]"]
  node_endpoints["API URL builder<br/>[mod.rs]"]
  node_wpcomics["WordPress framework<br/>[lib.rs]"]
  node_madtheme["MadTheme framework<br/>[lib.rs]"]
end

subgraph group_site["Public Site"]
  node_public_page["Source-list site<br/>[index.html]"]
  node_public_script["Site behavior<br/>[script.js]"]
  node_source_list["Source list metadata<br/>[source.json]"]
end

node_aidoku(("Aidoku app"))
node_manga_api{{"MangaFlix API"}}
node_manga_sites{{"Manga websites"}}

node_aidoku -->|"requests source data"| node_mangaflix
node_aidoku -->|"requests source data"| node_tsundoku
node_aidoku -->|"requests source data"| node_ninja
node_aidoku -->|"requests source data"| node_ler
node_mangaflix -->|"requests API"| node_manga_api
node_manga_api -->|"returns manga and pages"| node_mangaflix
node_tsundoku -->|"requests pages"| node_manga_sites
node_ninja -->|"requests pages"| node_manga_sites
node_ler -->|"requests pages"| node_manga_sites
node_manga_sites -->|"returns site content"| node_tsundoku
node_manga_sites -->|"returns site content"| node_ninja
node_manga_sites -->|"returns site content"| node_ler
node_public_page -->|"loads behavior"| node_public_script
node_public_script -.->|"reads metadata"| node_source_list
node_libgroup -->|"provides auth module"| node_auth
node_libgroup -->|"provides image lookup"| node_cdn
node_libgroup -->|"provides filter module"| node_filters
node_libgroup -->|"provides URL builder"| node_endpoints
node_auth -->|"builds auth URL"| node_endpoints
node_cdn -->|"sends authenticated request"| node_auth
node_cdn -->|"builds constants URL"| node_endpoints
node_wpcomics -.->|"requests site content"| node_manga_sites
node_madtheme -.->|"requests site content"| node_manga_sites

click node_mangaflix "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.mangaflix/src/lib.rs"
click node_tsundoku "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.tsundoku/src/lib.rs"
click node_ninja "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.ninjacomics/src/lib.rs"
click node_ler "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.lermangas/src/lib.rs"
click node_libgroup "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/lib.rs"
click node_auth "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/auth/mod.rs"
click node_cdn "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/cdn/mod.rs"
click node_filters "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/filters/mod.rs"
click node_endpoints "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/endpoints/mod.rs"
click node_wpcomics "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/wpcomics/src/lib.rs"
click node_madtheme "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/madtheme/src/lib.rs"
click node_public_page "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/public/index.html"
click node_public_script "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/public/script.js"
click node_source_list "https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/source.json"

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_mangaflix,node_tsundoku,node_ninja,node_ler toneBlue
class node_libgroup,node_auth,node_cdn,node_filters,node_endpoints,node_wpcomics,node_madtheme toneAmber
class node_public_page,node_public_script,node_source_list,node_manga_api toneMint
class node_aidoku,node_manga_sites toneIndigo
```

## Components

### Aidoku Sources

- [MangaFlix adapter](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.mangaflix/src/lib.rs): `sources/pt-br.mangaflix/src/lib.rs`
- [Tsundoku adapter](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.tsundoku/src/lib.rs): `sources/pt-br.tsundoku/src/lib.rs`
- [Ninja Comics adapter](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.ninjacomics/src/lib.rs): `sources/pt-br.ninjacomics/src/lib.rs`
- [Ler Mangas adapter](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/sources/pt-br.lermangas/src/lib.rs): `sources/pt-br.lermangas/src/lib.rs`

### Source Templates

- [API source framework](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/lib.rs): `templates/libgroup/src/lib.rs`
- [Authentication](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/auth/mod.rs): `templates/libgroup/src/auth/mod.rs`
- [Image server lookup](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/cdn/mod.rs): `templates/libgroup/src/cdn/mod.rs`
- [Filter processing](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/filters/mod.rs): `templates/libgroup/src/filters/mod.rs`
- [API URL builder](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/libgroup/src/endpoints/mod.rs): `templates/libgroup/src/endpoints/mod.rs`
- [WordPress framework](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/wpcomics/src/lib.rs): `templates/wpcomics/src/lib.rs`
- [MadTheme framework](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/templates/madtheme/src/lib.rs): `templates/madtheme/src/lib.rs`

### Public Site

- [Source-list site](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/public/index.html): `public/index.html`
- [Site behavior](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/public/script.js): `public/script.js`
- [Source list metadata](https://github.com/blazertweaks/aidoku-pt-br-sources/blob/main/source.json): `source.json`

### Other components

- **Aidoku app**
- **MangaFlix API**
- **Manga websites**

## Connections

- Aidoku app → MangaFlix adapter: requests source data
- Aidoku app → Tsundoku adapter: requests source data
- Aidoku app → Ninja Comics adapter: requests source data
- Aidoku app → Ler Mangas adapter: requests source data
- MangaFlix adapter → MangaFlix API: requests API
- MangaFlix API → MangaFlix adapter: returns manga and pages
- Tsundoku adapter → Manga websites: requests pages
- Ninja Comics adapter → Manga websites: requests pages
- Ler Mangas adapter → Manga websites: requests pages
- Manga websites → Tsundoku adapter: returns site content
- Manga websites → Ninja Comics adapter: returns site content
- Manga websites → Ler Mangas adapter: returns site content
- Source-list site → Site behavior: loads behavior
- Site behavior → Source list metadata: reads metadata
- API source framework → Authentication: provides auth module
- API source framework → Image server lookup: provides image lookup
- API source framework → Filter processing: provides filter module
- API source framework → API URL builder: provides URL builder
- Authentication → API URL builder: builds auth URL
- Image server lookup → Authentication: sends authenticated request
- Image server lookup → API URL builder: builds constants URL
- WordPress framework → Manga websites: requests site content
- MadTheme framework → Manga websites: requests site content
