A comprehensive application for managing sports media production planning with support for Games, Shows, and Race productions. Built with FastAPI backend and PyQt6 frontend featuring a modern gaming-professional aesthetic.
- Multiple Production Types: Support for Game, Show, and Race productions
- Dynamic Forms: Adaptive forms that change based on production type
- Unique ID Generation: Automatic production ID generation (_SP123456 format)
- Crew Management: Comprehensive crew member and assignment tracking
- Template System: Reusable production templates for rapid setup
- File Management: Upload and attach files to productions
- Search & Filter: Advanced search and filtering capabilities
- Dark Gaming Theme: Sleek dark interface with electric blue accents
- Responsive Design: Optimized for 1920x1080 and 1440p displays
- Smooth Animations: Subtle hover effects and transitions
- Card-Based Layout: Clean, organized information presentation
- Professional Typography: Modern fonts with clear hierarchy
- Sport type, league, teams (home vs away)
- Season, game number, playoff information
- Broadcast network and commentator details
- Camera count and technical specifications
- Show format (interview, panel, talk show, etc.)
- Series information with season/episode numbers
- Host and guest management
- Live audience configuration
- Race series (Formula 1, NASCAR, etc.)
- Track information and specifications
- Weather conditions and temperature
- Coverage options (helicopter, telemetry, pit lane)
- FastAPI - Modern, fast web framework
- SQLAlchemy - SQL toolkit and ORM
- Pydantic - Data validation using Python type annotations
- SQLite/PostgreSQL - Database support
- Uvicorn - ASGI server implementation
- PyQt6 - Cross-platform GUI toolkit
- Modern Gaming Aesthetic - Custom styling system
- Responsive Layouts - Adaptive interface design
- API Integration - RESTful backend communication
- Python 3.8 or higher
- pip package manager
-
Clone the repository
git clone <repository-url> cd sports-media-production-planning
-
Install dependencies
pip install -r requirements.txt
-
Configure the application
# Copy and edit the configuration file cp config.ini.example config.ini # Edit config.ini with your preferred settings
# Run the FastAPI backend
python -m uvicorn backend.app:app --reload --host 0.0.0.0 --port 8000The API will be available at http://localhost:8000 with automatic documentation at http://localhost:8000/docs.
# Run the PyQt6 frontend
python frontend/main.pyGET /api/v1/productions/- List productions with filteringPOST /api/v1/productions/- Create new productionGET /api/v1/productions/{id}- Get specific productionPUT /api/v1/productions/{id}- Update productionDELETE /api/v1/productions/{id}- Delete production
POST /api/v1/productions/{id}/game-details- Add game detailsPOST /api/v1/productions/{id}/show-details- Add show detailsPOST /api/v1/productions/{id}/race-details- Add race details
GET /api/v1/crew/- List crew membersPOST /api/v1/crew/- Create crew memberPOST /api/v1/crew/assignments- Assign crew to production
GET /api/v1/templates/- List templatesPOST /api/v1/files/upload- Upload files
sports-media-production-planning/
├── backend/
│ ├── models/ # SQLAlchemy database models
│ ├── schemas/ # Pydantic validation schemas
│ ├── api/endpoints/ # FastAPI route handlers
│ ├── core/ # Configuration and database setup
│ ├── services/ # Business logic layer
│ └── utils/ # Utility functions and helpers
├── frontend/
│ ├── ui/ # Main user interface components
│ ├── widgets/ # Custom UI widgets
│ └── utils/ # Frontend utilities and API client
├── database/
│ └── migrations/ # Database migration scripts
├── static/uploads/ # File upload storage
├── requirements.txt # Python dependencies
├── config.ini # Configuration file
└── README.md # Project documentation
productions- Main production metadataproduction_games- Game-specific fieldsproduction_shows- Show-specific fieldsproduction_races- Race-specific fieldscrew_members- Crew information and profilesproduction_crew- Crew assignments to productionstemplates- Reusable production templatescustom_fields- User-defined field definitionsfile_attachments- Uploaded files and documents
The application uses config.ini for configuration:
[database]
url = sqlite:///./production_planning.db
[api]
host = 0.0.0.0
port = 8000
[upload]
max_file_size = 104857600
allowed_extensions = pdf,doc,docx,xls,xlsx,txt,jpg,jpeg,png,gif,mp4,mov,avi
[production_ids]
prefix = _SP
length = 6The application features intelligent form generation that adapts based on production type:
- Game Forms: Include team information, broadcast details, and technical specifications
- Show Forms: Feature episode tracking, guest management, and audience configuration
- Race Forms: Support track information, weather conditions, and coverage options
The UI implements a professional gaming-inspired design:
- Color Palette: Dark backgrounds with electric blue and orange accents
- Typography: Clean, modern fonts with clear hierarchy
- Interactions: Smooth hover effects and subtle animations
- Layout: Card-based design with proper spacing and visual separation
Comprehensive crew tracking includes:
- Personal Information: Contact details and emergency contacts
- Professional Data: Roles, experience, specializations
- Assignment Tracking: Production assignments with scheduling
- Talent Profiles: On-air talent with broadcast-specific information
- Update the
ProductionTypeenum inbackend/models/production.py - Create a new type-specific model (e.g.,
ProductionEvent) - Add corresponding Pydantic schemas
- Implement API endpoints for the new type
- Update the frontend form to include type-specific fields
The gaming aesthetic is defined in frontend/ui/main_window.py in the ModernGamingStyle class. Colors, fonts, and styling can be customized there.
Use Alembic for database schema changes:
# Create a new migration
alembic revision --autogenerate -m "Description of changes"
# Apply migrations
alembic upgrade headFull API documentation is available when running the backend server at:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check the API documentation at
/docs - Review the configuration options in
config.ini
- Real-time collaboration
- Advanced reporting and analytics
- Mobile app support
- Third-party integrations
- Workflow automation
- Multi-tenant support
- Cloud deployment options
- ✅ Core production management
- ✅ Dynamic form generation
- ✅ Modern gaming UI theme
- ✅ Crew management system
- ✅ Template functionality
- ✅ File upload system
- ✅ RESTful API with documentation