How yixunli-dev/twitch-resource-web-app works
This is a React/Spring Boot app for discovering Twitch streams, videos, and clips, saving favorites, and getting behavior-based recommendations. Users browse popular games or search, the frontend requests grouped content, and authenticated users can manage favorites or request recommendations. Backend services retrieve Twitch data, convert it to app item records, and persist user and favorite state. The README documents the frontend/backend/database architecture; source-index references support the shown internal calls. Some HTTP routing and external API details were not excerpted, so those links are marked unverified.
Main entry points: utils.js API requests · FavoriteService.java Favorite service · TwitchService.java Twitch data service · ItemService.java Item search
Components 20
Web client
- App state
Frontend/src/App.js - API requests
Frontend/src/utils.js
Twitch content
- Game endpoints
Backend/src/main/java/com/laioffer/twitch/external/GameController.java - Search endpoint
Backend/src/main/java/com/laioffer/twitch/item/ItemController.java - Item search
Backend/src/main/java/com/laioffer/twitch/item/ItemService.java - Twitch data service
Backend/src/main/java/com/laioffer/twitch/external/TwitchService.java - Twitch API client
Backend/src/main/java/com/laioffer/twitch/external/TwitchApiClient.java - Grouped item mapping
Backend/src/main/java/com/laioffer/twitch/model/TypeGroupedItemList.java
Accounts and discovery
- User endpoints
Backend/src/main/java/com/laioffer/twitch/user/UserController.java - User service
Backend/src/main/java/com/laioffer/twitch/user/UserService.java - Favorite endpoints
Backend/src/main/java/com/laioffer/twitch/favorite/FavoriteController.java - Favorite service
Backend/src/main/java/com/laioffer/twitch/favorite/FavoriteService.java - Recommendation endpoint
Backend/src/main/java/com/laioffer/twitch/recommendation/RecommendationController.java - Recommendation logic
Backend/src/main/java/com/laioffer/twitch/recommendation/RecommendationService.java
Persistence
- User repository
Backend/src/main/java/com/laioffer/twitch/db/UserRepository.java - Item repository
Backend/src/main/java/com/laioffer/twitch/db/ItemRepository.java - Favorite repository
Backend/src/main/java/com/laioffer/twitch/db/FavoriteRecordRepository.java
Other components
- User
- Twitch API
- MySQL database
Connections 24
- User → App state: uses
- App state → API requests: requests data
Frontend/src/App.js - API requests → Game endpoints: calls game routes
- API requests → Search endpoint: calls search route
- API requests → User endpoints: calls account routes
- API requests → Favorite endpoints: calls favorite route
- API requests → Recommendation endpoint: calls recommendation
- Game endpoints → Twitch data service: calls
Backend/src/main/java/com/laioffer/twitch/external/GameController.java - Search endpoint → Item search: calls
Backend/src/main/java/com/laioffer/twitch/item/ItemController.java - Item search → Twitch data service: fetches content
Backend/src/main/java/com/laioffer/twitch/item/ItemService.java - Item search → Grouped item mapping: groups results
Backend/src/main/java/com/laioffer/twitch/item/ItemService.java - Twitch data service → Twitch API client: delegates requests
Backend/src/main/java/com/laioffer/twitch/external/TwitchService.java - Twitch API client → Twitch API: requests content
- User endpoints → User service: calls
Backend/src/main/java/com/laioffer/twitch/user/UserController.java - User service → User repository: reads and updates
Backend/src/main/java/com/laioffer/twitch/user/UserService.java - Favorite endpoints → Favorite service: calls
Backend/src/main/java/com/laioffer/twitch/favorite/FavoriteController.java - Favorite service → Item repository: reads and saves items
Backend/src/main/java/com/laioffer/twitch/favorite/FavoriteService.java - Favorite service → Favorite repository: reads and writes records
Backend/src/main/java/com/laioffer/twitch/favorite/FavoriteService.java - Recommendation endpoint → Recommendation logic: calls
Backend/src/main/java/com/laioffer/twitch/recommendation/RecommendationController.java - Recommendation logic → Favorite service: loads user favorites
Backend/src/main/java/com/laioffer/twitch/recommendation/RecommendationService.java - Recommendation logic → Twitch data service: fetches suggestions
Backend/src/main/java/com/laioffer/twitch/recommendation/RecommendationService.java - MySQL database → User repository: stores records
- MySQL database → Item repository: stores records
- MySQL database → Favorite repository: stores records