A web app for the 21st century: search, stream, and watch videos directly from torrents.
Hypertube is a full-stack web application built with Spring Boot (backend) and Angular (frontend).
It enables users to search for movies, stream them instantly, and manage their profiles, all while respecting strict security and UI/UX best practices.
- Register with email, username, first/last name, password (securely hashed).
- Login via:
- Username & password
- Omniauth (42 + one other provider of choice)
- Password reset via email.
- Logout from any page with one click.
- Multi-language support (default English).
- User profile management (update email, profile picture, personal info).
- Public user profiles (without exposing email).
- Accessible only to authenticated users.
- Search movies via at least two external APIs (OMDb/TMDb + another source).
- Display movies as thumbnails:
- Title, year, IMDb rating, cover image.
- Watched/unwatched differentiation.
- Infinite scrolling (auto-load next page).
- Sort & filter by genre, rating, year, etc.
- Show trending/popular movies if no search is performed.
- Movie details: summary, cast, year, length, rating, cover.
- Built-in video player with:
- Subtitles (auto-download English + user’s preferred language if available).
- On-the-fly format conversion (support at least
mkv→ mp4/webm).
- Background torrent download & streaming:
- Start playback once enough data is available.
- Movies cached on server (deleted if unwatched for 30+ days).
- Comments section:
- Post/view comments.
- Display author, date, and content.
POST /oauth/token→ Get auth token.GET /users,GET /users/:id,PATCH /users/:id→ Manage profiles.GET /movies,GET /movies/:id→ Retrieve movie info.GET /comments,GET /comments/:id→ Fetch comments.POST /commentsorPOST /movies/:id/comments→ Post comment.- Proper HTTP status codes for invalid routes/actions.
- Backend: Spring Boot (Java), OAuth2, RESTful API
- Frontend: Angular + [UI library of choice] (e.g. Angular Material / NG-Zorro / PrimeNG)
- Database: PostgreSQL / MySQL
- Torrent Handling: Custom server-side implementation (
⚠️ no WebTorrent/Peerflix/Pulsar allowed) - APIs: OMDb / TMDb + another torrent/video source
- Deployment: Docker, Nginx/Apache
- Responsive design (desktop + mobile).
- Minimum layout: Header, Main, Footer.
- Form validation & input sanitization.
- Secure handling of uploads and user input.
- No plain-text passwords (must be hashed/salted).
- No SQL injections or XSS vulnerabilities.
- No storing credentials in Git — use
.env(excluded from repo). - Application must work on latest Firefox & Chrome.
- No errors/warnings in client/server console.
- Extra Omniauth providers (Google, GitHub, etc.)
- Multiple video resolutions.
- Streaming via MediaStream API.
- Extended API endpoints (e.g., add/remove movies).
cd backend
cp .env.example .env # configure DB + API keys
./mvnw spring-boot:runcd frontend
npm install
ng serve- Frontend: http://localhost:4200
- Backend API: http://localhost:8080
This project is built by 4 teammates as part of the Hypertube assignment.
- Backend: Spring Boot developers
- Frontend: Angular developers
- UI/UX: modern, responsive, mobile-first design
This project is for educational purposes only.