fredwu

fredwu

Just launched my 3rd Elixir/Phoenix SaaS

Hey folks,

Just wanted to share my journey and experiences so far. Preface: I’ve been using Elixir for about 10 years now, so relatively experienced. Over the years I’ve contributed to and released a few open source libraries in Elixir too (Petal, ExDoubleEntry, Crawler, Simple Bayes and OPQ, etc).

I’ve worked on many commercial projects in Elixir, but about 2-3 years ago I started building my own SaaS products - mostly because there were products I wanted to use but didn’t exist.

First was Persumi - a blogging platform that turns your blog into audio, because I started consuming way more audiobooks and podcasts than I do blogs and books.

Then there was Rizz.farm - a Reddit lead generation platform, because I wanted a tool to help me organically grow Persumi.

And a few weeks ago, I started building FeedBun - a browser extension that decodes food labels for healthy eating, because I wanted something similar and all I can find were barcode scanning tools.

Anyway, the products themselves aren’t the focus, because this is an Elixir forum, let’s talk about the tech.

Several years ago I stumbled upon Petal when I was trying to find a boilerplate to save me time building things like auth. Quickly I started contributing to it, and I’m very happy and proud to be part of a project that have helped many (myself included) launch products faster.

All three products were built on Petal, and Postgres. I deploy them to Fly.io - which has been a mixed bag experience for me. I still like its globally-distributed nature, but stability isn’t their strength. For Persumi and Rizz.farm, I also used Fly’s (unmanaged) Postgres, and have only just very recently migrated them to Fly’s managed Postgres. The experience again was a mixed bag - at the time of my migration, their managed Postgres didn’t support the citext extension. Though according to their docs it’s now supported? I can’t confirm.

For FeedBun, I opt’ed to using Supabase. So far it’s been a painless experience so fingers crossed.

Persumi and Rizz.farm were both mostly hand-written, in a sense that Github Copilot back in the day didn’t do much beyond some basic auto-completion, which in itself was a hit and miss. It took me three months to build Persumi, and six weeks to build Rizz.farm, both were built whilst having a full time job.

The apps themselves are relatively straightforward. For Persumi I did initially experiment doing TTS (text-to-speech) inference on CPU locally on the server. Turns out it was a bad idea so I quickly pivoted to using Azure and Google’s TTS. With Rizz.farm there’s also integration with Reddit API and Google’s Search API. Reddit’s API is… “interesting” - kind of feels like looking at API docs from the 2000s, ha.

This time around, building FeedBun was “a little different”. Well, the tech stack is the same, just with more integration with LLM providers, I integrate with AWS Bedrock, Google Vertex, OpenRouter, Perplexity and OpenAI. This is so that I have a rich suite of LLM models to pick and choose, and to experiment and benchmark for different tasks. I built a bespoke solution to always have a list of LLM models (preferably from different providers) for any given task, so that if one LLM fails, the next one would come in and take over. I’ve configured “model groups” - ones that are hand-picked to do certain tasks, for example, smaller, low latency models for quick extraction tasks, grounded models for doing research tasks to greatly reduce / eliminate hallucination, etc.

Out of all the LLM models, surprisingly, my favourite ones are from Amazon’s Nova family. There are very cheap, and are extremely fast (low latency). My least favourite models are actually the OpenAI ones… No hate, just for some reason their models didn’t work very well for the prompts I have. In total I have about two dozens of LLM models configured in my app (not all are used).

The fact that I was able to release FeedBun as an alpha build, in just a few weeks, all comes down to using AI to help me code. I use Claude Code after having used Cursor for a while. Claude Code with Opus is quite good. Sometimes it drives me crazy, but overall I could not have built FeedBun in such a short amount of time without it, so I’m grateful for the advancements we’re seeing in the machine learning space.

Anyway, I’ve been rambling, this post was entirely hand-written, lol. Just thought I’d jot down these thoughts to share. If you’ve got any questions please feel free to ask.

Where Next?

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2976 91332 914
New
f0rest8
Hi everyone :waving_hand: Posting here to showcase and announce that Metamorphic is now officially live on a public-facing domain at htt...
New
byu
@chrismccord : I just saw the Extract AGENTS.md from Phoenix.new into phx.new generator commit to the phoenix project. My initial shotgu...
New
arcanemachine
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
AstonJ
Just a general thread to post chat/news/info relating to AI/ML stuff that may be relevant for Nx now or in the future. Got anything to sh...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
zachdaniel
Introducing AshStorage! Attachment and file management that slots directly into your resources :smiling_face_with_sunglasses: I had hope...
New

We're in Beta

About us Mission Statement