# vincedelmas/mylists architecture

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

## Overview

MyLists is a web platform for tracking movies, series, anime, manga, books, and games. A typical user discovers media, manages personal lists and progress, then explores activity, statistics, achievements, and social features. The graph also preserves the documented imports, upcoming releases, daily Moviedle, and authentication capabilities. The README and source index establish product scope and several client-side dependencies; many server implementations are unsampled, so their connections are shown only as unverified dashed links or omitted.

Main entry points: [`src/routes/_main/_private/search/route.tsx`](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/search/route.tsx) (Media search), [`src/lib/server/domain/imports`](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/imports) (Media imports), [`src/lib/client/react-query/query-options`](https://github.com/vincedelmas/mylists/tree/main/src/lib/client/react-query/query-options) (Query options), [`src/routes/_main/_private/continue/route.tsx`](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/continue/route.tsx) (Continue tracking)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_search["Media search<br/>[route.tsx]"]
  node_continue["Continue tracking<br/>[route.tsx]"]
end

subgraph group_media["Media tracking"]
  node_mediaui["Media list UI"]
  node_definitions["Media definitions"]
  node_ingestion["Media ingestion"]
  node_providers["Metadata providers"]
  node_tracking["Progress tracking"]
  node_imports["Media imports"]
end

subgraph group_insights["Insights and community"]
  node_activity["Activity history"]
  node_stats["Analytics and trends"]
  node_achievements["Achievements"]
  node_social["Social and taste"]
  node_moviedle["Daily Moviedle<br/>[route.tsx]"]
  node_wcf["Which Came First<br/>[route.tsx]"]
end

subgraph group_platform["Platform services"]
  node_auth["Authentication<br/>[use-auth.ts]"]
  node_authclient["Auth client<br/>[auth-client.ts]"]
  node_query["Query options"]
  node_database[("SQLite database")]
  node_transactions["Transaction context<br/>[async-storage.ts]"]
  node_admin["Admin tools"]
end

node_user(("User"))
node_externaldata["Metadata services"]
node_redis[("Redis cache")]

node_user -->|"searches media"| node_search
node_user -->|"manages session"| node_auth
node_auth -->|"signs out"| node_authclient
node_search -->|"loads search data"| node_query
node_user -->|"views progress"| node_continue
node_continue -->|"loads continue items"| node_query
node_search -->|"uses media configuration"| node_mediaui
node_mediaui -.->|"configures media types"| node_definitions
node_search -.->|"requests media details"| node_ingestion
node_ingestion -->|"fetches metadata"| node_providers
node_providers -.->|"calls providers"| node_externaldata
node_user -.->|"imports lists"| node_imports
node_user -.->|"records consumption"| node_activity
node_user -.->|"views analytics"| node_stats
node_stats -.->|"informs taste matching"| node_social
node_user -.->|"earns badges"| node_achievements
node_user -->|"plays daily game"| node_moviedle
node_user -->|"plays comparison game"| node_wcf
node_tracking -.->|"persists progress"| node_database
node_transactions -->|"runs transactions"| node_database
node_imports -.->|"applies imported items"| node_tracking
node_admin -.->|"manages import jobs"| node_imports
node_redis -.->|"caches data"| node_query

click node_search "https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/search/route.tsx"
click node_continue "https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/continue/route.tsx"
click node_auth "https://github.com/vincedelmas/mylists/blob/main/src/lib/client/hooks/use-auth.ts"
click node_authclient "https://github.com/vincedelmas/mylists/blob/main/src/lib/client/auth-client.ts"
click node_query "https://github.com/vincedelmas/mylists/tree/main/src/lib/client/react-query/query-options"
click node_mediaui "https://github.com/vincedelmas/mylists/tree/main/src/lib/client/components/media"
click node_definitions "https://github.com/vincedelmas/mylists/tree/main/src/lib/media-definitions"
click node_ingestion "https://github.com/vincedelmas/mylists/blob/main/src/lib/server/api-providers/media-ingestion.service.ts"
click node_providers "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/api-providers"
click node_tracking "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/media"
click node_imports "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/imports"
click node_activity "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/tracking"
click node_stats "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/stats"
click node_achievements "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/achievements"
click node_social "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/social"
click node_moviedle "https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_viewer/moviedle/route.tsx"
click node_wcf "https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_viewer/which-came-first/route.tsx"
click node_database "https://github.com/vincedelmas/mylists/tree/main/src/lib/server/database"
click node_transactions "https://github.com/vincedelmas/mylists/blob/main/src/lib/server/database/async-storage.ts"
click node_admin "https://github.com/vincedelmas/mylists/tree/main/src/routes/_admin/admin"

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_search,node_continue,node_user toneBlue
class node_mediaui,node_definitions,node_ingestion,node_providers,node_tracking,node_imports,node_redis toneAmber
class node_activity,node_stats,node_achievements,node_social,node_moviedle,node_wcf toneMint
class node_auth,node_authclient,node_query,node_database,node_transactions,node_admin toneRose
class node_externaldata toneIndigo
```

## Components

### User experience

- [Media search](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/search/route.tsx): `src/routes/_main/_private/search/route.tsx`
- [Continue tracking](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_private/continue/route.tsx): `src/routes/_main/_private/continue/route.tsx`

### Media tracking

- [Media list UI](https://github.com/vincedelmas/mylists/tree/main/src/lib/client/components/media): `src/lib/client/components/media`
- [Media definitions](https://github.com/vincedelmas/mylists/tree/main/src/lib/media-definitions): `src/lib/media-definitions`
- [Media ingestion](https://github.com/vincedelmas/mylists/blob/main/src/lib/server/api-providers/media-ingestion.service.ts): `src/lib/server/api-providers/media-ingestion.service.ts`
- [Metadata providers](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/api-providers): `src/lib/server/api-providers`
- [Progress tracking](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/media): `src/lib/server/domain/media`
- [Media imports](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/imports): `src/lib/server/domain/imports`

### Insights and community

- [Activity history](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/tracking): `src/lib/server/domain/tracking`
- [Analytics and trends](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/stats): `src/lib/server/domain/stats`
- [Achievements](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/achievements): `src/lib/server/domain/achievements`
- [Social and taste](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/domain/social): `src/lib/server/domain/social`
- [Daily Moviedle](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_viewer/moviedle/route.tsx): `src/routes/_main/_viewer/moviedle/route.tsx`
- [Which Came First](https://github.com/vincedelmas/mylists/blob/main/src/routes/_main/_viewer/which-came-first/route.tsx): `src/routes/_main/_viewer/which-came-first/route.tsx`

### Platform services

- [Authentication](https://github.com/vincedelmas/mylists/blob/main/src/lib/client/hooks/use-auth.ts): `src/lib/client/hooks/use-auth.ts`
- [Auth client](https://github.com/vincedelmas/mylists/blob/main/src/lib/client/auth-client.ts): `src/lib/client/auth-client.ts`
- [Query options](https://github.com/vincedelmas/mylists/tree/main/src/lib/client/react-query/query-options): `src/lib/client/react-query/query-options`
- [SQLite database](https://github.com/vincedelmas/mylists/tree/main/src/lib/server/database): `src/lib/server/database`
- [Transaction context](https://github.com/vincedelmas/mylists/blob/main/src/lib/server/database/async-storage.ts): `src/lib/server/database/async-storage.ts`
- [Admin tools](https://github.com/vincedelmas/mylists/tree/main/src/routes/_admin/admin): `src/routes/_admin/admin`

### Other components

- **User**
- **Metadata services**
- **Redis cache**

## Connections

- User → Media search: searches media
- User → Authentication: manages session (evidence: `src/lib/client/hooks/use-auth.ts`)
- Authentication → Auth client: signs out (evidence: `src/lib/client/hooks/use-auth.ts`)
- Media search → Query options: loads search data (evidence: `src/routes/_main/_private/search/route.tsx`)
- User → Continue tracking: views progress (evidence: `src/routes/_main/_private/continue/route.tsx`)
- Continue tracking → Query options: loads continue items (evidence: `src/routes/_main/_private/continue/route.tsx`)
- Media search → Media list UI: uses media configuration (evidence: `src/routes/_main/_private/search/route.tsx`)
- Media list UI → Media definitions: configures media types
- Media search → Media ingestion: requests media details
- Media ingestion → Metadata providers: fetches metadata (evidence: `src/lib/server/api-providers/media-ingestion.service.ts`)
- Metadata providers → Metadata services: calls providers
- User → Media imports: imports lists (evidence: `README.md`)
- User → Activity history: records consumption (evidence: `README.md`)
- User → Analytics and trends: views analytics (evidence: `README.md`)
- Analytics and trends → Social and taste: informs taste matching
- User → Achievements: earns badges (evidence: `README.md`)
- User → Daily Moviedle: plays daily game
- User → Which Came First: plays comparison game
- Progress tracking → SQLite database: persists progress
- Transaction context → SQLite database: runs transactions (evidence: `src/lib/server/database/async-storage.ts`)
- Media imports → Progress tracking: applies imported items
- Admin tools → Media imports: manages import jobs
- Redis cache → Query options: caches data (evidence: `README.md`)
