mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-05-13 11:07:29 +08:00
Refactor http-server implemention
This commit is contained in:
107
CLAUDE.md
Normal file
107
CLAUDE.md
Normal file
@@ -0,0 +1,107 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
OrionTV is a React Native TVOS application for streaming video content, built with Expo and designed specifically for TV platforms (Apple TV and Android TV). The project includes both a frontend React Native app and a backend Express service.
|
||||
|
||||
## Key Commands
|
||||
|
||||
### Development Commands
|
||||
- `yarn start-tv` - Start Metro bundler in TV mode
|
||||
- `yarn ios-tv` - Build and run on Apple TV
|
||||
- `yarn android-tv` - Build and run on Android TV
|
||||
- `yarn prebuild-tv` - Generate native project files for TV (run this after dependency changes)
|
||||
- `yarn lint` - Run linting checks
|
||||
- `yarn test` - Run Jest tests with watch mode
|
||||
- `yarn build-local` - Build Android APK locally
|
||||
|
||||
### Backend Commands (from `/backend` directory)
|
||||
- `yarn dev` - Start backend development server with hot reload
|
||||
- `yarn build` - Build TypeScript backend
|
||||
- `yarn start` - Start production backend server
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
### Frontend Structure
|
||||
- **Expo Router**: File-based routing with screens in `/app` directory
|
||||
- **State Management**: Zustand stores for global state (`/stores`)
|
||||
- **TV-Specific Components**: Components optimized for TV remote control interaction
|
||||
- **Services**: API layer, storage management, and remote control service
|
||||
|
||||
### Key Technologies
|
||||
- React Native TVOS (0.74.x) - TV-optimized React Native
|
||||
- Expo SDK 51 - Development platform and tooling
|
||||
- TypeScript - Type safety throughout
|
||||
- Zustand - Lightweight state management
|
||||
- Expo AV - Video playback functionality
|
||||
|
||||
### State Management (Zustand Stores)
|
||||
- `homeStore.ts` - Home screen content, categories, and play records
|
||||
- `playerStore.ts` - Video player state and controls
|
||||
- `settingsStore.ts` - App settings and configuration
|
||||
- `remoteControlStore.ts` - Remote control server functionality
|
||||
|
||||
### TV-Specific Features
|
||||
- Remote control navigation (`useTVRemoteHandler` hook)
|
||||
- TV-optimized UI components with focus management
|
||||
- Remote control server for external control via HTTP bridge
|
||||
- Gesture handling for TV remote interactions
|
||||
|
||||
### Backend Architecture
|
||||
- Express.js server providing API endpoints
|
||||
- Routes for search, video details, and Douban integration
|
||||
- Image proxy service for handling external images
|
||||
- CORS enabled for cross-origin requests
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### TV Development Notes
|
||||
- Always use TV-specific commands (`*-tv` variants)
|
||||
- Run `yarn prebuild-tv` after adding new dependencies
|
||||
- Test on both Apple TV and Android TV simulators
|
||||
- TV components require focus management and remote control support
|
||||
|
||||
### State Management Patterns
|
||||
- Use Zustand stores for global state
|
||||
- Stores follow a consistent pattern with actions and state
|
||||
- API calls are centralized in the `/services` directory
|
||||
- Storage operations use AsyncStorage wrapper in `storage.ts`
|
||||
|
||||
### Component Structure
|
||||
- TV-specific components have `.tv.tsx` extensions
|
||||
- Common components in `/components` directory
|
||||
- Custom hooks in `/hooks` directory for reusable logic
|
||||
- TV remote handling is centralized in `useTVRemoteHandler`
|
||||
|
||||
## Testing
|
||||
|
||||
- Uses Jest with `jest-expo` preset
|
||||
- Run tests with `yarn test`
|
||||
- Component tests in `__tests__` directories
|
||||
- Snapshot testing for UI components
|
||||
|
||||
## Common Issues
|
||||
|
||||
### TV Platform Specifics
|
||||
- TV apps require special focus management
|
||||
- Remote control events need careful handling
|
||||
- TV-specific assets and icons required
|
||||
- Platform-specific build configurations
|
||||
|
||||
### Development Environment
|
||||
- Ensure Xcode is installed for Apple TV development
|
||||
- Android Studio required for Android TV development
|
||||
- Metro bundler must run in TV mode (`EXPO_TV=1`)
|
||||
- Backend server must be running on port 3001 for full functionality
|
||||
|
||||
## File Structure Notes
|
||||
|
||||
- `/app` - Expo Router screens and navigation
|
||||
- `/components` - Reusable UI components
|
||||
- `/stores` - Zustand state management
|
||||
- `/services` - API, storage, and external service integrations
|
||||
- `/hooks` - Custom React hooks
|
||||
- `/backend` - Express.js backend service
|
||||
- `/constants` - App constants and theme definitions
|
||||
Reference in New Issue
Block a user