YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
StreamWave Cloud Media Management System
A serverless cloud solution for StreamWave Entertainment using Microsoft Azure.
Overview
This is a practical cloud computing assignment demonstrating how StreamWave Entertainment can migrate its media infrastructure to Microsoft Azure using serverless technologies.
The system allows authorized administrators to:
- Log in securely
- View a professional dashboard with media statistics
- Upload media content (movies, music, trailers, etc.)
- Store files in Azure Blob Storage
- Store metadata in Azure Cosmos DB
- Search and filter media
- Delete content
- Monitor operations through Azure Application Insights
Technology Stack
Frontend:
- HTML5, CSS3, JavaScript
- Azure Static Web Apps
Backend:
- Azure Functions (Python)
- Azure Blob Storage
- Azure Cosmos DB
Security:
- Microsoft Entra ID (production) / Simplified auth (prototype)
- Azure Key Vault
- Managed Identities
Monitoring:
- Azure Application Insights
- Azure Monitor
Infrastructure:
- Azure Bicep
- Azure Resource Manager
Quick Start
Prerequisites
- Azure subscription
- Azure CLI
- Python 3.9+
- Azure Functions Core Tools
- Git
Local Development
# 1. Clone/extract the project
cd streamwave-azure
# 2. Set up Python virtual environment
python -m venv venv
.\venv\Scripts\activate # Windows
# or: source venv/bin/activate # Linux/Mac
# 3. Install dependencies
pip install -r api/requirements.txt
# 4. Configure local settings
cp api/local.settings.json.example api/local.settings.json
# 5. Run Azure Functions locally
cd api
func start
# 6. In a new terminal, run frontend
cd frontend
python -m http.server 8000
Access the application at http://localhost:8000
Azure Deployment
See DEPLOYMENT.md for complete deployment instructions.
Project Structure
streamwave-azure/
βββ frontend/ # Web interface
β βββ index.html
β βββ login.html
β βββ dashboard.html
β βββ media.html
β βββ add-media.html
β βββ view-media.html
β βββ css/
β β βββ style.css
β βββ js/
β βββ auth.js
β βββ dashboard.js
β βββ media.js
β βββ api.js
βββ api/ # Azure Functions backend
β βββ function_app.py
β βββ requirements.txt
β βββ host.json
β βββ local.settings.json.example
β βββ functions/
β βββ get_upload_url/
β βββ register_media/
β βββ list_media/
β βββ get_media/
β βββ update_media/
β βββ delete_media/
β βββ search_media/
βββ infrastructure/ # Infrastructure as Code
β βββ main.bicep
β βββ parameters.json
β βββ deploy.sh
βββ docs/ # Documentation
β βββ ARCHITECTURE.md
β βββ DEPLOYMENT.md
β βββ SECURITY.md
β βββ API.md
β βββ TESTING.md
β βββ EVIDENCE_CHECKLIST.md
βββ .gitignore
βββ LICENSE
Key Features
1. Secure Authentication
- Login/logout functionality
- Role-based access (Administrator vs Viewer)
- Session management
2. Dashboard
- Total media statistics
- Recent uploads
- Storage information
- Quick navigation
3. Media Upload
- Direct-to-Blob storage (scalable architecture)
- Metadata validation
- File type/size restrictions
- Thumbnail support
4. Media Catalog
- Browse all media
- Advanced search
- Filter by genre, content type, release year
- View media details
5. Administration
- Edit media metadata
- Delete media and associated files
- Monitor upload operations
6. Cloud Integration
- Azure Blob Storage: Scalable media file storage
- Azure Cosmos DB: NoSQL metadata database
- Azure Functions: Serverless API backend
- Application Insights: Performance monitoring and logging
Architecture Benefits
Scalability
- Azure automatically scales based on demand
- No need to manage server capacity
- Handles traffic spikes during events/releases
Cost Efficiency
- Pay-per-execution model (consumption-based pricing)
- No expensive always-running servers
- Optimized for variable workloads
Performance
- Direct-to-Blob upload bypasses Functions bottleneck
- Low-latency Cosmos DB queries
- CDN-ready architecture
Security
- Managed identities eliminate hardcoded credentials
- SAS tokens provide time-limited access
- RBAC controls permissions at every layer
- Encrypted storage and data in transit
Reliability
- Automatic backups and replication
- Built-in monitoring and alerting
- Graceful error handling
API Documentation
See API.md for complete API reference including:
- Authentication endpoints
- Media CRUD operations
- Upload URL generation
- Search functionality
Testing
Complete test plan available in TESTING.md
Evidence & Screenshots
Screenshot checklist and submission guidelines in EVIDENCE_CHECKLIST.md
Deployment Steps
- Create Azure Resources: Run Bicep template
- Configure Authentication: Set up Azure Entra ID or prototype auth
- Deploy Functions: Upload function code to Azure
- Deploy Frontend: Deploy to Static Web Apps
- Configure CORS: Enable communication between frontend and backend
- Test APIs: Verify all endpoints work
- Monitor: Check Application Insights
See full deployment guide in DEPLOYMENT.md
Production Considerations
This prototype demonstrates serverless architecture. For production StreamWave deployment:
- Streaming: Add Azure Media Services or CDN for video delivery
- Scaling: Use Azure Front Door + WAF for global distribution
- Authentication: Implement full Microsoft Entra ID integration
- DRM: Add content protection
- Transcoding: Implement media transformation pipeline
- Analytics: Add usage analytics and recommendations
- Mobile: Extend to mobile/TV applications
See section 5.18 in the academic report for detailed integration plans.
Cost Monitoring
To view Azure spending:
az costmanagement query create --scope "/subscriptions/{subscriptionId}"
Cleanup
To delete all resources after demonstration:
az group delete --name streamwave-rg --yes
Documentation
- Architecture Overview
- Deployment Guide
- Security Implementation
- API Reference
- Testing Procedures
- Evidence Checklist
- Academic Report
License
This project is provided for educational purposes as part of a university assignment.
Student Assignment: Cloud Computing Solutions for StreamWave Entertainment
University: [Your University]
Date: 2026
Submitted by: [Your Name]