Skip to content

Ahmedabdelaziz77/Streamify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 

Repository files navigation

Streamify

A full-stack video streaming platform with secure authentication, media streaming, admin control, and a rich client experience.

Backend: Spring Boot Frontend: Angular 20


Tech Stack

Backend

  • Java 21
  • Spring Boot (Web, Security, Data JPA, Validation)
  • JWT (jjwt)
  • MySQL (H2 for development)
  • Java Mail (SMTP – Gmail)
  • Lombok
  • Tomcat (large file & streaming support)

Frontend

  • Angular 20
  • Angular Material
  • RxJS
  • CSS (custom styling)

Infrastructure & Media

  • UUID-based file storage
  • HTTP Range streaming (206)
  • Multipart upload handling
  • Role-based access control

Architecture

flowchart LR
  subgraph Frontend
    Client[Angular Client]
  end

  subgraph Backend
    API[Spring Boot API]
    Auth[Auth & Security]
    Users[Users & Roles]
    Videos[Videos]
    Watchlist[Watchlist]
  end

  subgraph Data
    DB[MySQL Database]
    FS[File Storage]
  end

  Client -->|HTTP + JWT| API
  API --> Auth
  API --> Users
  API --> Videos
  API --> Watchlist
  API --> DB
  API --> FS
Loading

Screenshots

Admin – Video Management

Custom Video Player

Upload New Video

User Management


Core Features

Authentication & Accounts

  • Signup with email verification
  • JWT-based login
  • Password reset and change
  • Resend verification
  • Auth state restoration on frontend

Authorization

  • Role-based access (ADMIN / USER)
  • Protected admin endpoints
  • Last-admin safety guarantees

Video Platform

  • Video upload with metadata
  • HTTP range-based streaming
  • Custom video player
  • Featured and published videos
  • Infinite scrolling & search

Admin Capabilities

  • User management
  • Video management
  • Publish control
  • Platform statistics
  • Safe admin constraints

User Experience

  • Watchlist
  • Personalized video listings
  • Debounced search
  • Scroll position restore
  • Keyboard-controlled player

API Design

All endpoints are RESTful, stateless, and JWT-secured where required.


Authentication API

POST   /api/auth/signup
POST   /api/auth/login
GET    /api/auth/current-user

GET    /api/auth/verify-email
GET    /api/auth/validate-email
POST   /api/auth/resend-verification

POST   /api/auth/forgot-password
POST   /api/auth/reset-password
POST   /api/auth/change-password

Purpose:

  • Account lifecycle
  • Email verification
  • Password security
  • JWT session handling

User Management API (Admin Only)

GET    /api/users
POST   /api/users
PUT    /api/users/{id}
DELETE /api/users/{id}

PUT    /api/users/{id}/toggle-status
PUT    /api/users/{id}/change-role

Rules enforced:

  • Last admin protection
  • Self-modification prevention
  • Active admin guarantee

Video Management API

Admin

GET    /api/videos/admin
POST   /api/videos/admin
PUT    /api/videos/admin/{id}
DELETE /api/videos/admin/{id}

PATCH  /api/videos/admin/{id}/publish
GET    /api/videos/admin/stats

Users

GET    /api/videos/published
GET    /api/videos/featured

Features:

  • Pagination & search
  • Publish control
  • Admin statistics
  • User discovery

Media Upload & Streaming API

POST   /api/files/upload/video
POST   /api/files/upload/image

GET    /api/files/video/{uuid}
GET    /api/files/image/{uuid}

Streaming:

  • Full content delivery
  • HTTP Range support (206)
  • Large file optimized

Watchlist API

GET    /api/watchlist
POST   /api/watchlist/{videoId}
DELETE /api/watchlist/{videoId}

Behavior:

  • User-specific
  • Integrated with video listings
  • Fast toggle operations

Video Streaming Flow

Request Video
     |
JWT Validation
     |
Range Parsing
     |
206 Partial OR 200 Full
     |
Stream File

Frontend Capabilities

  • Auth guards & admin guards
  • Lazy-loaded admin module
  • Infinite scrolling
  • Debounced search
  • Media upload with progress
  • Custom video player dialog

Principles

  • Stateless backend
  • Secure by default
  • Explicit role control
  • Scalable streaming
  • Clean separation of concerns

About

A modern full-stack video streaming system built with Java Spring Boot and Angular 20, implementing secure JWT authentication, email verification and password recovery, video upload and HTTP range streaming, watchlists, admin content control, and a custom video player UI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors