I wanted something like streamable/youtube where I upload my video clips and it would last as long as the server stays up.
No plans to maintain this project as long as it fits my minimal needs
- .NET 10.0
- Entity Framework Core
- PostgreSQL
- FFmpeg
- HLS (HTTP Live Streaming)
- Vue.js 3
- Tailwind v4
-
Clone the repository
git clone https://github.com/DevRuto/ClipViewer.git cd ClipViewer -
Start the application
docker compose up --build
-
Access the application
- http://localhost:5000
- Database: PostgreSQL on port 5432
-
Adding users
- There's a
create_user.shscript that would connect to the docker postgres db and create a user with the given username - There's also
update_user.shto change the API key for the given username if needed for any reason
- There's a
-
Set up the database
- Create a new PostgreSQL database
- Update the connection string in
appsettings.json
-
Run database migrations
cd ClipViewer.API -
Start the backend
dotnet run
-
Install dependencies
cd clipviewer.vue npm install -
Start the development server
npm run dev
I wanted to create an app that I can self-host to hold videos to share with. The various online solutions tend to expire videos after some time from their free tier, or take too long to process (which is fair due to computing power). None of these are unreasonable but it provided an idea for a side project to work on.
Additionally with the rise of AI tools in modern softwares, it gave me a chance to see how far these AI tools can go. There were 2 particular weak spots I had that AI was able to help compensate for the most part. The vue app in this project used Tailwind CSS framework. AI was able to help format the app in a responsive way with it's knowledge of tailwind's utility classes, so I didn't really need to exert much brainpower into the UI/UX portion of the app.
Testing was another point, but moreso on the laziness side rather than weak. I gave a prompt to create tests and (Windsurf) was able to generate these tests based on it's deep understanding of the project through cascade. These tests weren't perfect, but it was still mostly usable. Some parts needed manual intervention. Part of the reason is due to outdated knowledge of the framework.
This project is licensed under the MIT License - see the LICENSE file for details.