mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-01-15 15:48:05 +00:00
Some checks failed
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🌐 Translation Sync / sync-translations (push) Has been cancelled
Simplifies the Conventional Commits reference by converting it from markdown link syntax to plain text with URL, improving readability in the documentation file.
3.5 KiB
3.5 KiB
Copilot Instructions for Streamyfin
Project Overview
Streamyfin is a cross-platform Jellyfin video streaming client built with Expo (React Native).
It supports mobile (iOS/Android) and TV platforms, integrates with Jellyfin and Jellyseerr APIs,
and provides seamless media streaming with offline capabilities and Chromecast support.
Main Technologies
- Runtime: Bun (JavaScript/TypeScript execution)
- Framework: React Native (Expo)
- Language: TypeScript (strict mode)
- State Management: Jotai (global state) + React Query (server state)
- API SDK: Jellyfin SDK (TypeScript)
- Navigation: Expo Router (file-based routing)
- Code Quality: BiomeJS (formatting/linting)
- Build Platform: EAS (Expo Application Services)
- CI/CD: GitHub Actions with Bun
Package Management
CRITICAL: ALWAYS use bun for all package management operations
- NEVER use
npm,yarnornpxcommands - Use
bun installinstead ofnpm installoryarn install - Use
bun add <package>instead ofnpm install <package> - Use
bun remove <package>instead ofnpm uninstall <package> - Use
bun run <script>instead ofnpm run <script> - Use
bunx <command>instead ofnpx <command> - For Expo: use
bunx create-expo-apporbunx @expo/cli
Code Structure
app/– Main application code (screens, navigation, etc.)components/– Reusable UI componentsproviders/– Context and API providers (e.g., JellyfinProvider.tsx)utils/– Utility functions and Jotai atomsassets/– Images and static assetsscripts/– Automation scripts (Node.js, Bash)plugins/– Expo/Metro plugins
Coding Standards
- Use TypeScript for ALL files (no .js files)
- Use descriptive English names for variables, functions, and components
- Prefer functional React components with hooks
- Use Jotai atoms for global state management
- Use React Query for server state and caching
- Follow BiomeJS formatting and linting rules
- Use
constoverlet, avoidvarentirely - Implement proper error boundaries
- Use React.memo() for performance optimization
- Handle both mobile and TV navigation patterns
API Integration
- Use Jellyfin SDK for all server interactions
- Access authenticated APIs via
apiAtomanduserAtomfrom JellyfinProvider - Implement proper loading states and error handling
- Use React Query for caching and background updates
- Handle offline scenarios gracefully
Performance Optimization
- Leverage Bun's superior runtime performance
- Optimize FlatList components with proper props
- Use lazy loading for non-critical components
- Implement proper image caching strategies
- Monitor bundle size and use tree-shaking effectively
Testing
- Use Bun's built-in test runner when possible
- Test files:
*.test.tsor*.test.tsx - Run tests with:
bun test - Mock external APIs in tests
- Focus on testing business logic and custom hooks
Commit Messages
Use Conventional Commits (https://www.conventionalcommits.org/): Exemples:
feat(player): add Chromecast supportfix(auth): handle expired JWT tokenschore(deps): update Jellyfin SDK
Special Instructions
- Prioritize cross-platform compatibility (mobile + TV)
- Ensure accessibility for TV remote navigation
- Use existing atoms, hooks, and utilities before creating new ones
- Maintain compatibility with Expo and EAS workflows
- Always verify Bun compatibility when suggesting new dependencies
Copilot: Please use these instructions to provide context-aware suggestions and code completions for this repository.