A powerful full-stack application that aggregates and displays comprehensive movie information from multiple sources, providing users with a seamless movie discovery experience.
Movie Aggregator Service is a modern web application that brings together movie data from various sources into one unified platform. Built with cutting-edge technologies, it offers a fast, responsive, and intuitive interface for exploring movies, actors, and related content.
- Multi-Source Aggregation: Combines data from YouTube and other movie databases
- Rich Movie Information: Access detailed movie metadata, cast information, and media content
- Real-time Search: Lightning-fast search functionality with instant results
- Responsive Design: Seamless experience across desktop, tablet, and mobile devices
- Modern UI/UX: Clean, intuitive interface built with React and Tailwind CSS
- RESTful API: Robust backend API for easy integration and extensibility
The project follows a modern full-stack architecture:
┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │
│ React + Vite │ ◄────► │ FastAPI │
│ Port 3000 │ │ Port 8000 │
└─────────────────┘ └─────────────────┘
│
┌───────┴────────┐
│ External APIs │
│ (YouTube, etc)│
└────────────────┘
- React 18 - Modern UI library with hooks and concurrent features
- TypeScript - Type-safe development experience
- Vite - Lightning-fast build tool and dev server
- Tailwind CSS - Utility-first CSS framework
- React Router - Client-side routing
- Axios - Promise-based HTTP client
- Lucide React - Beautiful icon library
- FastAPI - High-performance Python web framework
- Uvicorn - ASGI server for async operations
- Pydantic - Data validation using Python type annotations
- Google APIs - Integration with YouTube and other Google services
- HTTPX - Modern async HTTP client
- python-dotenv - Environment configuration management
Before running the application, ensure you have:
- Node.js (v16 or higher)
- Python (v3.8 or higher)
- npm or yarn
- YouTube API Key (Get one here)
The fastest way to get started on Windows:
# Clone the repository
git clone https://github.com/bukinator-dev/movie-aggregator-service.git
cd movie-aggregator-service
# Run the automated startup script
start-dev.batThis will automatically start both the backend and frontend services.
# Navigate to backend directory
cd backend
# Install Python dependencies
pip install -r requirements.txt
# Create .env file with your API key
echo YOUTUBE_API_KEY=your_api_key_here > .env
# Start the backend server
python main.pyThe backend will be available at http://localhost:8000
Open a new terminal window:
# Navigate to frontend directory
cd frontend
# Install dependencies
npm install
# Start the development server
npm run devThe frontend will be available at http://localhost:3000
movie-aggregator-service/
├── backend/ # Python FastAPI backend
│ ├── main.py # Application entry point
│ ├── requirements.txt # Python dependencies
│ └── .env # Environment variables (create this)
├── frontend/ # React + TypeScript frontend
│ ├── src/ # Source files
│ ├── public/ # Static assets
│ ├── package.json # Node dependencies
│ └── vite.config.ts # Vite configuration
├── services/ # Auxiliary service modules
├── start-dev.bat # Windows startup script
├── start-dev.ps1 # PowerShell startup script
└── setup-frontend.md # Detailed frontend setup guide
The backend provides a RESTful API with the following endpoints:
GET /api/movies- Search and retrieve movie informationGET /api/movies/{id}- Get detailed information about a specific movieGET /api/actors- Search for actorsGET /api/youtube- Fetch YouTube content related to movies
For complete API documentation, visit http://localhost:8000/docs when the backend is running.
# Backend tests
cd backend
python test_youtube.py
# Frontend tests
cd frontend
npm run lintcd frontend
npm run build
npm run preview # Preview production buildThe build output will be in the frontend/dist directory.
YOUTUBE_API_KEY=your_youtube_api_key_here
PORT=8000VITE_API_URL=http://localhost:8000Backend won't start:
- Verify Python 3.8+ is installed:
python --version - Ensure all dependencies are installed:
pip install -r requirements.txt - Check if port 8000 is already in use
Frontend won't start:
- Verify Node.js 16+ is installed:
node --version - Clear node_modules and reinstall:
rm -rf node_modules && npm install - Check if port 3000 is already in use
API Key Issues:
- Ensure your
.envfile exists in the backend directory - Verify your YouTube API key is valid and has the YouTube Data API v3 enabled
- Test the API key with:
python test_youtube.py
Connection Errors:
- Ensure both backend and frontend are running
- Check that the backend is accessible at
http://localhost:8000 - Verify CORS settings if making external requests
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is open source and available under the MIT License.
- Built with FastAPI
- Frontend powered by React and Vite
- Styled with Tailwind CSS
- Icons from Lucide
- Movie data provided by YouTube API
For questions, suggestions, or issues, please open an issue on the GitHub repository.
Made with ❤️ by bukinator-dev