DEV Community

Cover image for VideoFloppy: Five Years, Ten Users, One Dollar
Giorgi Mgebrishvili
Giorgi Mgebrishvili

Posted on Originally published at Medium

VideoFloppy: Five Years, Ten Users, One Dollar

I built it because something I loved disappeared. Five years later it has a handful of users, one paying customer, and it taught me more than any tutorial.

In 2017 I was preparing for IELTS, and somebody gave me the advice everyone gives: watch films with subtitles.

That advice sent me looking for a specific kind of tool. Not a streaming service — a search engine for phrases. Type a sentence, and see it spoken, in context, in whatever film happened to contain it. I found one. An Estonian site, judging by the .ee domain, whose name I have completely forgotten.

It did not host anything. It collected embedded players from video hosts elsewhere and made them searchable. That distinction mattered technically and it mattered legally, and at the time I did not think much about either — I just thought it was clever.

Then it closed. No announcement, no explanation. I looked for an alternative for years and never found one.

In 2021 I decided to build my own.

The name

I asked a friend, because naming things is not my strength.

His logic was that the site is light. It stores nothing itself — no video files, no uploads, no gigabytes sitting on a disk. It holds pointers to things that live elsewhere, the way a floppy disk holds very little and is proud of it.

VideoFloppy. It stuck.

What it actually is

A place to save, organise, and share videos that already exist on the internet.

You bookmark a video from YouTube or another host, put it into an album, and share it or keep it. You can follow other users. The content today is mostly YouTube trailers, music videos, and whatever people have collected — my own albums are largely seventies and eighties disco, and an unreasonable amount of Modern Talking.

Nothing is uploaded to my server. Every video plays from the host it already lives on, which means their CDN carries the bandwidth and my VPS stays cheap and idle. That was a deliberate architectural choice, and it is the single reason the project has survived five years without costing me anything meaningful.

I take DMCA seriously. There is a takedown form, and when complaints have arrived — around eleven videos over the years — I removed them. That is the entire dispute history of the project.

Building it around two jobs

I was working at an international company and at one of the Ministry of Healthcare's agencies at the same time. VideoFloppy was built in the gaps.

The MVP took roughly two months: registration first, then albums, then video saving. A fully working version took about half a year. Not because the work was hard, but because there were four or five hours a week to give it.

I mention this because side project articles usually skip it. The interesting constraint was never technical. It was that I had two employers and the project got whatever was left.

The technical part

The backend is N-tier Architecture in .NET, which was the point of the whole exercise as much as the site itself. I wanted to build something properly layered from scratch, with nobody reviewing it and nobody rushing me. That part I am genuinely proud of.

The frontend is Blazor Server. I came from Razor Pages, and the syntax was familiar enough that the transition felt natural.

The one thing that caught me out was IP addresses. Blazor Server executes on the server, so requests to my backend API carried the hosting IP rather than the user's. Obvious in hindsight; not obvious at 1 a.m. The fix was to capture the client IP in the Blazor layer and pass it through to the API in encrypted form. It is the kind of problem you only meet by building something real.

I added alertify.js for the notifications, because default browser alerts are depressing and I wanted the site to feel a little friendlier.

Later I migrated from .NET Core 3.1 to .NET 6. Less painful than expected: the main structural change was Startup.cs disappearing and everything moving into Program.cs. Mostly careful copying, not rewriting.

The whole thing runs on the cheapest Contabo VPS I could find, which has enough headroom to host several projects at once.

And I built all of it manually. ChatGPT existed by then. I did not use it, not out of principle, but because it did not occur to me. If I revisit the project, the first thing I will do is run an AI-assisted pass over it looking for vulnerabilities.

Seven languages, chosen on purpose

The interface exists in English, Polish, Russian, Spanish, German, French, and Italian. The translations came from Google Translate and an Excel file of strings, so I make no claims about their elegance.

The selection was not sentimental. Those are languages spoken across many countries rather than one, and they map onto regions where video platforms actually pay for views. There is no Chinese, because the internet there is restricted enough that neither my site nor the hosts it embeds would reach anyone, and because those views are worth nothing commercially.

That is a strange thing to reason about for a site with almost no users. But I wanted the structure to be correct even if the scale never arrived.

The economics

There is a VIP tier. It gives ten times the normal limits — a hundred albums instead of ten, and so on.

The model, in theory, is a two-sided one: more viewers make the platform more attractive to people who share videos, and more shared videos attract viewers. Three groups exist on paper — administrators, uploaders, and viewers — although uploaders and viewers are usually the same people.

In practice, here is the complete revenue history.

A user from Italy once paid one dollar via PayPal. The transaction failed for technical reasons on my side, so he never got what he paid for. I gave him a year of VIP for free, then fixed the payment flow. PayPal later changed something about their API and I moved payments to cryptocurrency.

One dollar. That is it. And I remember it clearly, because someone I have never met, in a country I have never lived in, found a site with no marketing budget and decided it was worth paying for. That was the moment it stopped being an exercise.

Where it stands

Registered users number in the tens. Real traffic is close to zero — most of what the analytics show is bots. I have never advertised it. I have never seriously tried to promote it.

The project is in maintenance now, not development. The last thing I remember fixing was a CORS error. Someday I may rewrite the frontend in Angular, mostly to see what that feels like.

The interface is unfinished, which is the honest word for it. The architecture is not.

Was it worth it

I never built VideoFloppy to make money, so it has not disappointed me by failing to.

What I got instead: a N-tier Architecture implementation I designed entirely myself, real experience with Blazor Server before it appeared on any job description I applied for, a migration between .NET versions on a system I fully understood, and a small collection of problems — client IPs, CORS, payment APIs, localisation — that I met as an owner rather than as an assignee.

Every one of those has been useful in paid work since.

And somewhere out there is a man in Italy with a lifetime of goodwill from me, who paid a dollar for a website that a stranger in Tbilisi built because a different website disappeared.

The site is still online at videofloppy.com. It does not need anything from you. But it is there, and it works, and after five years that feels like the point.


This article was originally published on Medium.

Have you built something nobody uses — and kept it running anyway? I'm curious how other people justify their side projects to themselves. 👇

Top comments (0)