Vibes.
Your feed. Your rules.
A personal short-video experience. A Flutter player, Angular dashboard, and self-hosted API put your media back in your hands.

from the noise.
What it does.
- Vertical video browsing in Flutter
- Private media API and JWT authentication
- Angular dashboard for uploads and content
- Docker Compose deployment with persistent media storage
The problem.
A personal video collection should be browsable without handing its organization to a social platform. The engineering problem spans playback, media administration, authentication, and deployment.
The solution.
Separate the mobile viewing experience from the dashboard and media service. The Flutter player offers vertical browsing, while an Angular administration interface manages content served by an Express API.
Product experience.
The system supports a private collection, vertical playback and liked-video metadata. The public website demonstrates sample playback and labels conceptual notes and dashboard interactions separately from shipped app functionality.
Engineering decisions.
SQLite and a persistent media volume keep self-hosting approachable. Docker Compose assembles the backend and dashboard without coupling them to the independent marketing website.
Challenges & trade-offs.
The mobile app, API and dashboard have distinct runtime and deployment needs. A sample in the public site is not evidence that a visitor is connected to a private media server.
Clear boundaries.
Connected parts.
- 01Flutter player
- 02Angular dashboard
- 03Express media API
- 04SQLite & media volume
The honest edges.
The live link opens the public product website. A personal server and app setup are separate; public demo media is illustrative.
Capabilities are grounded in repository documentation and implementation. No adoption figures or performance improvements are inferred.