How ericklimas/anime-website works
AniProject is an anime and manga discovery and consumption website backed by a Next.js frontend and an Express API. Users discover and filter titles, open media details, then watch episodes or read chapters; accounts also support lists, progress, and notifications. The backend aggregates AniList, Consumet, Aniwatch, and an offline anime catalog, with Redis caching. README-documented account and notification capabilities are included, though their full runtime wiring was not sampled; those links are shown as unverified where appropriate.
Main entry points: server.js Express API server · index.tsx Login and settings · redisUtils.js Redis cache · mediasByParamsController.js Media catalog queries
Components 27
Discovery and news
- Home feed
frontend/app/page.tsx - Search and filters
frontend/app/search/page.tsx - News feed
frontend/app/news/page.tsx
Media consumption
- Media details
frontend/app/media/[id]/page.tsx - Episode playback
frontend/app/watch/[id]/page.tsx - Chapter reader
frontend/app/read/[id]/page.tsx
Accounts and progress
- Login and settings
frontend/app/components/UserLoginModal/index.tsx - Favourites and lists
frontend/app/my-lists/page.tsx - Viewing progress
frontend/app/components/Buttons/MarkEpisodeAsWatched/index.tsx - Episode notifications
frontend/app/components/Buttons/AddToNotification/index.tsx
Backend API
- Express API server
backend/server.js - Search routes
backend/routes/searchRoute.js - Search providers
backend/controllers/search/anilist/searchController.js - Media catalog queries
backend/controllers/medias/anilist/mediasByParamsController.js - Media information
backend/controllers/mediaInfo/anilist/mediaInfoController.js - Episode sources
backend/controllers/episodes/aniwatch/episodesController.js - Chapter sources
backend/controllers/chapters/consumet/mangadex/chaptersController.js - News routes
backend/routes/newsRoute.js - IMDb metadata
backend/controllers/imdb/consumet/imdbController.js - AniList query definitions
backend/controllers/anilistUtils/queryConstants.js - Query snippets
backend/controllers/anilistUtils/querySnippetsByCategory.js
External data and state
- Redis cache
backend/controllers/redisUtils.js - AniList API
- Consumet API
- Aniwatch API
- Firebase services
frontend/app/firebaseApp.ts
Other components
- Visitor
Connections 34
- Visitor → Home feed: opens
README.md - Visitor → Search and filters: searches
README.md - Visitor → News feed: browses
README.md - Visitor → Media details: selects title
README.md - Media details → Episode playback: opens episodes
README.md - Media details → Chapter reader: opens chapters
README.md - Visitor → Login and settings: signs in
README.md - Login and settings → Favourites and lists: manages titles
README.md - Login and settings → Viewing progress: tracks episodes
README.md - Login and settings → Episode notifications: opts into
README.md - Home feed → AniList API: requests media
frontend/app/page.tsx - Home feed → Express API server: uses API
- Search and filters → Express API server: uses API
- Episode playback → Express API server: uses API
- Chapter reader → Express API server: uses API
- Express API server → Search routes: mounts
backend/server.js - Express API server → News routes: mounts
backend/server.js - Search routes → Search providers: dispatches
backend/routes/searchRoute.js - Search providers → AniList API: queries
backend/controllers/search/anilist/searchController.js - Search providers → Redis cache: reads and writes
backend/controllers/search/anilist/searchController.js - Media catalog queries → AniList query definitions: builds query
backend/controllers/medias/anilist/mediasByParamsController.js - Media catalog queries → Redis cache: reads and writes
backend/controllers/medias/anilist/mediasByParamsController.js - Media catalog queries → AniList API: queries
backend/controllers/medias/anilist/mediasByParamsController.js - Media information → AniList query definitions: builds query
backend/controllers/mediaInfo/anilist/mediaInfoController.js - Media information → Redis cache: reads and writes
backend/controllers/mediaInfo/anilist/mediaInfoController.js - Media information → AniList API: queries
backend/controllers/mediaInfo/anilist/mediaInfoController.js - Episode sources → Aniwatch API: fetches episodes
backend/controllers/episodes/aniwatch/episodesController.js - Episode sources → Redis cache: reads and writes
backend/controllers/episodes/aniwatch/episodesController.js - Chapter sources → Consumet API: fetches chapters
- IMDb metadata → Consumet API: fetches metadata
backend/controllers/imdb/consumet/imdbController.js - Login and settings → Firebase services: authenticates
README.md - Favourites and lists → Firebase services: stores lists
README.md - Episode notifications → Firebase services: stores subscriptions
README.md - AniList query definitions → Query snippets: references
backend/controllers/anilistUtils/queryConstants.js