# mosasauroidea/gazellepw architecture

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

- Interactive diagram: https://gitdiagram.com/mosasauroidea/gazellepw
- Repository: https://github.com/mosasauroidea/gazellepw

## Overview

GazellePW is a movie-focused private BitTorrent tracker. Members register or sign in, discover movie releases, and interact with the torrent catalog; upload workflows enrich releases with movie metadata and media details. Forums, requests, collages, and notifications support the community, while staff tools and scheduled tasks operate the site. The tree and README identify additional product capabilities, but many implementations and their wiring were not sampled, so the graph shows those as distinct subsystems without asserting uncertain call paths.

Main entry points: [`app/DB.php`](https://github.com/mosasauroidea/gazellepw/blob/main/app/DB.php) (Application database), [`app/Upload.php`](https://github.com/mosasauroidea/gazellepw/blob/main/app/Upload.php) (Release upload), [`classes/notificationsmanager.class.php`](https://github.com/mosasauroidea/gazellepw/blob/main/classes/notificationsmanager.class.php) (Notifications), [`sections/login/index.php`](https://github.com/mosasauroidea/gazellepw/blob/main/sections/login/index.php) (Login and registration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web access"]
  node_entry["Web entry<br/>[index.php]"]
  node_login["Login and registration<br/>[index.php]"]
  node_sessions["Sessions<br/>[Session.php]"]
end

subgraph group_catalog["Movie catalog"]
  node_browse["Browse and search<br/>[browse.php]"]
  node_torrent["Torrent catalog<br/>[torrents.class.php]"]
  node_upload["Release upload<br/>[Upload.php]"]
  node_movieinfo["Movie metadata<br/>[omdb.class.php]"]
  node_mediainfo["Media details<br/>[MediaInfo.php]"]
  node_slots["Torrent editions<br/>[TorrentSlot.php]"]
  node_images["Image storage<br/>[image.class.php]"]
end

subgraph group_community["Community"]
  node_requests["Requests and bounties<br/>[index.php]"]
  node_forums["Forums<br/>[index.php]"]
  node_forumdata["Forum response<br/>[main.php]"]
  node_collages["Movie collages<br/>[index.php]"]
  node_notifications["Notifications"]
  node_notificationview["Notification display"]
end

subgraph group_operations["Site operations"]
  node_database[("Application database<br/>[DB.php]")]
  node_cache["Cache<br/>[cache.class.php]"]
  node_staff["Staff tools<br/>[index.php]"]
  node_scheduler["Scheduled tasks<br/>[index.php]"]
end

node_member(("Member"))
node_minio["Minio storage<br/>[minio.class.php]"]

node_member -->|"requests pages"| node_entry
node_entry -->|"serves access"| node_login
node_login -->|"reads and writes"| node_database
node_login -->|"updates sessions"| node_cache
node_member -->|"discovers releases"| node_browse
node_member -->|"submits release"| node_upload
node_upload -.->|"fetches metadata"| node_movieinfo
node_upload -->|"parses media"| node_mediainfo
node_upload -->|"records edition"| node_slots
node_images -.->|"stores images"| node_minio
node_member -->|"creates requests"| node_requests
node_member -->|"participates"| node_forums
node_forumdata -->|"queries forum data"| node_database
node_member -->|"curates titles"| node_collages
node_notifications -->|"formats notices"| node_notificationview
node_notifications -->|"reads and writes"| node_database
node_notifications -->|"caches notices"| node_cache
node_staff -->|"manages site data"| node_database
node_scheduler -->|"updates site data"| node_database

click node_entry "https://github.com/mosasauroidea/gazellepw/blob/main/public/index.php"
click node_login "https://github.com/mosasauroidea/gazellepw/blob/main/sections/login/index.php"
click node_sessions "https://github.com/mosasauroidea/gazellepw/blob/main/app/Session.php"
click node_browse "https://github.com/mosasauroidea/gazellepw/blob/main/sections/requests/browse.php"
click node_torrent "https://github.com/mosasauroidea/gazellepw/blob/main/classes/torrents.class.php"
click node_upload "https://github.com/mosasauroidea/gazellepw/blob/main/app/Upload.php"
click node_movieinfo "https://github.com/mosasauroidea/gazellepw/blob/main/classes/omdb.class.php"
click node_mediainfo "https://github.com/mosasauroidea/gazellepw/blob/main/app/Torrent/MediaInfo.php"
click node_slots "https://github.com/mosasauroidea/gazellepw/blob/main/app/Torrent/TorrentSlot.php"
click node_images "https://github.com/mosasauroidea/gazellepw/blob/main/classes/image.class.php"
click node_minio "https://github.com/mosasauroidea/gazellepw/blob/main/classes/minio.class.php"
click node_requests "https://github.com/mosasauroidea/gazellepw/blob/main/sections/requests/index.php"
click node_forums "https://github.com/mosasauroidea/gazellepw/blob/main/sections/forums/index.php"
click node_forumdata "https://github.com/mosasauroidea/gazellepw/blob/main/sections/ajax/forum/main.php"
click node_collages "https://github.com/mosasauroidea/gazellepw/blob/main/sections/collages/index.php"
click node_notifications "https://github.com/mosasauroidea/gazellepw/blob/main/classes/notificationsmanager.class.php"
click node_notificationview "https://github.com/mosasauroidea/gazellepw/blob/main/classes/notificationsmanagerview.class.php"
click node_database "https://github.com/mosasauroidea/gazellepw/blob/main/app/DB.php"
click node_cache "https://github.com/mosasauroidea/gazellepw/blob/main/classes/cache.class.php"
click node_staff "https://github.com/mosasauroidea/gazellepw/blob/main/sections/tools/index.php"
click node_scheduler "https://github.com/mosasauroidea/gazellepw/blob/main/sections/schedule/index.php"

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_entry,node_login,node_sessions toneBlue
class node_browse,node_torrent,node_upload,node_movieinfo,node_mediainfo,node_slots,node_images,node_minio toneAmber
class node_requests,node_forums,node_forumdata,node_collages,node_notifications,node_notificationview toneMint
class node_database,node_cache,node_staff,node_scheduler toneRose
class node_member toneIndigo
```

## Components

### Web access

- [Web entry](https://github.com/mosasauroidea/gazellepw/blob/main/public/index.php): `public/index.php`
- [Login and registration](https://github.com/mosasauroidea/gazellepw/blob/main/sections/login/index.php): `sections/login/index.php`
- [Sessions](https://github.com/mosasauroidea/gazellepw/blob/main/app/Session.php): `app/Session.php`

### Movie catalog

- [Browse and search](https://github.com/mosasauroidea/gazellepw/blob/main/sections/requests/browse.php): `sections/requests/browse.php`
- [Torrent catalog](https://github.com/mosasauroidea/gazellepw/blob/main/classes/torrents.class.php): `classes/torrents.class.php`
- [Release upload](https://github.com/mosasauroidea/gazellepw/blob/main/app/Upload.php): `app/Upload.php`
- [Movie metadata](https://github.com/mosasauroidea/gazellepw/blob/main/classes/omdb.class.php): `classes/omdb.class.php`
- [Media details](https://github.com/mosasauroidea/gazellepw/blob/main/app/Torrent/MediaInfo.php): `app/Torrent/MediaInfo.php`
- [Torrent editions](https://github.com/mosasauroidea/gazellepw/blob/main/app/Torrent/TorrentSlot.php): `app/Torrent/TorrentSlot.php`
- [Image storage](https://github.com/mosasauroidea/gazellepw/blob/main/classes/image.class.php): `classes/image.class.php`

### Community

- [Requests and bounties](https://github.com/mosasauroidea/gazellepw/blob/main/sections/requests/index.php): `sections/requests/index.php`
- [Forums](https://github.com/mosasauroidea/gazellepw/blob/main/sections/forums/index.php): `sections/forums/index.php`
- [Forum response](https://github.com/mosasauroidea/gazellepw/blob/main/sections/ajax/forum/main.php): `sections/ajax/forum/main.php`
- [Movie collages](https://github.com/mosasauroidea/gazellepw/blob/main/sections/collages/index.php): `sections/collages/index.php`
- [Notifications](https://github.com/mosasauroidea/gazellepw/blob/main/classes/notificationsmanager.class.php): `classes/notificationsmanager.class.php`
- [Notification display](https://github.com/mosasauroidea/gazellepw/blob/main/classes/notificationsmanagerview.class.php): `classes/notificationsmanagerview.class.php`

### Site operations

- [Application database](https://github.com/mosasauroidea/gazellepw/blob/main/app/DB.php): `app/DB.php`
- [Cache](https://github.com/mosasauroidea/gazellepw/blob/main/classes/cache.class.php): `classes/cache.class.php`
- [Staff tools](https://github.com/mosasauroidea/gazellepw/blob/main/sections/tools/index.php): `sections/tools/index.php`
- [Scheduled tasks](https://github.com/mosasauroidea/gazellepw/blob/main/sections/schedule/index.php): `sections/schedule/index.php`

### Other components

- **Member**
- [Minio storage](https://github.com/mosasauroidea/gazellepw/blob/main/classes/minio.class.php): `classes/minio.class.php`

## Connections

- Member → Web entry: requests pages
- Web entry → Login and registration: serves access
- Login and registration → Application database: reads and writes
- Login and registration → Cache: updates sessions
- Member → Browse and search: discovers releases
- Member → Release upload: submits release
- Release upload → Movie metadata: fetches metadata
- Release upload → Media details: parses media
- Release upload → Torrent editions: records edition
- Image storage → Minio storage: stores images
- Member → Requests and bounties: creates requests
- Member → Forums: participates
- Forum response → Application database: queries forum data
- Member → Movie collages: curates titles
- Notifications → Notification display: formats notices
- Notifications → Application database: reads and writes
- Notifications → Cache: caches notices
- Staff tools → Application database: manages site data
- Scheduled tasks → Application database: updates site data
