A production-grade Software-as-a-Service (SaaS) platform that serves your Video Emotion Recognition AI model through an intuitive web interface and secure REST API.
Users can upload videos, analyze emotions and sentiments, and access insights both visually and programmatically.
Video Emotion SaaS transforms your trained deep learning model into a full cloud-based service.
It combines a modern web UI, scalable backend, and API integration to make emotion recognition accessible, interactive, and developer-friendly.
Built with AWS SageMaker, Amazon S3, FastAPI, and React, it represents the production layer of the Video Emotion Project.
[Frontend UI] β [API Gateway / FastAPI Backend] β [AWS SageMaker Endpoint]
β β
[Auth Service] [Task Queue / Worker]
β
[S3 Storage / Database]
| Layer | Description |
|---|---|
| Frontend | Built with React, it provides video uploads, visual analytics, and real-time emotion timelines |
| Backend (FastAPI) | Exposes REST APIs, manages authentication, and orchestrates inference requests |
| Worker | Handles background processing and asynchronous tasks |
| Model Endpoint | Hosted on AWS SageMaker, providing emotion recognition via API calls |
| Storage | Videos and results stored securely on AWS S3 |
| Database | Manages users, job tracking, and analytics summaries |
| Auth | JWT and OAuth2-based secure authentication |
- ποΈ Upload and process videos through a clean, modern UI
- π User authentication and secure API key management
- βοΈ Asynchronous video processing via task queues
- π Emotion and sentiment visualization dashboard
- π§Ύ REST API for developers and integrations
- βοΈ AWS-based scalable architecture
- π§ Powered by deep learning (CNN + LSTM model) via SageMaker
| Category | Technology | Description |
|---|---|---|
| Frontend | React / TypeScript | User dashboard and upload interface |
| Backend | FastAPI / Python | REST API and inference orchestration |
| AI Model | AWS SageMaker | Deployed emotion detection model |
| Storage | AWS S3 | Persistent storage for videos and analysis data |
| Database | PostgreSQL / DynamoDB | Job management and analytics |
| Queue / Worker | Celery / Redis | Background task processing |
| Auth | JWT / OAuth2 | Secure authentication and user sessions |
| Deployment | Docker / ECS / CI/CD | Scalable deployment workflow |
| Monitoring | CloudWatch / Grafana | System monitoring and alerts |
- AWS account with S3 and SageMaker access
- Python 3.8+
- Docker (optional)
.envconfiguration file
git clone https://github.com/danielgavrila2/Video-Emotion-SaaS.git
cd Video-Emotion-SaaS
pip install -r requirements.txtCreate a .env file with:
MODEL_ENDPOINT_URL=https://<your-sagemaker-endpoint>
S3_BUCKET=your-bucket-name
DATABASE_URL=postgresql://user:pass@host:port/db
SECRET_KEY=supersecretkey
AWS_REGION=us-east-1
uvicorn app.main:app --reload --port 8000Frontend (if separate):
cd frontend && npm install && npm start| Method | Endpoint | Description |
|---|---|---|
POST |
/api/v1/predict |
Upload a video for emotion inference |
GET |
/api/v1/jobs/{job_id} |
Retrieve prediction results |
POST |
/api/v1/register |
Create new user account |
POST |
/api/v1/login |
Authenticate and obtain JWT token |
GET |
/api/v1/users/me |
Get user profile information |
curl -X POST "http://localhost:8000/api/v1/predict" -H "Authorization: Bearer <token>" -F "video=@/path/to/video.mp4"Response:
{
"job_id": "12345",
"status": "processing"
}Deploy using Docker or AWS ECS:
docker-compose up --buildExample Docker Compose snippet:
version: "3"
services:
backend:
build: ./backend
ports:
- "8000:8000"
env_file: .env
frontend:
build: ./frontend
ports:
- "3000:3000"For production, integrate with:
- AWS ECS or EKS for scalability
- AWS CloudWatch for monitoring
- GitHub Actions for CI/CD automation
- Encrypted communication (HTTPS)
- JWT-based authentication
- Role-based access (User/Admin)
- File validation for uploads
- Quota & rate limiting per user
- Logging and audit trails
- Real-time inference feedback
- Advanced analytics dashboard
- Multi-model support (emotion + sentiment + tone)
- Subscription-based billing integration
- Model version management
Contributions are welcome!
- Fork this repo
- Create a branch:
feature/your-feature - Commit and push your changes
- Open a Pull Request
Released under the MIT License.
Β© 2025 Daniel Gavrila. All rights reserved.
- Model Training Project: Video Emotion Project
- SaaS Deployment: Video Emotion SaaS

