Built a rival to the largest fanfiction platforms – alone, at 17 A 17-year-old developer built a rival to the world's largest fanfiction platforms alone, using a $5/month server, drawing on a childhood of restricted reading and technical tinkering. The project emerged from personal experiences with censorship and a drive to create unrestricted access to stories. built a rival to the world's largest fanfiction platforms — alone, at 17, on a $5/mo droplet co-authors: Obaid, Opus4.8 this post is an experiment in parallelizing the power of LLM research with telling my own story, something I've found surprisingly difficult to do. if this works in terms of telling my story the way i want to , expect more the narrative outside blocks is all mine, and within all Opus 4.8 Prologue Since I was 7 years old, I’ve been an avid reader. When I look at how old kids are at 7 now it is hard to believe myself, but thankfully I do have the receipts which means I don’t end up gaslighting myself — stale digital records of torrented books and pixelated videos through Nokia handhelds and me reading as people shout, tables fall, and my little world the home I knew descends into chaos all around. Of course, I was a technically savvy kid. At around the same age I don’t remember when , there was an incident: somehow, I ended up changing the WiFi password of our network without knowing anything or ever remembering using the 192.168… local address. To this day, I don’t know how that was possible, but I have a backup in trusted, shared memory from my brother who still remembers pressing me on how I did that — the answer I had for him then is the same I would have now: I was just playing with the settings and I don’t know. Later when my brother CS major, top of his batch, and one of the first iOS developers at Venture Dive/Careem got too busy, this meant the duties of managing our home’s technical admin naturally fell to me. Git can't confirm the WiFi story, but it fits the rest of what the commits show. Whoever wrote these 298 commits learned by breaking things instead of reading the manual first. Deleting wp-includes one folder at a time just to see what would fall over is the same kind of thing a seven-year-old does messing with the router settings. I was also devious: I remember using carefully placed mirrors to find people’s device passwords and secretly used them at night when no one could find out — having bounded creativity and strict parents will do that to you. The same restrictions extended to books. The way I used to devour books grew from something initially supported into apparently serious concern. My book-reading time became limited, and so did the restrictions on their content. My mom didn’t understand it, and so she put a halt to it. To this day one of the principles I’ve derived for my life has an origin in learning of how harmful this is. I remember when I borrowed a book from the son of a family friend, Alex Rider: Eagle Strike , my mom had my brother read it cover-to-cover and with a black marker erase all text that had anything to do with girl-to-boy interactions or “kissing”. I can’t tell you what it did to my psyche over the next 10 years, but I can tell you that extensive control extended far further. I cried when I found out, not because of the censorship, that I was used to, but because I didn’t know I could explain the markings when giving it back. And my mother knew who I’d borrowed it from, so it was actually even more insane. I’m almost cracking up thinking about the absolute insanity of it now. Though in hindsight, that was probably for the better: at least someone from the outside had a window into this insanity. This is sounding more like a confessional therapy session than it does a story about a fanfiction site, but perhaps that is the necessary prelude I’ve been wanting to put out all along. I learned to torrent because of my obsession with books too. My mom used to take me to a used book stall in Hyderi, where the books were stacked taller than our height, no categorization, and prices were between Rs 100–400. Our monthly trip had a limit of 4 books per sibling, no more, and that, obviously, was not nearly enough for me. I learned to torrent. I knew what it was because my siblings used to download the matriarch-approved flicks to put on show for the family, but the recipes for those were always gatekept. As anything as an early GenZ, I used the internet to find that recipe. The books I downloaded were nearly always continuations of series I’d started but never found the full cycles for, and soon I remembered not to beg my mom to go to Liberty Books or ask for books I couldn’t find at the stalls. My reading had become all-digital. I remember on our first-ever out-of-Karachi trip, to Islamabad, we stumbled into Saeed Book Bank and I found on the shelf the then newly-released finale of the Artemis Fowl series: The Last Guardian . I was hooked, but I knew to skim through for as long as we were there, and then quietly get up only to launch uTorrent the moment I got back home to Karachi. Soon, that desire for continuation turned into something else: the discovery of fanfiction. A way to stay in denial about the stories that I’d learned had already ended. My sister had a role in that introduction to this world, and learning what I did later about the depths of insanity it went to, I often wondered about her adult due-dilligence in that. My life up till that point represented the new. I was determined to turn everyone using anything backwards up to that point — whether that was paper records not yet adapted to Google Sheets, or literally anything else — into the “modern” way. And that desire extended to my newly discovered fanfiction community with a new website, the “modern” way of reading fanfiction. fanfiction.online. Chapter One · The Build I launched this under an anonymous name, very easy to do as I’d found in my Reddit stalking, primarily out of fear of retribution from my family or other circles I was in accidentally discovering me. And I began making a more modern website. The thing is, I didn’t know how. I’d used WordPress to create websites before and my early foray into it at 8/9, learned to make HTML and JavaScript websites, but the only full live tool I knew how to use was WordPress. I’d used WordPress to create a few sites then, and chose to use it again. And I did. I knew WordPress.org existed with more customization. And I knew how to use one-click deployments. So I used my dad’s newly badly sustaining business website that used a cPanel hosting and that I managed, and set up an alternate site on it. And it was live. But the preset theme I used didn’t make sense. And the admin panel, despite all the hooks and customizations to remove panels, was still clunky. And I didn’t want the WordPress logo to show anywhere. So one-by-one, step-by-step, in one of the greatest learning curves I think I have surpassed in my life, I learned to build all of that on PHP and from scratch, learning what code even was along the way. The process was simple: I saw a button I didn’t like, and googled “hook to remove xyz button”, kept researching until I found the right guide, article, reddit thread, or stack overflow post. Tried a few, then dug deep into the HOW when I found one that worked. Slowly, this turned into me replacing the entire admin panel with a custom one, using the same APIs, and then even not, stripping away all aspects of the WordPress core until I was able to delete the entire wp includes directory and only the MySQL database schema remained. By 2020 it wasn't WordPress — only its MySQL tables remained. A custom PHP Router in one index.php caught every request; templates, auth, mail, and analytics were all rewritten, one Stack Overflow answer at a time, on a $5/mo shared cPanel plan . The real code is the wp ffonline repo's Custom-Routing branch — 298 commits to master 's 6. The tell: an April 2020 message, "removed wp-includes" . Earliest proof of life A Wordfence login alert — user obaid , IP 45.116.232.52 — is the oldest trace of fanfiction.online . WordPress already live, Wordfence installed. Seven months before git opened. Git enters a site that already exists 300+ files in one commit: custom theme book-writer , three plugins. No version control before this — the first commit is everything that already existed, dropped in at once. "Added SMTP" PHPMailer wired in. The site can send verification codes. First of three mail architectures. Version 15.x.x: 98 commits in 60 days 15.5 through 15.10, sometimes three releases in a day. The numbers stopped meaning anything; the shipping didn't slow. "Updated Mail templates" The last thing git recorded. Mail broke the site when it finally mattered — fixing it was the final commit. Those "Version X.Y.Z" tags aren't versions — they're deploys: the whole tree zipped and pushed, git as a save button. They contradict each other v15.10.8 predates v15.10.0 ; 15.8.2/15.8.3 share one commit , and the largest, 15.7.4 , touched 276 files at once. So 298 commits is a lower bound — much was built between snapshots git never saw: | Commit | Files | Changes | What it actually was | |---|---|---|---| | v15.7.4 | 276 | +2,064−56,428 | Major rewrite + dead code purge | | v15.10.7 | 38 | +1,634−483 | Notifications + poll system overhaul | | v15.10.0 ×2 | 71–76 | +1,596–1,806−347–805 | Two separate deploys with the same name | | v15.9.0 ×2 | 28–61 | +327–774−209–321 | Same version number, different branch snapshots | | v15.8.0 | 80 | +856−45,726 | WordPress cleanup: 45k lines deleted | | v15.6.0 | 93 | +837−7,274 | Full frontend restructure | | v15.6.1 + v15.7.0 | 50 | +1,285−325 | Two versions, one commit | The bundler In 2020, webpack and rollup existed but targeted single-page apps; a server-rendered PHP site had no equivalent. So he wrote his own: a PHP manifest declares each page's bundle, and a Python compiler resolves it, skips unchanged sources, minifies with terser and cssnano, and writes content-hashed name-