A YouTube-like video streaming platform built as a collaborative project for RS1 – Razvoj Softvera 1 at FIT.
Authors:
- Dino Salković
- Irman Isić
- Azer Pilavdžić
VideoStreamingPlatform is a full-stack web application that allows users to:
- Upload and manage videos
- Watch and interact with video content
- Like and comment on videos
- Receive personalized video recommendations
- Use advanced search (Full-Text + Predictive + Voice search)
- Authenticate using JWT + verification code
## 🛠 Built With
| Technology | Version |
|----------------------------------|------------|
| ASP.NET Core | 8.0.11 |
| Entity Framework Core | 8.0.11 |
| Angular CLI | 19.1.5 |
| Microsoft SQL Server (LocalDB) | Developer Edition |
Backend
Rebuild Solution
Update-Database
Run backend
Frontend
ng serve
Two preconfigured users are available:
| Role | Email | Password |
| ---------- | ------------------------------------- | ----------- |
| Basic User | [demo2@mail.ba](mailto:demo2@mail.ba) | BasicPass1! |
| Admin User | [demo3@mail.ba](mailto:demo3@mail.ba) | BasicPass2! |
For testing purposes:
The verificaiton code is displayed in the browser console under:
"Login response with code" -> commonResponse -> message
- Run Backend
- Open Swagger
- Create new User
- Create corresponding UserValues entry
- Login through Frontend
🎥 Video Management
- CRUD operations
- Drag & Drop Upload
- Thumbnail auto-generation
- Video compression
- Upload progress tracking
🔍 Search
- Full-Text Search
- Predictive Search Suggestions
- Category filtering
- Voice-to-Text search
🤖 Recommendation System
- Behavioral analytics
- Machine learning-based recommendations
- Personalized content delivery
💬 Interaction
- Like / Dislike system
- Comment reactions
- Optimistic UI updates
⏳ Background Jobs
- Scheduled worker category cleanup (02:00 daily)
🧠 Authentication Flow
- Login with email & password
- Verification code sent via email
- Code must be entered to receive JWT token
(For demo purposes, the verification code is logged in the console)
📂 Project Structure
Backend (.NET 8)
VideoStreamingPlatform
│
├── Controllers # API endpoints
├── wwwroot # Static files (thumbnails, etc.)
├── appsettings.json # Configuration
├── Program.cs # Application entry point
├── Dockerfile # Container configuration
│
├── VideoStreamingPlatform.Commons
│ ├── DTOs # Data Transfer Objects
│ ├── Interfaces # Shared service interfaces
│ └── Hubs # SignalR hubs (if used)
│
├── VideoStreamingPlatform.Database
│ ├── Models # Entity models
│ ├── Migrations # EF Core migrations
│ ├── Helper # Database helpers
│ └── DbContext # Database context configuration
│
└── VideoStreamingPlatform.Service
├── AuthService
├── VideoService
├── CommentService
├── CategoryService
├── EmailService
├── RecommendationService
├── CategoryCleanupService (Background Worker)
└── Other business logic services
Frontend (Angular 19)
src/app
│
├── components # Feature components (home, video-view, video-create, etc.)
├── services # API communication services
├── interfaces # TypeScript interfaces
├── guards # Route protection (AuthGuard, etc.)
├── material # Angular Material module aggregation
├── confirm-dialog # Reusable confirmation modal component
└── app.module.ts # Root Angular module