A Netflix-like streaming service with a REST API built on AWS infrastructure, designed for mobile clients built with SwiftUI and Jetpack Compose.
This project provides a scalable, serverless backend for a movie streaming platform. It's built on modern AWS services to handle media storage, streaming, user authentication, and content management.
- User Authentication: Secure login/registration system with JWT tokens
- Content Library: Browse, search, and filter movies by various criteria
- Video Streaming: Adaptive quality streaming with signed URLs
- User Interactions: Watchlists, ratings, viewing history
- Content Search: Elasticsearch-powered search functionality
- Mobile-First APIs: Designed for native mobile apps
- API Gateway: RESTful API endpoints for client applications
- Lambda Functions: Serverless backend business logic
- DynamoDB: NoSQL database for metadata and user data
- S3: Storage for video content
- CloudFront: CDN for global content delivery
- Cognito: User authentication and authorization
- MediaConvert: Video transcoding for adaptive streaming
- Elasticsearch: Content search and discovery
- iOS: Native SwiftUI application
- Android: Native Jetpack Compose application
- AWS Account
- AWS CLI configured
- Node.js 14.x or later
- Terraform (for infrastructure deployment)
- Serverless Framework
-
Clone this repository:
git clone https://github.com/clarkshu1016/movie-streaming-service.git cd movie-streaming-service
-
Install dependencies:
npm install
-
Deploy the infrastructure (Terraform option):
cd terraform terraform init terraform plan terraform apply
-
Deploy the API (Serverless option):
serverless deploy --stage dev
-
After deployment, make note of the generated API Gateway URL:
https://<api-id>.execute-api.<region>.amazonaws.com/<stage>
- For iOS integration, follow the guide at iOS Integration Guide
- For Android integration, follow the guide at docs/mobile-integration/android.md
Detailed API documentation can be found in the API Documentation file.
The API provides endpoints for:
- Authentication (login/register)
- Content browsing and search
- Video streaming
- User interactions (ratings, watchlist)
- User profile management
- Movies: Title, description, genres, ratings, etc.
- Users: Profile information, preferences, subscription details
- Watchlist: User's saved content
- Ratings: User ratings and reviews
- View History: Viewing progress and history
See Data Models for full details.
This project uses Infrastructure as Code with both:
- Terraform: For core AWS infrastructure setup
- Serverless Framework: For Lambda functions and API Gateway
- Make changes to the source code
- Run local tests:
npm test
- Deploy to development:
serverless deploy --stage dev
- Verify in the development environment
- Deploy to production:
serverless deploy --stage prod
- Fork the repository
- Create a feature branch
- Implement your changes
- Add tests and ensure all tests pass
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.