eed46cf266ac5c2a3923237d9229fcdc8e08db85
persistClip() had grown too large and handled multiple concerns. This change moves the database save logic into saveClip(), making persistClip() smaller and easier to refactor further.
Overview
The VoD System is a powerful clip management platform designed to streamline how you handle your video content. Whether you're a content creator, streamer, or educator, VoD System lets you:
- Upload clips effortlessly and securely.
- Edit and trim videos with intuitive controls.
- Compress files to specific file sizes.
- Organize your clips for quick access and sharing.
This VoD system began as a small project back in my 5th year of secondary school, during lockdown. I wanted a quick way to send game clips to Discord, but the 8MB file size limit made it frustrating to manually tweak bitrates for every clip. To solve that, I wrote a simple Python script to automate the process. What started as a quick fix has since evolved into a full-fledged system — now built with a Spring Boot backend and a modern React/Vite frontend.
Requirements
- Docker & Docker Compose
- JDK 21+
- Node.js 16+
- FFMPEG
- Google Client keys
Steps
- Create your own two
.envfiles based off theexample.envfiles in the root and in the frontend folder - Spin up docker container with
docker compose up - Run
./mvnw clean packageto build the jar - Run
./mvnw spring-boot:runto run the backend section - Run
cd frontend && npm install && npm run devto build and run the frontend - Endpoints should be available at 8080 (backend) and 5173 (frontend)
Future Plans
- User Management
- Database integration with authentication and login
- Clip saving and management for authenticated users
- Format Handling
- Backend conversion of non-MP4 files via FFMPEG for broader format support
- Input Sources
- Support for local file uploads and YouTube imports
- Testing
- Unit tests, including coverage for FFMPEG-related functionality
- API Documentation
- Comprehensive and maintainable backend API docs
Description
A lightweight VoD system for uploading, editing, and compressing video clips to a target file size for easy sharing.
Languages
Java
59.9%
TypeScript
36.7%
CSS
2.1%
JavaScript
0.6%
Dockerfile
0.4%
Other
0.3%