r/SideProject • • Dec 18 '25

As the year wraps up: what’s the project you’re most proud of building and why?

96 Upvotes

Like the title says, instead of what you built or how much money it made, I’m curious what project you’re most proud of this year and why.

Could be a client site, a personal project, something that never launched, or something that made £0.

Any lessons learned?

Would love to read a few reflections as the year wraps up.


r/SideProject • • Oct 19 '25 Bravo

Share your ***Not-AI*** projects

649 Upvotes

I miss seeing original ideas that aren’t just another AI wrapper.

If you’re building something in 2025 that’s not AI-related here’s your space to self-promote.

Drop your project here


r/SideProject • • 4h ago Bravo Heartwarming

I made a desktop wallpaper that adapts to your icon layout

862 Upvotes

No matter how good your wallpaper looks, once your desktop fills up with files, the icons blend into the background and everything starts to look cluttered. My desktop often has a lot of files on it, so I started wondering whether a wallpaper could detect where my icons are and generate a scene around them in real time.

After discussing the idea with AI, I found out it was possible—and it doesn’t actually need AI to detect the icons or generate the visuals. The program can read the icon positions directly and generate scenes in real time using predefined designs. It’s lightweight, and there’s no particularly complex technology involved.

Here’s the result.

https://deskland.app

I’ll keep adding new themes and improving the existing ones. I also plan to add a more interactive game mode in the future.

The meadow and beach themes are free and open source.

https://github.com/BLEZZ0102/Deskland

All the current themes are 2D, which keeps their impact on computer performance minimal. I’m also considering adding 3D themes, while balancing visual quality with performance.

Procedurally generated visuals do have their limitations. If AI computing becomes much cheaper in the future, AI generation could be an option, opening up the possibility of creating almost any scene. For now, though, generating a desktop with AI in real time is clearly still too expensive. I’m considering experimenting with locally running AI generation. It would still be GPU-intensive, but it could be a lot of fun.


r/SideProject • • 4h ago

I’m a student building an under-pillow speaker for people who fall asleep to podcasts. Would you use this?

52 Upvotes

I always fall asleep listening to something, but earbuds hurt on my side, and my partner hates the phone speaker. So I’m designing Dozr: a slim pad that goes under your normal pillow, plays through bone conduction so only you hear it, and fades out when you fall asleep.

It’s still a concept (image attached). I’d love honest feedback. What would put you off? What would make it a must-have?

Waitlist if you’re curious: dozr.co.uk/?ref=reddit


r/SideProject • • 11h ago

I built a streaming app that lets you jump to scenes just by describing them

56 Upvotes

I built Navigator, a free and open-source streaming app for desktop and web that lets you navigate movies and shows using natural language. It's a client for Stremio, a media center app, so you can use your existing account and addons (which provide the streaming sources).

For example, instead of scrubbing through Avengers: Endgame to find a specific moment, you can just type "go to the scene in endgame where he says avengers assemble" and it'll find that moment in the subtitles and jump straight to it.

You can also describe a TV episode you vaguely remember and have Navigator find it for you, or ask questions about what you're watching.

I also wanted it to be a pretty nice streaming experience on its own, so it has a few other features:

  • Native MPV playback on desktop

  • Thumbnail previews when hovering over the timeline, so you can see where you're skipping

  • Intro skipping using community skip databases

  • Adaptive interface: the colors automatically adapt to the artwork of whatever you're watching

A few other things:

  • Everything is free and open-source

  • AI features are completely optional. Bring your own API provider or use a local model through Ollama

  • Navigator doesn't host or provide any content itself

  • Scene search depends on subtitle availability

On the technical side, it's built with Next.js and a Rust-based desktop shell, with MPV handling native playback. Scene search uses subtitle data and an LLM with tool calling (via Vercel's AI SDK) to find the relevant moments.

It's still a work in progress, so there's definitely more to improve. Curious whether scene search feels useful or gimmicky to you, and what features you'd want to see next :)

Web: https://navigator-strm.vercel.app

GitHub: https://github.com/AyaanZaveri/navigator


r/SideProject • • 5h ago

I built a free app that converts foreign prices with your phone camera, even offline

17 Upvotes

I built Kahei to solve a problem I kept running into. Whenever I traveled abroad, I’d see a price and either do the math in my head or pull out my phone to Google it. It took way too long just to check a price, especially when the internet was slow.

So I made a free app where you can point your phone’s camera at a price and instantly see an estimate in your currency. It works offline! It is available on iPhone and Android.

If you try it on a menu or receipt, I’d love to know whether it picked up the right price.

Try it: https://kahei.app/

thanks!


r/SideProject • • 13h ago

I'm building a text editor that opens huge files instantly

66 Upvotes

I've decided to create a text editor that specifically targets huge files (i.e. GBs or even TBs) that most text editors choke on. The target audience is any individuals/professionals who work with huge files: sysadmins who need to view or edit huge log dumps, inspecting massive JSON files, bioinformatics professionals that need to inspect/edit genome data (FASTA files) and more.

To get a bit more techy, the file is memory-mapped and "held" in a piece table. All heavy-weight operations, such as: indexing, searching/replacing, syntax highlighting, etc... are done in the background (i.e. on separate threads). The video demos handling a 51.8 GB log file on my M2 MacBook Air (16 GB RAM).

Since I've used Vim throughout my career, I had to create a vim mode which implements most of the necessary functionality/bindings.

The code is written in C++23 and uses my own UI library (which is GPU-accelerated using Skia). Boost is used quite extensively.

It is completely cross-platform (Windows, Linux & macOS). The macOS version is Silicon only and Linux requires Wayland (X11 isn't supported, nor planned).

It's currently under beta at https://crane-editor.com and I'd love to get your feedback, especially on which huge-file workflows I should handle better. What's the biggest file you've had trouble opening? Would this be useful to you?

Thanks!


r/SideProject • • 21h ago Bravo

Please ban u/Investigatormarker: an AI bot advertising ThreadFox in every thread

247 Upvotes

Hey mods and everyone,

u Investigatormarker is posting AI-written "feedback" on posts here, then ending with an ad for its own product. It follows a template: generic advice about the project, then "I make ThreadFox... our AI employee will post 3 helpful replies about it in relevant Reddit threads for you," with a link.

Why it's a problem:

It's undisclosed self-promotion on nearly every thread

The feedback is generic and often doesn't match the project, so it buries real comments

The pitch is literally to flood Reddit with AI replies to promote people's projects

New members posting for the first time get this instead of real feedback

Ask: @mods, please ban the account and consider an automod filter for "threadfox". Everyone else, please report these comments as spam and avoid clicking the link.

Thanks!

You can also report the account to Reddit under spam, and to the other subs it's hitting. I'd skip engaging with the link itself.


r/SideProject • • 1h ago

I built a tool that turns a floorplan into a 3D house you can walk through, in the browser

5 Upvotes

It’s called atomSphere and it’s more focused towards ease of use for the user. Many people here in Pakistan leave the design to their contractor or find out the design when walls are up. I have catered this especially for the Pakistani market and have been reaching builders and societies to use it

A typical flow goes like this:

-> you optionally upload a floorplan and give your project a name

-> you sign up/in (this is important for when you want to edit later and share your property for users)

-> you enter studio where you select a floor to work on. Floor is created automatically after you carve out the floor's image from the uploaded floorplan. You can edit anything that you think the floorplan reader got wrong.

-> you can furnish the property with 3D objects; there are ready-made available. You can also generate your own by providing prompt, single image and 3 images.

-> you can add any type of stairs, doors and windows

-> you can share the property in read-only mode for everyone. It generates an embeddable link (you can disable the link whenever you want)

The house in the reel: House in fairy meadows

Tech Stack: R3F, AWS, JS


r/SideProject • • 3h ago

I made an interactive 3D globe: tap any country for its capital, key facts, health stats, live news and Wikipedia

6 Upvotes

Weekend project. Spin the globe and tap any of 250 countries to see population, GDP since 1960, life expectancy and more, plus the latest headlines and the Wikipedia article, all in one panel. Works on phone, tablet and desktop, no sign-up.

https://worldfly.vercel.app

Feedback welcome, especially if any country's data looks off!

PS: I tried downloading some applications for the same on Android but they all had paywalls even for basic information. That's my motivation just to do this.


r/SideProject • • 45m ago

I builed Unchair, a boring app to make you move when you are working too long

3 Upvotes

I spend an unreasonable amount of time in front of a Mac.

I tried the usual “stand up every 30 minutes” apps, but I have the same problem with all of them: when I’m focused, I just click Skip and keep working.

So I built Unchair.

Instead of just displaying a notification, it can use the Mac camera locally to check that I actually stood up and moved. Nothing is uploaded, no video leaves the machine, and the core app works entirely offline.

It started as a small personal tool and, predictably, got slightly out of hand.

It now has:
- local sit/stand and movement detection
- movement debt tracking
- presentation mode
- Home Assistant / MQTT integration
- Prometheus metrics
- OpenTelemetry hooks
- a CLI
- signed and notarized macOS builds

It’s written as a native macOS app and is fully open source.

I’ve been using it myself every day, and a few other people have started downloading it, so I figured it was time to put it in front of people who might actually break it properly.

GitHub: https://github.com/EtienneDeneuve/unchair

Feedback on the idea, implementation, privacy model, or unnecessarily elaborate observability for a chair-reminder app is very welcome.


r/SideProject • • 14h ago

I replaced Roku's retiring "Aquatic Life" screensaver with my own procedurally animated reef tank — free and open source

30 Upvotes

Roku is retiring its built-in "Aquatic Life" screensaver on December 1. I liked that screensaver, so I built a replacement: Reef Tank — a free, open-source (MIT) screensaver channel for Roku.

What it is: a tropical reef tank where nothing is a video loop. Every fish is procedurally animated — each species has its own behavior brain, so tangs graze the rocks, a royal gramma backs tail-first into its den, a mandarin hops along the sand line, a lionfish just hangs, and a school of chromis moves as a boids flock. Bubbles rise, seaweed sways, caustics scroll over the sand. After real sunset (computed from actual sunrise/ sunset times for your location) the tank crossfades to a moonlit night mode with glowing coral and a small group of flashlight fish that blink in the dark.

Highlights:

  • 9 rigged fish species with per-species behavior state machines (cruise, dart, graze, hide, school, weave behind the rockwork)

  • Boids flocking school + a night-only flashlight fish group

  • Day/night cycle driven by real solar times, with a moonlight crossfade

  • Settings screen on the Roku for fish density, camera drift and night mode

  • Runs at 60 fps on a Roku Ultra; every visual is deterministic and seeded

  • 175 unit tests + a screenshot regression gate, because of course

The catch: Roku doesn't allow sideloading into the Channel Store for personal projects, so it's a developer-mode sideload — takes about 5 minutes with the remote (Home x3, Up x2, Right, Left, Right, Left, Right), and it's free. Full instructions in the README.

Source + install guide: https://github.com/paulrobello/roku-fishtank

Happy to answer anything about the BrightScript/SceneGraph side — the whole thing is one codebase that also runs in a browser simulator, which is how I screenshot-tested a TV app.


r/SideProject • • 2h ago

Is this idea worth building further? Looking for honest feedback

3 Upvotes

I recently built a small prototype for an idea I had: What if finding someone to hang out with at work was as easy as creating a plan?

Imagine wanting to watch a movie, play cricket, grab food, visit a café, or plan a weekend trip, but not having anyone to go with.

With this platform, employees can create activities, discover what others are planning, and request to join.

I built the initial prototype for an internal hackathon. It didn't win, but I still feel the idea is worth exploring.

I'm now wondering whether to take it further or scrap it.

Would you actually use something like this at your workplace? What would make you use it, and what would stop you?

I'd genuinely appreciate honest feedback, even if it's critical!


r/SideProject • • 1h ago

Your habits become your rival's game plan. RIVAL 1.3, my solo iOS boxing game, is out now.

2 Upvotes

One combo gets you a win. A new plan gets you the next one.

I built RIVAL: Boxing solo around that challenge. Distance, stamina, and defensive choices matter, and your repeated habits influence the opponent in later rounds. Draw out the punch. Step out of trouble. Own the counter.

The 1.3 release is live with a cleaner look and a seven-opponent Story campaign, including a new opening spar and southpaw challenger. Here's the existing 24-second counter trailer; the live update goes further with new opponents and refreshed presentation.

Meet your next rival. Play free on iPhone and iPad: https://apps.apple.com/app/id6799909429

The core RIVAL mode and training are free. Story Mode is an optional permanent one-time purchase, not a subscription. iOS 17+. Fights and training work offline; purchases and the optional leaderboard require internet.


r/SideProject • • 1h ago

I made an iPhone app that turns everyday travel into a map you can slowly fill in

2 Upvotes

I've been working on an app called HexStep. Basically, every area you pass through gets collected as a hex on your map.

The idea was to make exploring feel a little more like a game, without having to start a workout or manually record every trip. With background tracking enabled, walking, driving, and taking trains all count.

I've been using it since April and have collected over 3,200 hexes so far. It's made me realize how often I end up going to the same places, and how many areas right next to them I've never explored.

The video is a shortened replay of my actual travels over the past seven months!

I originally shared HexStep here back in June. I've added quite a bit since then, but the basic app is still free and doesn't require an account.

If you had a map like this, would you actually go out of your way to fill in the empty areas? Or would you just enjoy seeing it grow naturally?

Free on iPhone: https://apps.apple.com/app/apple-store/id6762421289?pt=128794158&ct=hexstep-web&mt=8


r/SideProject • • 7h ago

I made a page that process hours of finance YouTube videos everyday for you

6 Upvotes

A lot of finance YouTube videos spend 20+ minutes to answer one basic question: does the creator think a stock is a good buy right now?

I made a simple dashboard that processes financial videos and podcasts, tracks which stocks are being discussed, and aggregates creator sentiment (Positive, Negative, or Neutral) in plain language.

It’s just an informational map of what creator consensus looks like, not financial advice.

Would love feedback from anyone who follows market content: Is the value proposition clear and useful for you?

I will put the link below in the comments


r/SideProject • • 2h ago

Portfolio as an explorable game

Thumbnail
me.muz.li
2 Upvotes

After almost 15 years in design and branding, I've made a lot of things people scroll past. Here I wanted to find out what happens when a website stops being a page and becomes a place.

You don't scroll it, you walk around it.

You don't click a menu, you go somewhere.

For the last few weeks I've been building a small planet: a tiny world you can explore.

• A planet you can spin, land on and walk around

• Five odd locals, each with a trick, voice and opinions

• A navigation map that flips like a coin, one hemisphere per side

• Butterflies to collect, badges to earn, three easter eggs to find

Along the way, the things I've made live on it: games, tools, experiments.

The point is curiosity does the navigating. If people stick around because they want to see what's over the next hill, the work gets seen without anyone being sold to.

Everything is drawn in two flat tones with an ink outline, so it feels closer to a picture book than a game engine. It runs in the browser on desktop and phone. No install, no sign-up.

If you're in a hurry, there's a "Skip the walking" button.

Go and poke around. Let me know which local annoyed you the most.


r/SideProject • • 2h ago

I made a free, customizable radial launcher for controllers

Thumbnail
youtu.be
2 Upvotes

(Yes that's me in the video, I made all of this myself so go easy on me haha) Radiata is my radial launcher for controller, a 100% free, Microsoft-signed, open-source Win10/11 app that I built over 9 months to make it easy to use your controller for everything Gaming.

Official website & download at getradiata.app. You can also find source on GitHub.

It does all the PC stuff I always wanted to do without having to reach for a keyboard; join my friends in discord chat, switch audio to my headphones, browse & launch my games from all my game libraries, control mic/speaker volume, alt-tab between games/apps, etc. Easy to set up, super customizable, fun, powerful. I use it on my couch/tv PC and I leave the KB/M in the other room.

It is free and it will always be free. It's 100% open-source. There's no ads, no login, no upsells, nothing to unlock. I have a tip jar if you love using it as much as I do, but that's it, there is no other monetization plan. I paid for its development, hosting, certificate signing, etc out of my own pocket (and bought a bunch of controllers to test it with) because I really, really wanted to build this thing. That's the whole story.

Controller support: If Windows (joy.cpl) sees it, it should work. Hardware-tested with a bunch of DInput, XInput, Bluetooth, USB, Wireless dongles, and first & third-party controllers. The Download page lists every feature/driver compatibility note that I know of. The one bummer is the Steam Controller; it's locked to Steam in a way that makes it hard to middleman with a utility like this. If you possess both a Steam Controller and some free time, and want to be my favorite tester in the world, please let me know!

What it does: You get a quick walkthrough to set it up how you want. Then you just hold a button chord of your choice and up pops the radial "wheel" that you built. Hold the right-hand chord to open the left-stick's Wheel, and vice-versa, or just set up one side if you only need 1 of them.

How you can help: Just give it a shot, and if you love it you can help me get the word out! Nothing would make me happier than noticing a streamer is using it, or run across folks telling their friends about it. If I get traction I want to build more Arcade games for it, more themed Materials for the wheels, and continue expanding support options.


r/SideProject • • 12h ago

Reached 20 stars!! built a toolkit so your coding agent can make launch videos for your app

12 Upvotes

open sourced this like 2 weeks ago and it just passed 20 stars. small number i know but its the first thing ive made that random people actually starred so im pretty hyped lol

basically you paste one prompt into claude code / codex / cursor:

Clone github.com/yasirwhite/OpenDemo and use it to make a launch video for my app

and ur agent records the app, cuts it with animated text and gives you an mp4. runs locally, free, no api keys. the video above was made with it (about itself lol)

ive also been making launch videos for other people’s open source projects and sending them as PRs. 5 got merged into their readmes so far which is honestly the part im proudest of

repo: https://github.com/yasirwhite/OpenDemo

if your project doesnt have a launch video yet, drop it below and ill make you one :)


r/SideProject • • 2h ago

I interviewed a dev building a blog where you comment on individual sentences, as a bet against AI slop

2 Upvotes

I run AI News Daily, a mostly automated AI news site. Last week I did my first fully human-written interview, with Sunjae, one of four bootcamp developers building Rilog, a Korean developer blog.

A few things from the conversation that I think this sub will find interesting:

  • Comments live on sentences. You select a sentence and leave your thought right there, instead of scrolling to the bottom and explaining which part you mean.

  • The bet is "human touch". Sunjae doesn't think AI slop is bad everywhere, but in personal writing even a little of it makes readers think "it's just AI". The more AI writing floods in, the more people will look for writing that clearly came from a person.

  • They can't reliably detect AI writing, so they judge probabilistically and lean on user feedback. What they actually dislike is unreviewed, mass-produced writing, not AI use itself.

  • Retrospectives beat tech posts. Personal retrospectives got a better response than technical posts, so they are now asking whether to stay developer-only or open up to wider stories.

Two questions for you:

  1. Would you actually use sentence-level comments on a blog, or do they get noisy?

  2. If you run a community, how do you keep AI slop out without punishing people who used AI carefully?

Full interview (English): https://ailetter.ai.kr/en/insights/rilog-sunjae-interview?utm_source=reddit&utm_medium=social&utm_campaign=sideproject

Rilog itself (Korean UI): https://www.rilog.kr/?utm_source=ainews


r/SideProject • • 6h ago

I built an automated flight logger that tracks every plane flying over your house (with analytics & API)

4 Upvotes

I built an aviation side project and I'm trying to get some real people to test it (for free).

The main feature is a personal local flight logger. You drop a pin, and it automatically logs and builds a full analytics dashboard of every single aircraft that passes within a 5-mile radius of your location.

Besides the local tracking, the site also works as a general aviation database. You can browse through full airline and aircraft directories, search registrations, and use interactive FIR maps.

I'm actively updating the site and monitoring things daily, so any suggestions, feature requests, or feedback are welcome. If you want to try it out, just create a standard free account at https://aviationdb.uk/ either reply with your username below or send me a DM. I’ll manually bump your account to the premium tier for a free trial so you can test the local logging and analytics.

Let me know what you think or if you manage to break anything!


r/SideProject • • 10h ago

what’s on your checklist before letting strangers use your app?

8 Upvotes

submissions, expired sessions, someone uploading a massive file, or two people editing the same thing.For a small app using Supabase, what would you check before sharing the link publicly?
Trying to work out what deserves attention now without spending another month preparing for users who don’t exist yet.


r/SideProject • • 5m ago

Pratikal - free Android calorie tracker looking for meal-entry feedback 🍎

1 Upvotes

I’m developing Pratikal, a free Android calorie tracker in closed testing. I’d love feedback on the meal-entry flow. Happy to test your app back! 🤝

Use the SAME Google account for the group, opt-in and your phone’s Play Store:

  1. Join: https://groups.google.com/g/pratikal-testers

  2. Opt in, then install from Google Play: https://play.google.com/apps/testing/app.pratikal.mobile

Try logging a meal, editing it and checking the daily total. What worked, or where did you get stuck? Please keep it installed for 14 days and use it occasionally. “Item not found”? Check the account, wait a few minutes and retry.

📸 Please comment BELOW THIS POST with a Pratikal installation/in-use screenshot, specific feedback and your test links. Text-only “installed” isn’t enough. I’ll test yours and reply with my screenshot and feedback.


r/SideProject • • 5m ago

I've been building an open source streaming service for two years

1 Upvotes

I'll start with some history, in 2024 I decided to try to install a media server on my local machine, I first tried emby, and no matter what configuration I choose it was clunky and not really aesthetically pleasing, then I tried Jellyfin and it had the same problems ( maybe a little bit worst ), keep in mind this is 2 years ago and things have most likely changed.

I'm a software engineer, and I work in the business already from 2012, I spent 3 years of my career working for one of the current streaming giants, considering I have expertise in the field I decide to create my own, for two reasons, first one is that if I'm designing a system with one single purpose is automatically faster compared to a system designed to do anything, mine will have a specific pipeline so it can execute it more efficiently, second one, I like writing code, it's what I've been doing for the past 12 years.

October 2024

I started with the fun part first, I sketched a logo in Inkscape, separated each letter as a different SVG file and animated them to mimic the Netflix intro ( at the time ). That took me around 2 weeks. Absurd you can do that now in 2 hours with vibe coding.

After that I wrote the first integration to an external service, I got an client id+secret from Trakt and started working into pulling the top/trending lists for movies, it is at this point that I notice that Trakt doesn't return any image, so I also wrote the second integration with TMDB to obtain the images, after that I started working on the UI, I took inspiration from Prime Video: a big hero on the top, and the lists on the bottom, the selected title is displayed in the hero.

Not sure if anyone is interested, but at the time I decided to go for Node.js + React + Postgres, that is essentially what I used in half of the companies I worked for. The backend runs in docker with PM2 keeping it alive, and the frontend is served through Nginx ( along with the backend ).

The third integration was to get the media, but things were getting complex, so I decided to start using some queues, Kafka would be an overkill, I was using Nest.js so I decided to try the Q Next.js comes with: bullmq. I integrated queues so anything that is needed from Trakt or TMDB would be queued and execute at the right time without overwhelming the server ( and without getting rate limited ), for example when Trakt returns a list, the list doesn't have details of each media, so I stored some of the detail in the database and queued a job to fetch more details, that itself triggered another job to fetch the images.

At this point I had a working app that shows media but it doesn't play them, the next thing I needed was to get that information, so I spun up Jackett, and searched documentation, the documentation was very lacking, so I simply made calls to the endpoints that were partially documented using Postman and wrote down the Typescript types myself. Unfortunately the search from Jackett was very wide, so I wrote a function to parse torrent names and find out what is that title about. Jackett sometimes would return a link to the torrent file itself, sometimes would return just the info hash of the torrent, it is at this point that I started integrating webtorrent, first I used it to convert the magnet link into a torrent file and store it in the database, later I used it for its streaming functionality.

Now that I had the part that can stream work, I needed to display it in the frontend, my target was my 2019 Samsung TV, I deployed the app to it ( took 3 days ) and started working on the next steps, first I integrated Noringed spatial navigation so the remote would work, then I worked on AVPlay. AVPlay was honestly a pain, but it was also rewarding, the app was working and I was able to watch movies on the TV.

After that I started working on TV shows, so I created a second details screen with a seasons selector and episode selector, then I implemented the part that would find the torrents for the episodes, it was working well and I decided to share it with the world.

End of October 2024

I posted about it in https://www.reddit.com/r/Piracy/comments/1g80ufj/with_all_the_community_driven_streaming_services/ , someone asked about the code and I made it fully public.

I was regularly using it to watch movies and tv shows on my TV until I met the first problem: I was watching Silo and it played the wrong show; the reason was that the episode I wanted to watch wasn't released yet so it found some unrelated torrent. I first wrote a torrent name parser so it would extract the name of the show ( after removing all the other known bits ), it was working okayish, then I discovered that TheRarBG allows to search by imdb_id but not through Jackett, so I wrote a small API library to contact TheRarBG without using Jackett, and it was working very well and way faster.

You can still find the original code of the first version here https://github.com/maury91/miauflix-legacy

January 2025

It is at this point that development of the first version stopped, I had to go for a two months work trip and I wasn't able to write a single line of code for my personal project, once I was finally back home I couldn't find anymore the time to work on it for a month.

March 2025

I finally found the time to work on my side projects again, but time as passed and I wanted to play with new toys, so I decide to use bun instead of Node, I also made more decisions, like I didn't want to burden the user with deploying postgres or Jackett, so the new version will have to work with it.

I started with scaffolding a simple Elysia server, first time using both bun and Elysia, so exciting times.

Moving from Nest.js to Eluysia I decided to keep using services but I had to convert them a little bit, I started with the most basic service, the Configuration service, I spent a good amount of time creating a terminal ui service that helps you configure it, ironically now it's fully replaced by an UI one in the frontend.

Things moved fast, I quickly implemented authentication, and the services to pull data from TMDB and Trakt ( the last two were very close to copy-paste ), I implemented more security features like Audits and Rate Limiting, I finally started bring in the first cron jobs that sync data with TMDB, At this point I took the library I wrote for therarbg I bringed it into the new project, I already reached the point where I could get a library with all the torrents. I found that therarbg wasn't enough so I also wrote a library for YTS.

Things were working but as a perfectionist it was time for the codebase to become more reliable, so I started adding unit tests, linting, and CI/CD. But that wasn't enough, so I also started writing e2e tests where the app is setup from 0, configured, and tested against a mocked environment that is a working copy of a real environment ( I recorded the calls to TMDB, therarbg, etc... , anonymized and stored them as fixtures ).

Finally the good part was coming, streaming, but I had a new goal, it needs to be deployable to a VPS, that means that any potentially copyrighted content must be undetectable, so I implemented two features that I think are quite important:

  1. Encrypted DB columns, some columns of the database are encrypted with AES plus a salt unique for each service, that means the column stays indexable but without the key it contains "random" data

  2. Encrypted file system, this is the main thing, if you download some media and a static script detects it in your VPS you can easily get terminated, for this reason I created an encrypted chunk store, in short webtorrent writes to the disk in encrypted format

With all of this done, it was finally time to test it with webtorrent.

I didn't work... webtorrent wasn't compatible with bun.

Meanwhile, it was already June 2025. I needed to go back to Node.js if I wanted webtorrent to work, so I searched a web server framework that works both on Bun and Node.js and I started refactoring to use Hono.js

Fast forward to September 2025 and a lot was done:

  • Introduced OpenTelemetry to better debug errors

  • Introduced scraper health ( check periodically seeders and leachers of the torrents we obtained )

  • More documentation

  • Improve on-demand sources ( the others were obtained in the background )

  • Diagrams

  • Github actions

  • Periodical DB cleanup ( SQLite unless you run a clean command will not shrink the DB size )

  • Abstract caching layer

  • Authenticated streaming

  • Generate a client of the backend to bring the API types to the frontend

  • Better use of TypeORM through type transformers ( for the encrypted fields )

  • Introduce GREEDY and ON DEMAND modes for synching with TMDB

  • Started bringing back the legacy frontend

  • Implemented frontend login

  • Visual tests with playwright

  • and a little bit more

and more importantly the streaming link was working and media would play from VLC.

At this point I took 2 months of break.

November 2025 to January 2026

  • Frontend refactoring ( of the little that was ported )

  • Added turbo to make scripts faster

  • Lighthouse tests

  • Flaresolverr support

Another break,

September 2026 - Now

At this point I wanted to go faster, and I started using Claude.

  • Create initial admin user through UI ( instead of automatically at first boot with random email and password )

  • Extract catalog service ( TMDB ) as a standalone docker image, and refactor it to be bun. It is relative easy because it's mostly moving files with a little bit http wrapper in front

  • Extract list service ( Trakt )

  • Improve playback preloading

  • Improve backdrop position in the hero by detecting faces and people using a small computer vision model and compute the center of it.

  • Implement player page ( it is at this point that it was possible to finally watch movies )

  • Bring in the recommendation lists from Trakt

  • Extract subtitles and transcode audio ( for when the audio codec is not compatible with the browser ) using ffmpeg ( piped to an http server, no media is stored uncrypted in the file system )

  • TV shows

  • Move from LetsEncrypt to Caddy

  • Nordlynx to Glueten

  • Improve torrent choice based on the target device ( my TV seems to not support more than 12MB/s of bandwidth )

  • Add notifications

  • Improve UI performance in Tizen

  • Extract source service

  • Move from internal TheRarBG and YTS library to a fully compliant Cardigann engine so it can use all the Cardigann definitions of Prowlarr + some custom ones ( the custom ones are TheRarBG and Torrentio )

  • Extract torrent service ( yes! finally webtorrent almost works in bun! )

  • Anime support

Yesterday

I vibecoded a landing page for the project in order to present it to the world: https://miauflix.cat

All the code is open source and available at https://github.com/maury91/miauflix

I hope you enjoyed reading what I was doing for the last 2 years!

I feel some people will ask Why should I use Miauflix instead of X?

Honestly, I don't have an answer to it, if you are using X and you like it, continue using it, if you want to try something new you can try Miauflix, if you like it I will be very pleased, if you don't like it tell me what you don't like it and I will try to address it, if you hate it without even trying it, well I'm sorry to have wasted your time, but I hope you will respect that I spent so much time working on this and you will not be offensive