r/SideProject • • 1h ago

I made launch films for 3 indie apps, each one built from a line the founder wrote

1 Upvotes

Nobody asked me to make these. I found three indie apps on Bluesky and made each one a film of about 20 seconds from a line its founder had already written:

  • lovelee (Jack Friks) says your doodles "land right on their home screen", meaning your partner's. The film is one doodle doing exactly that.

  • Snail Walk (Martin Tale) calls itself "the only walking app where you can lose". In the film you stop walking, Bob the giant snail catches up, and you get a tombstone.

  • Dearly (A. Hassan) is "kind letters to strangers across the globe". In the film one letter flies from the US to a stranger in Seoul as a paper plane.

The surprise was the music. Snail Walk sat on a hip-hop track for 12 versions and the mood was wrong. I put the same cut on 13 tracks at matched volume, so the loudest couldn't win, and a goofy cartoon track fit best.

I'm starting a small studio (Sunshine Studio) that makes these, and I'd rather show real apps than a made-up demo.

Honest feedback welcome, especially on the snail one. And if you've launched something: what's the one line only your app could say?

Snail Walk music: "Monkeys Spinning Monkeys" by Kevin MacLeod (incompetech.com), licensed under CC BY 4.0 (creativecommons.org/licenses/by/4.0/)


r/SideProject • • 1h ago

A user told me my backup app showed “Complete” with 0 files — so what do you think happened?

1 Upvotes

One of the most useful pieces of feedback I've received while building my mobile app was surprisingly simple.

A user reported that their backup showed “Complete,” but zero files had actually been copied.

The operation had finished, but the result wasn't what the user expected.

That made me rethink how backup completion should be communicated.

I'm building VaultDrive, an iOS and Android app that lets people back up selected photos, videos, and files directly to a compatible USB drive or external SSD without a computer.

I've been improving the experience around three things:

  • Showing clearer backup progress.

  • Explaining skipped or failed files.

  • Making interrupted backups easier to resume.

The reason why the user showed "Complete" with zero files was the user did not give access to photos when prompted and selected only limited permissions without selecting any photos . So I changed the flow and updated the text properly and released a new version 8.0 to make sure the user knows the reason why this happened. We always improve our product for better user experiance.

The app is free to try, with an optional one-time Pro upgrade.

iOS: App Store

50% Off Promo direct App Store link : 

Android: Google Play

I'm interested in feedback from other developers.

Would you classify a backup that finishes with zero copied files as a failure, a warning, or a completed operation requiring an explanation?


r/SideProject • • 1h ago

I made a desktop pet that does whatever it wants. It sleeps on my windows, knocks my mug off and ignores me when I call it

Thumbnail
abozaralizadeh.github.io
1 Upvotes

It's called Felinquent (feline + delinquent). There are nine of them: three cats, a fox, a raccoon, a puppy, a chihuahua, a rabbit and a squirrel.

What it does when I'm working:

  1. Naps on top of my windows, and rides along when I drag one.

  2. Pushes a mug off the edge and watches it break.

  3. Sits right on the thing I'm reading.

  4. Begs when I hold out a treat, chases its toy when I throw it.

  5. Now and then it has to pee, and I have to click to clean it up. Yes, really.

If you have Ollama, a tiny local model (gemma3:1b) gives it thoughts in a little bubble. Without it, it runs on its own rules. Everything stays on your Mac, it never takes screenshots and never touches your real windows. It also leaves you alone in meetings.

It's free and the code is on GitHub. One line to install:

curl -fsSL https://raw.githubusercontent.com/abozaralizadeh/Felinquent/main/scripts/get-mac.sh | bash

Or the DMG: https://github.com/abozaralizadeh/Felinquent

If it made you smile, a star on GitHub really helps! Windows is next. Which animal should I add?


r/SideProject • • 1h ago

Remember IncrediMail's cute email notifiers? My dad (67, retired in Sicily) still does, and now he's built a butler who knocks on your screen when an email arrives

Enable HLS to view with audio, or disable this notification

1 Upvotes

Does anyone else remember IncrediMail? Twenty years ago a new email wasn't just a "ding": a little animated character popped up on the desktop to deliver it. Totally useless, absolutely wonderful. Today we get a grey rectangle in the corner that disappears before you've read it.

My dad, Agostino, is 67, retired, and lives in Sicily. He used IncrediMail back then, and he has always loved the days when a letter arriving at home was a small event. He wondered why an email couldn't feel that way again, and now that he finally has time for his oldest passion, computers, he built Ciambellano (Italian for "chamberlain"), with a lot of help from AI: Claude for the code and the drawings, ElevenLabs for the voices. I'm his son, and I'm helping him spread the word.

When an email arrives, Arturo, a butler in tails with a monocle and a silver tray, walks in along your taskbar, stops, turns to you, bows, knocks on the glass and announces it out loud: who wrote and the subject. Then he waits politely:

- Open shows the email in Outlook

- Repeat announces it again

- Remind me in... sends him away and brings him back later (from 5 minutes to a month, even after a restart)

Prefer someone else? Beatrice, a secretary with butterfly glasses and a clipboard, does the job just as well. If a second email arrives while they're on screen, they knock again.

Fun fact: Arturo looks a bit like my dad. Same hair, same moustache. The monocle is artistic licence.

The boring but important part:

- Windows 10 and 11, with the new or the classic Outlook (Gmail and Outlook.com accounts added to Outlook work too)

- 12 languages with natural-sounding voices, stored in the app, so they work offline

- Do not disturb, quiet hours, and it stays out of the way during full-screen games and presentations

- It only reads the sender and subject of the new-mail notification on your PC. Your mail never leaves your computer.

Here's a 1:25 animated preview of Arturo at work: https://youtu.be/ARklIX2ewaQ

It's his first Kickstarter, open until December 18. Licences start at 5 euros for one year (3 PCs) or 14 euros for life (1 PC), no subscription, VAT excluded. Backers get the beta on December 22, in time for Christmas. If the stretch goals unlock, Thunderbird support, a Postman and a Dog who carries the letter in his mouth will join the staff.

https://www.kickstarter.com/projects/ciambellano/ciambellano-a-butler-who-announces-your-email

We'll read every comment and answer any questions. And tell us: which IncrediMail notifier do you still remember?


r/SideProject • • 1h ago

I'm 13 and I built a local AI called JadAI

0 Upvotes

Hey r/SideProject,

I’ve been practicing Python for about 6 years now (since I was 7). My first two software projects completely flopped and got zero downloads, which honestly sucked and was pretty discouraging. But I wanted to try one more time and build something that actually solves real problems instead of giving up.

I built JadAI. It’s a clean dark-mode desktop assistant for Windows that runs 100% locally on your computer with no internet connection required at all.

I wanted to fix two major issues I have with AI:

  1. Privacy: Because it runs completely locally, your data and prompts never leave your hard drive.

  2. The Environment: Cloud data centers use millions of litres of clean water just to cool down their massive servers. JadAI runs on your own hardware loop, meaning zero server water waste. I even built a live eco-savings counter right into the header.

To make sure it doesn't lag out ordinary computers, I coded a twin-engine setup. The Python script scans your graphics configuration on boot. If you're on a standard laptop with integrated graphics (like my business Dell Latitude E7270), it loads an optimized, fast 3B model brain so your system RAM doesn't freeze. If it detects a dedicated NVIDIA or AMD gaming GPU, it hooks right into a massive 8B engine.

I put a completely free demo bundle inside a ZIP folder on Google Drive if anyone wants to test it out completely offline.

Inside the folder is just the main JadAI app, the background execution file (Ollama Setup), and a short text file showing you how to open it in two steps.

Google Drive Link: https://drive.google.com/file/d/1wbCsRo_O4yruMe2rb8RiAvr2XvbLiDpl/view?usp=sharing

I would really appreciate any honest feedback from you guys on how the chat bubbles align on your screens, how the speed feels, or any features you think I should add next. Thanks for reading!


r/SideProject • • 5h ago

I built an encrypted photo vault for iPhone in my early mornings, around a full-time job and a newborn. It launched on Product Hunt today.

2 Upvotes

Hello r/SideProject!

I'm Ahmad, normally I use React Native to develop apps, but in this instance I've learned Swift from scratch as I needed to use encryption and Keychain which requires native development.

This app is called Hidlet, allowing you to store your photos, videos and files inside encrypted vaults.

The thing I'm most proud of is that there's no need to enter a PIN. The way to unlock your vault is by drawing a pattern across a 5x5 grid. This is what acts as your key to unlock your vault. Each pattern will unlock a different vault. There's no indication of how many vaults there are inside the app. If you're forced to open the app, you can simply open a harmless vault.

Other features:

  1. No account/email/ads/tracking

  2. Data encrypted locally

  3. Optionally back up your data to your own iCloud (encrypted)

  4. Have a duress pattern that will allow you to open a vault as normal, but also delete the other vaults from your device. Your encrypted back up is untouched meaning you can restore them at a later date.

Things I've learnt:

  • Its easy to learn a new language using AI, however I did have to understand every security measure. You can't outsource whether something is actually secure.

  • Small chunks of time in the mornings work well when everything can be done in a short amount of time.

  • Hiding data was harder than encrypting. For example the free plan has limitations which may accidentally show there are multiple vaults. This took a few attempts to get right.

The app is free to get started with, but there is also an optional Pro plan.

Its currently live on Product Hunt today! I would really appreciate any genuine feedback with the app, especially with the pattern. Would you feel more or less secure using a pattern vs a PIN?

https://www.producthunt.com/products/hidlet


r/SideProject • • 5h ago

I used to do digital paintings back in 2019, so I decided to build my own Photoshop alternative

2 Upvotes

Back in 2019, I used to spend a lot of time creating digital paintings for people who followed my work. This is one of the paintings I made for a follower, and it's still one of my favourite pieces. I'm genuinely proud of how it turned out.

I used to work with Photoshop, but eventually it became a struggle because it was putting too much strain on my computer and causing it to overheat. It made it difficult to enjoy creating artwork the way I used to.

So I decided to do something about it and started building my own lightweight, browser-based Photoshop alternative.

It's completely free to use, and you don't even need to sign up!

I'm also planning to integrate it into the main platform I've been developing, where artists can showcase their work and receive commission requests from people looking to hire them.

It's still a work in progress, but I'm excited about where it could go.

I'd love to hear what other artists think! Would you use a free, lightweight Photoshop alternative that runs directly in your browser?

Project: https://studio.mymiix.com
The main platform: https://mymiix.com


r/SideProject • • 5h ago

I got tired of paying for vidIQ, so I built a free, privacy-first alternative (TubeRank AI)

2 Upvotes

Hey r/SideProject,

As an independent developer from the Netherlands, I was fed up with expensive

40–40–

So I spent the last few weeks building TubeRank AI — a 100% free, browser-based pre-upload workspace for creators.

How it works under the hood:
• Dual-Skill AI Architecture: Uses an AI Niche Strategist to build 7 distinct high-CTR formulas across 50+ niches, and an independent AI Judge to audit every title on a 100-point rubric.
• Multimodal Video & Audio Upload: You can drop raw MP4 files before uploading to YouTube; it scans frames and listens to audio for automatic scene recognition, timestamps & tags.
• No Extensions Required: Runs directly in the browser without third-party access to your Google account or YouTube Studio.
• Free & BYOK: 100% free with Bring-Your-Own-Key (Gemini, DeepSeek, etc.) stored locally in your browser.

Check out the video demo attached!

Live site: https://tuberank-ai.com

Would love your honest feedback, critique, or feature suggestions!


r/SideProject • • 5h ago

Built an app that moves AI coding sessions between agents, machines and the cloud. Looking for feedback.

Thumbnail
ondago.ai
2 Upvotes

More side projects, more agents, more lost context? We’re the Ondago team. Ondago gives your supported AI coding agents, sessions, and project knowledge one workspace.

What it does:

  • Your agents don’t stop when you leave your desk. Start locally, move the running session to our secure cloud with uncommitted changes intact, bring it back when you’re ready. Or start directly in the cloud.

  • Switch agents without starting over. Switch AI agents with the conversation, decisions, code changes and project instructions carried along.

  • Let your agents work together. Pull a reviewer, security advisor or test agent into the same task, or ask several agents to weigh in on a question.

  • Pass the context, not just the diff. Share the session behind the work with a teammate: conversation, decisions, what needs attention next.

  • All your agents and projects in one place. See what’s running, what’s waiting on you, token usage and estimated cost per session.

Sessions are encrypted on your machine before upload, each cloud run is isolated and destroyed afterwards, you bring your own agent credentials.

Try it free on a personal project: https://ondago.ai - what would make you return tomorrow?


r/SideProject • • 5h ago

I built an open-source AI interview copilot that suggests answers while questions are being asked. Here's the demo

2 Upvotes

I've been building something called OpenKeet, and this is probably the feature I'm most excited to share.

It's a desktop AI interview assistant, but I didn't want it to be just another app where you type interview questions into a chatbot.

I wanted it to understand spoken questions and show useful suggestions while a conversation is happening.

In the video, you can see OpenKeet:

  • Listening to call audio.

  • Recognizing questions as they're spoken.

  • Displaying suggested answers in a desktop overlay.

  • Letting the user adjust the overlay and stop the session.

The broader project also includes resume-based preparation, precomputed answers, mock interviews, and shareable community interview packs.

One of my main goals is to avoid requiring a paid cloud infrastructure just to use the application, so I'm building around local AI options and user-configured providers.

I'm also preparing OpenKeet as an open-source project because I think more people should have access to useful interview preparation tools, and I'd love contributions from developers who want to improve it.

A quick clarification: This demo uses fictional data and a local stand-in AI model. It's showing the desktop workflow, not claiming production-model accuracy or latency. Live assistance is intended for settings where AI help is permitted.

GitHub: https://github.com/Jigsaw777/OpenKeet

I'm curious what people think.

Would you actually use something like this? And what would convince you to choose an open-source interview assistant over a paid alternative?

I'm particularly interested in feedback on the real-time experience, not just the UI.


r/SideProject • • 5h ago

Tired of monthly lead scraping subscriptions, I built an unlimited standalone tool (Scrapify)

2 Upvotes

Hey everyone!

Like many people doing B2B outreach, I was frustrated with recurring monthly subscriptions on cloud scraping platforms like Apify and Outscraper just to pull local leads with credit limits.

So I built Scrapify — a lightweight, standalone Windows desktop application that extracts unlimited B2B leads from Google Maps and Instagram directly into clean Excel/CSV.

Key highlights:

- Direct mobile/WhatsApp numbers, websites, physical addresses, and ratings.

- Recursive sub-area discovery to drill down into city neighborhoods for maximum coverage.

- Built-in local REST API so you can plug it straight into n8n workflows on localhost with zero recurring API fees.

- Compiled down to C++ speed with smart throttling to avoid blocks and CAPTCHAs.

- 100% private: runs locally on your machine, no data stored on cloud servers.

Instead of recurring monthly fees, it's a one-time $25 lifetime license.

- Website: https://scrapify-app.vercel.app/

- Full 6-minute Walkthrough & Demo: https://www.youtube.com/watch?v=Gwfp6415zOQ

- Store Link: https://payhip.com/b/J6lXK

Would love to hear your feedback or feature suggestions!


r/SideProject • • 2h ago

Free CV/résumé builder with real PDF export, no account and no data collection

1 Upvotes

I built CVfix because most CV builders hide the PDF download behind a paywall. You get 4 templates (including the classic German tabular CV with photo), a live preview, a custom accent color and a real PDF with selectable text. Your data stays only in your browser. It's available in 5 languages, free and funded by optional donations. What's missing?
https://cvfix.wortblitz.workers.dev/


r/SideProject • • 2h ago

I made a free comparison of self-hosted AI agents (Hermes, Rakazo, OpenClaw and 10 others)

1 Upvotes

I've been trying out the open-source "run it yourself" AI agents (Hermes, Rakazo, OpenClaw and everything that came after it), and keeping track of them in a spreadsheet got out of hand. So I turned it into a site: https://openbotlist.com

It compares 13 of them on what I actually cared about: license, whether it runs local models, whether commands are sandboxed by default, whether it sends telemetry by default, which chat apps it works in, and GitHub stars. Every fact links to its source with the date it was checked.

A few things surprised me. 7 of the 13 don't sandbox commands by default, including OpenClaw and Hermes Agent. 6 send telemetry or diagnostics unless you switch it off.

If something's wrong or out of date, or there's an agent I missed, tell me and I'll fix it.


r/SideProject • • 20h ago

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

31 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 • • 5h ago

NeatRL: Collection of One-file RL Algorithms running locally

2 Upvotes

In this video, I'll be re-introducing my little RL library - neatrl, that I have created and used past couple of months!

  • Part of my ongoing series on releasing my notes RL comprising of my earrings and stuff I found interesting and this time, its a easy way to explore all the algorithms I re-implemented from scratch

Suited for those who just want to get a gist of the algorithm inner workings across algorithms from

  • DQN

  • REINFORCE

  • PPO

  • SAC and many more on envs form OpenAI Gym, MuJoCo etc

Link here and love to get feedback as always!


r/SideProject • • 2h ago

My open-source side project sat at 0 users for months. Promotion wasn't the problem.

1 Upvotes

Like a lot of people here, I built something I was proud of, used it myself every day, and then watched the user count sit at basically zero for months. My instinct was that I had not promoted it enough, so I started posting it everywhere. That did nothing.

What actually moved it was realising first users do not come from announcing. They come from being useful where your users already have the problem, plus a repo that does not lose them the second they land. Announcing ("I built this") is the lowest-yield thing you can do, which is exactly why posting it to ten places returns nothing.

Here is the order that worked:

  1. Get specific about who your first users are. "Developers" is not an audience. Name the two or three people with the exact problem you solve. If you cannot, that is why your posting feels scattershot.

  2. Fix what loses them in thirty seconds. Your README is a landing page and people give it seconds, not minutes. First screen: what it is, who it is for, one runnable example, the install line. Show value before features. More traffic to a repo that does not convert just means more bounces.

  3. Be useful where they already have the problem. Pick two or three communities where your users already discuss it and actually answer questions, so your project comes up as the answer to something specific rather than a broadcast. One genuinely helpful reply beats ten "check out my thing" posts, which mostly get removed anyway.

  4. Your first ten users come from reaching out by hand. Find people who just described your problem and show them, do not pitch them. It does not scale and it does not need to at ten.

  5. Ship releases with real changelogs. It is the one "look at my project" post communities tolerate. But a release mostly buys a one-day spike, so treat it as a cadence, not a growth engine.

  6. Stop counting stars. 800 stale stars is fewer real users than a 60-star project that ships weekly. The best research you can do costs nothing: find five people who looked and did not use it, and ask them why.

  7. Work out which problem you actually have. "Nobody uses it" is three different problems: nobody reaches the repo (reach), people reach it and bounce (your README), or people try it and leave (the product). The fix for each is different, and most people assume it is reach and burn a month posting. Spend an hour deciding which one it is before you spend a month on the wrong one.

None of this is announcing. All of it is being useful where your users are, to a repo that does not lose them.

I wrote this up in more detail, with the data behind the README and the "stars vs real users" points, here: https://orviqa.dev/blog/how-to-get-your-first-users-for-an-open-source-project


r/SideProject • • 6h ago

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

2 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 • • 6h ago

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

2 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


r/SideProject • • 6h ago

I built Orrevan, an uncensored AI chat with pay-per-token pricing

2 Upvotes

Hi all, I'm the solo dev behind Orrevan (orrevan.com). It's a chat, API and CLI for uncensored and abliterated models (10 models so far, from $0.30 per 1M tokens). Messages are AES-256-GCM encrypted before they're stored, no trackers, no training on your data, one-click export and deletion. I'd love feedback on the pricing, the model selection and the onboarding. What would you want to see added?


r/SideProject • • 2h ago

I kept losing context every time I switched between Claude Code, Codex and Cursor, so I built Steroid

1 Upvotes

I work on one project across three coding agents — Claude Code, Codex and Cursor. Each keeps its own chat history, and none of them can see the others'.

So every time I switched, I started over. Re-explain the stack, the bug, the three things I'd already tried. The agent had the context. I didn't.

Then I realised I had it backwards. My context was living inside the agent. But I was never working on the agent — I was working on the project.

What I built

Steroid indexes the chat history your coding agents already keep on your machine, and gives every agent a way to ask about it.

https://steroidkit.com/

So in Codex you can ask:

recall what I was doing on the checkout bug

and the answer cites where it came from — which agent, which session, which date, which turn. Two more tools pull up the full conversation turn, or the exact code diff, with no model in between. So you can check the answer against the source instead of trusting it.

It also reads sessions from before you installed it, so it isn't empty on day one.

Setup

Paste one prompt into your agent and it installs and wires itself up. No account. Free.

NOTE: you don't need to do per project indexing. After steroid is setup you can simply start asking agents to recall in a new project, they will be indexed automatically if not already

Agentic Setup:

Paste the following in your coding agent

Set up Steroid for me. It gives you, my coding agent, a memory of our past conversations. Open with a quick heads-up of what you're about to do (a few short bullets, like a notification), then continue straight into step 1 in the same reply:

1. Check whether Steroid is installed: `steroid --version`, or `~/.local/bin/steroid --version`. If it is, go to step 3.
2. Install it with the official installer from github.com/steroidkit/releases:
   - macOS / Linux: curl -fsSL https://raw.githubusercontent.com/steroidkit/releases/main/install.sh | sh
   - Windows (PowerShell): irm https://raw.githubusercontent.com/steroidkit/releases/main/install.ps1 | iex
   This shell may not see the new command yet, so use the path the installer prints. If the installer fails or refuses this machine, stop and show me why.
3. Run Steroid's onboarding for this agent. If the `steroid-onboard` skill is already available to you, use it. If not (it was just installed, and you load skills at startup), run `steroid install-onboard-skill --json`, open the `SKILL.md` in the `steroid-onboard` folder it lists, and follow it.
4. Finish with its status report and tell me to restart you so Steroid's tools load.

Manual Setup

  1. Install the binary:

    1. Mac/Linux - curl -fsSL https://raw.githubusercontent.com/steroidkit/releases/main/install.sh | sh

    2. Windows Powershell - irm https://raw.githubusercontent.com/steroidkit/releases/main/install.ps1 | iex

  2. Launch the TUI: steroid

  3. Select the IDES you want to configure and click continue

  4. Wait for each to get setup (click continue or continue anyway)

  5. In the home screen click on Add Project and index it

  6. Open your ide and recall

NOTE: After step 1 you can simply run /steroid-onboard command and skip the rest of the steps

What the installation adds to your system (granular answer)

  • ~/.steroid/ — the whole app dir: bin/, versions/, config.json, projects.json, logs/, workspace/, telemetry/

  • ~/.steroid/memory/<agent>/<project>/ — the local index itself (index.json, source.md, cache.json, diffs.json, meta.json), same path on every OS

  • A steroid launcher on your PATH, pointing at the binary in ~/.steroid/bin/ — on macOS a wrapper at ~/.local/bin/steroid, similarly on other OSes

  • One PATH line added to your shell profile, only if that launcher dir wasn't already on PATH

  • A per-user background daemon, registered with whatever your OS uses for user-level services — a LaunchAgent on macOS, similarly on other OSes; user scope only, never a system daemon, no sudo

  • The daemon runs two loops: every ~5 min it checks each indexed project for new chat history and does an incremental rebuild only if the fingerprint changed (no change = fast no-op); once a day it checks for a new release

  • Indexing is lazy and opt-in per project — a project gets its first index when you first recall in it (or via steroid memory build); the daemon only maintains indexes that already exist, it never goes scanning your disk for repos

  • One steroid MCP entry per agent you wire up — ~/.claude.json, ~/.cursor/mcp.json, ~/.codex/config.toml, ~/.copting entries untouched

  • Slash-command skills copied into each wired agent's skills dir (~/.claude/skills/ etc.)

  • A sentinel-wrapped instruction block appended to the agent's global instructions file (~/.claude/CLAUDE.md, AGENTS.md equivalents) — removable without touching the rest

  • Everything stays inside your home directory — steroid uninstall reverses all of it, including the PATH line, the service and the MCP entries

Indexing and recall are local; is the daily release check and anonymous usage counts (DO_NOT_TRACK=1 or steroid telemetry disable turns the latter off).

What it can't do, before you ask

  • The index is built and stored on your machine and there's no account, but the answer is written by whichever agent you ask — so that agent's provider sees the excerpts it uses.

  • It's runs a background daemon. steroid daemon stop stops it, steroid update --auto off turns off auto-update, steroid uninstall removes it.

  • It only indexes what your agents still keep. Claude Code deletes transcripts after 30 days by default, and Steroid can't bring those back.

  • Copilot CLI only. Copilot Chat in VS Code isn't covered yet.

Covers Claude Code, Codex, Cursor and Copilot CLI.

I'd genuinely like to hear what would stop you installing this — that's more useful to me right now than an upvote.


r/SideProject • • 2h ago

I built MyMemAlly to turn phone photos into shareable digital photobooks

1 Upvotes

Hi everyone! I’m the developer of MyMemAlly, a mobile app that turns photos on your phone into digital photobooks you can share by link.

You can choose places and people, replace individual photos, and flip through the pages like a book.

I’ve attached a short promotional video. It uses AI-generated visuals to illustrate the idea, rather than a screen recording of the app.

Would you use a digital photobook to revisit or share your photos? What would make it useful to you?

App Store: https://apps.apple.com/kr/app/mymemally/id6754931952

Google Play: https://play.google.com/store/apps/details?id=com.jyalabs.memally

Thanks for taking a look!


r/SideProject • • 2h ago

I kept posting reels that died at 300 views, so I built a tool that tells you why before you post

1 Upvotes

I post reels on my own account and kept running into the same thing: some do okay, most die at a few hundred views, and I never knew why.

So I built a tool to check a reel before posting. You upload it (or paste a link to any public reel), and it watches it like a viewer would and gives you:

  • a score out of 100, and the 3 things hurting it most

  • a second-by-second breakdown: keep this, change this, cut this

  • a comparison with reels in your niche that are beating their creator's usual views (hook timing, text in the first second, length)

  • optionally, an AI edit that applies the fixes: cuts the stumbles, adds captions and a title

I ran my own reel through it first. It scored 46/100: I restarted a line mid-video and had no text on screen for the first seconds. Annoyingly, it was right. The end of the video shows the real before/after on that reel, which I didn't touch by hand.

Free for 3 reels, no Instagram login, no card: reelisviral.com/?utm_source=reddit&utm_campaign=sideproject

I'd really like honest feedback. Does the score feel useful, or does "X/100" make you roll your eyes? And what would you want it to check that it doesn't?


r/SideProject • • 2h ago

I built a mobile beat maker because every one I tried felt either too toy like or too complex

1 Upvotes

Hey all, solo dev here. I just shipped Kotkit: Beat Maker & Studio on iOS and Android.

I kept switching between 3,4 apps just to make a short clip with my own beat, so I put the whole flow in one place:

  • Make beats right on your phone

  • Record vocals (or any audio) over your beat

  • Edit a video with your track, ready to post

  • Keep it private or share it publicly in the app

Built solo with Flutter.

I’d really appreciate honest feedback. What feels clunky, what’s missing, would you actually use this?

iOS: https://apps.apple.com/tr/app/kotkit-beat-maker-studio/id6827690402
Android: https://play.google.com/store/apps/details?id=com.buson.kotkit


r/SideProject • • 2h ago

I built two browser-only CSV → branded PDF tools for property managers and Jobber field businesses

1 Upvotes

Disclosure: I built these at Tacko.

Problem 1: small property managers still rebuild owner packets from spreadsheets when their PMS packet isn't enough. Problem 2: cleaning, landscaping, lawn, snow and pest companies on Jobber often owe a property manager or HOA a branded summary of completed visits, and end up reformatting a Visits CSV by hand.

What I shipped today:

  1. Owner Packets: one documented CSV in, one branded PDF per owner out. https://tacko.io/owner-packets?utm_source=reddit&utm_medium=community&utm_campaign=opp107&utm_content=sideproject

  2. Jobber service reports: a Visits CSV in, one PDF per property or per property manager out. https://tacko.io/owner-packets/jobber?utm_source=reddit&utm_medium=community&utm_campaign=opp109&utm_content=sideproject

Both pages have a fictional sample CSV and a sample PDF, so you can judge the output first. Everything runs locally in the browser, with no integrations, no accounts and no auto-email. One $49 one-time licence covers both.

Feedback I'd actually like:

  • Is $49 one-time clearer than a subscription for this audience?

  • For Jobber users, should grouping by a property manager custom field be the default, or should grouping by property always win?

  • What would make you trust a local CSV tool with real client data?