# naxxod/livr-moi architecture

> Architecture diagram of the GitHub repository naxxod/livr-moi, 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/naxxod/livr-moi
- Repository: https://github.com/naxxod/livr-moi

## Overview

Livr'émoi is a book-discovery and favorites application. Readers browse a locally defined catalogue, filter or search it, open book and series details, and—after registering or signing in—manage favorites. The React client also offers a featured home page and theme switching; a Flask API handles sessions and favorite operations backed by SQLite. The README describes only the Vite template, so product capabilities are inferred from the source index and excerpts. Some page and API internals were not sampled; omitted links reflect that evidence limit.

Main entry points: [`src/App.jsx`](https://github.com/naxxod/livr-moi/blob/main/src/App.jsx) (Route dispatcher), [`src/pages/Catalogue.jsx`](https://github.com/naxxod/livr-moi/blob/main/src/pages/Catalogue.jsx) (Search catalogue), [`src/pages/Home.jsx`](https://github.com/naxxod/livr-moi/blob/main/src/pages/Home.jsx) (Home and featured), [`src/pages/BookDetail.jsx`](https://github.com/naxxod/livr-moi/blob/main/src/pages/BookDetail.jsx) (Book details)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Route dispatcher<br/>[App.jsx]"]
  node_entry["Entry screen<br/>[Entry.jsx]"]
  node_navbar["Search and navigation<br/>[NavBar.jsx]"]
  node_userbar["User navigation<br/>[UserBar.jsx]"]
  node_http["HTTP client<br/>[api.js]"]
end

subgraph group_discovery["Book discovery"]
  node_home["Home and featured<br/>[Home.jsx]"]
  node_catalogue["Search catalogue<br/>[Catalogue.jsx]"]
  node_detail["Book details<br/>[BookDetail.jsx]"]
  node_bookdata["Book catalogue data<br/>[data.js]"]
  node_cards["Book cards<br/>[BookCard.jsx]"]
  node_rows["Book rows<br/>[BookRow.jsx]"]
  node_genre["Genre filter<br/>[GenreFilter.jsx]"]
end

subgraph group_identity["Identity and favorites"]
  node_favourites["Favorites screen<br/>[Favoris.jsx]"]
  node_authpages["Sign-in and signup<br/>[Connexion.jsx]"]
  node_signup["Registration screen<br/>[Inscription.jsx]"]
  node_authcontext["Session state<br/>[AuthContext.jsx]"]
  node_favoritehook["Favorites state<br/>[useFavorites.js]"]
end

subgraph group_server["Flask and storage"]
  node_authapi["Authentication endpoints<br/>[auth.py]"]
  node_favoriteapi["Favorite endpoints<br/>[favoris.py]"]
  node_dbaccess["Database access<br/>[db.py]"]
  node_sqlite[("SQLite database<br/>[livremoi.sqlite]")]
end

node_reader(("Reader"))
node_covers["Open Library covers"]

node_reader -->|"opens"| node_app
node_app -->|"routes to"| node_entry
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_catalogue
node_app -->|"routes to"| node_favourites
node_app -->|"routes to"| node_authpages
node_app -->|"routes to"| node_signup
node_app -->|"routes to"| node_detail
node_home -->|"reads"| node_bookdata
node_catalogue -->|"filters"| node_bookdata
node_catalogue -->|"renders"| node_genre
node_catalogue -->|"renders"| node_cards
node_home -->|"renders"| node_rows
node_rows -->|"renders"| node_cards
node_detail -->|"reads"| node_bookdata
node_favourites -->|"reads"| node_bookdata
node_catalogue -->|"renders"| node_navbar
node_home -->|"renders"| node_navbar
node_detail -->|"renders"| node_navbar
node_favourites -->|"renders"| node_navbar
node_catalogue -->|"renders"| node_userbar
node_home -->|"renders"| node_userbar
node_detail -->|"renders"| node_userbar
node_favourites -->|"renders"| node_userbar
node_navbar -->|"navigates"| node_catalogue
node_authpages -->|"uses"| node_authcontext
node_signup -->|"uses"| node_authcontext
node_authcontext -->|"calls"| node_http
node_authcontext -->|"requests session"| node_authapi
node_favoritehook -->|"reads user"| node_authcontext
node_favoritehook -->|"calls"| node_http
node_favoritehook -->|"requests favorites"| node_favoriteapi
node_authapi -->|"queries"| node_dbaccess
node_favoriteapi -->|"uses"| node_dbaccess
node_favoriteapi -->|"checks login"| node_authapi
node_dbaccess -.->|"connects"| node_sqlite
node_home -->|"loads covers"| node_covers
node_detail -->|"loads covers"| node_covers
node_cards -->|"loads covers"| node_covers

click node_app "https://github.com/naxxod/livr-moi/blob/main/src/App.jsx"
click node_entry "https://github.com/naxxod/livr-moi/blob/main/src/pages/Entry.jsx"
click node_home "https://github.com/naxxod/livr-moi/blob/main/src/pages/Home.jsx"
click node_catalogue "https://github.com/naxxod/livr-moi/blob/main/src/pages/Catalogue.jsx"
click node_detail "https://github.com/naxxod/livr-moi/blob/main/src/pages/BookDetail.jsx"
click node_favourites "https://github.com/naxxod/livr-moi/blob/main/src/pages/Favoris.jsx"
click node_bookdata "https://github.com/naxxod/livr-moi/blob/main/src/data.js"
click node_cards "https://github.com/naxxod/livr-moi/blob/main/src/components/BookCard.jsx"
click node_rows "https://github.com/naxxod/livr-moi/blob/main/src/components/BookRow.jsx"
click node_genre "https://github.com/naxxod/livr-moi/blob/main/src/components/GenreFilter.jsx"
click node_navbar "https://github.com/naxxod/livr-moi/blob/main/src/components/NavBar.jsx"
click node_userbar "https://github.com/naxxod/livr-moi/blob/main/src/components/UserBar.jsx"
click node_authpages "https://github.com/naxxod/livr-moi/blob/main/src/pages/Connexion.jsx"
click node_signup "https://github.com/naxxod/livr-moi/blob/main/src/pages/Inscription.jsx"
click node_authcontext "https://github.com/naxxod/livr-moi/blob/main/src/contexts/AuthContext.jsx"
click node_favoritehook "https://github.com/naxxod/livr-moi/blob/main/src/hooks/useFavorites.js"
click node_http "https://github.com/naxxod/livr-moi/blob/main/src/api.js"
click node_authapi "https://github.com/naxxod/livr-moi/blob/main/api/auth.py"
click node_favoriteapi "https://github.com/naxxod/livr-moi/blob/main/api/favoris.py"
click node_dbaccess "https://github.com/naxxod/livr-moi/blob/main/api/db.py"
click node_sqlite "https://github.com/naxxod/livr-moi/blob/main/instance/livremoi.sqlite"

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_entry,node_navbar,node_userbar,node_http toneBlue
class node_home,node_catalogue,node_detail,node_bookdata,node_cards,node_rows,node_genre toneAmber
class node_favourites,node_authpages,node_signup,node_authcontext,node_favoritehook toneMint
class node_authapi,node_favoriteapi,node_dbaccess,node_sqlite toneRose
class node_reader,node_covers toneIndigo
```

## Components

### React client

- [Route dispatcher](https://github.com/naxxod/livr-moi/blob/main/src/App.jsx): `src/App.jsx`
- [Entry screen](https://github.com/naxxod/livr-moi/blob/main/src/pages/Entry.jsx): `src/pages/Entry.jsx`
- [Search and navigation](https://github.com/naxxod/livr-moi/blob/main/src/components/NavBar.jsx): `src/components/NavBar.jsx`
- [User navigation](https://github.com/naxxod/livr-moi/blob/main/src/components/UserBar.jsx): `src/components/UserBar.jsx`
- [HTTP client](https://github.com/naxxod/livr-moi/blob/main/src/api.js): `src/api.js`

### Book discovery

- [Home and featured](https://github.com/naxxod/livr-moi/blob/main/src/pages/Home.jsx): `src/pages/Home.jsx`
- [Search catalogue](https://github.com/naxxod/livr-moi/blob/main/src/pages/Catalogue.jsx): `src/pages/Catalogue.jsx`
- [Book details](https://github.com/naxxod/livr-moi/blob/main/src/pages/BookDetail.jsx): `src/pages/BookDetail.jsx`
- [Book catalogue data](https://github.com/naxxod/livr-moi/blob/main/src/data.js): `src/data.js`
- [Book cards](https://github.com/naxxod/livr-moi/blob/main/src/components/BookCard.jsx): `src/components/BookCard.jsx`
- [Book rows](https://github.com/naxxod/livr-moi/blob/main/src/components/BookRow.jsx): `src/components/BookRow.jsx`
- [Genre filter](https://github.com/naxxod/livr-moi/blob/main/src/components/GenreFilter.jsx): `src/components/GenreFilter.jsx`

### Identity and favorites

- [Favorites screen](https://github.com/naxxod/livr-moi/blob/main/src/pages/Favoris.jsx): `src/pages/Favoris.jsx`
- [Sign-in and signup](https://github.com/naxxod/livr-moi/blob/main/src/pages/Connexion.jsx): `src/pages/Connexion.jsx`
- [Registration screen](https://github.com/naxxod/livr-moi/blob/main/src/pages/Inscription.jsx): `src/pages/Inscription.jsx`
- [Session state](https://github.com/naxxod/livr-moi/blob/main/src/contexts/AuthContext.jsx): `src/contexts/AuthContext.jsx`
- [Favorites state](https://github.com/naxxod/livr-moi/blob/main/src/hooks/useFavorites.js): `src/hooks/useFavorites.js`

### Flask and storage

- [Authentication endpoints](https://github.com/naxxod/livr-moi/blob/main/api/auth.py): `api/auth.py`
- [Favorite endpoints](https://github.com/naxxod/livr-moi/blob/main/api/favoris.py): `api/favoris.py`
- [Database access](https://github.com/naxxod/livr-moi/blob/main/api/db.py): `api/db.py`
- [SQLite database](https://github.com/naxxod/livr-moi/blob/main/instance/livremoi.sqlite): `instance/livremoi.sqlite`

### Other components

- **Reader**
- **Open Library covers**

## Connections

- Reader → Route dispatcher: opens (evidence: `src/App.jsx`)
- Route dispatcher → Entry screen: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Home and featured: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Search catalogue: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Favorites screen: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Sign-in and signup: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Registration screen: routes to (evidence: `src/App.jsx`)
- Route dispatcher → Book details: routes to (evidence: `src/App.jsx`)
- Home and featured → Book catalogue data: reads (evidence: `src/pages/Home.jsx`)
- Search catalogue → Book catalogue data: filters (evidence: `src/pages/Catalogue.jsx`)
- Search catalogue → Genre filter: renders (evidence: `src/pages/Catalogue.jsx`)
- Search catalogue → Book cards: renders (evidence: `src/pages/Catalogue.jsx`)
- Home and featured → Book rows: renders (evidence: `src/pages/Home.jsx`)
- Book rows → Book cards: renders (evidence: `src/components/BookRow.jsx`)
- Book details → Book catalogue data: reads (evidence: `src/pages/BookDetail.jsx`)
- Favorites screen → Book catalogue data: reads (evidence: `src/pages/Favoris.jsx`)
- Search catalogue → Search and navigation: renders (evidence: `src/pages/Catalogue.jsx`)
- Home and featured → Search and navigation: renders (evidence: `src/pages/Home.jsx`)
- Book details → Search and navigation: renders (evidence: `src/pages/BookDetail.jsx`)
- Favorites screen → Search and navigation: renders (evidence: `src/pages/Favoris.jsx`)
- Search catalogue → User navigation: renders (evidence: `src/pages/Catalogue.jsx`)
- Home and featured → User navigation: renders (evidence: `src/pages/Home.jsx`)
- Book details → User navigation: renders (evidence: `src/pages/BookDetail.jsx`)
- Favorites screen → User navigation: renders (evidence: `src/pages/Favoris.jsx`)
- Search and navigation → Search catalogue: navigates (evidence: `src/components/NavBar.jsx`)
- Sign-in and signup → Session state: uses (evidence: `src/pages/Connexion.jsx`)
- Registration screen → Session state: uses (evidence: `src/pages/Inscription.jsx`)
- Session state → HTTP client: calls (evidence: `src/contexts/AuthContext.jsx`)
- Session state → Authentication endpoints: requests session (evidence: `src/contexts/AuthContext.jsx`)
- Favorites state → Session state: reads user (evidence: `src/hooks/useFavorites.js`)
- Favorites state → HTTP client: calls (evidence: `src/hooks/useFavorites.js`)
- Favorites state → Favorite endpoints: requests favorites (evidence: `src/hooks/useFavorites.js`)
- Authentication endpoints → Database access: queries (evidence: `api/auth.py`)
- Favorite endpoints → Database access: uses (evidence: `api/favoris.py`)
- Favorite endpoints → Authentication endpoints: checks login (evidence: `api/favoris.py`)
- Database access → SQLite database: connects
- Home and featured → Open Library covers: loads covers (evidence: `src/pages/Home.jsx`)
- Book details → Open Library covers: loads covers (evidence: `src/pages/BookDetail.jsx`)
- Book cards → Open Library covers: loads covers (evidence: `src/components/BookCard.jsx`)
