My NoCode App Stack for 2025 + How to translate your entire Bubble app for free
Build your AI-powered apps faster: The ultimate 2025 tech stack combining Bubble, Supabase & Cloudflare Workers + A free guide to making your Bubble app multilingual in 30+ languages.
Hey there!
Welcome to the first edition of the NoCode SaaS Newsletter of 2025 - and the first edition after I am back from my travels around Vietnam and Thailand.
I was lucky enough to spend the end of last year exploring on motorbikes, trains, planes and boats and it was an incredible experience.
It also renewed my thanks for tools like Bubble which have allowed me to build my own SaaS and to be able to take trips like that. Even though I continued working throughout the trip of course, there’s no true break for us solo founders!
I filmed a ton which I’m currently editing together for YouTube - which is a lot more work than I originally anticipated 🤣
As we look into 2025 I’m really excited to share some of the things I’ve been working on that I’ve learnt over the last few months when building with AI and Bubble.
I’ve been working on the first major technical reorganisation of my app UserLoop since it launched, simplifying the feature set and switching out much of the core backend logic.
I’ve been doing all of this with AI generated code, and the results have been really breathtaking for me. Some of the core changes including moving my core database to Supabase, and much of the most common processing to Cloudflare Workers.
I’ve covered Cloudflare Workers a bit in this newsletter in the past, and I’m going to be covering them a lot more over the next few months, along with more content on how to use Supabase with Bubble.
My app dev stack has changed quite a bit.
It’s worth mentioning that the entire stack is still effectively ‘nocode’ - although I am using AI to generate a lot of the code that is getting deployed to Cloudflare and queries for Supabase.
Bubble - frontend app logic, simple database for storing user preferences and account management, billing.
Cloudflare Workers - complex backend logic, AI data processing, high throughput processing. Super fast and insanely cheap way to complete processing tasks.
Supabase - high scale database with complex querying capability, fast speed. No need to know how to code or use SQL. Low cost, powerful, fast.
Hookdeck - managing inbound webhooks, allowing me to route them either to Bubble, directly to Supabase or Cloudflare, along with super easy monitoring and ability to replay.
OpenAI & Anthropic - powering all the AI features in my app, now largely called via Cloudflare Workers than through backend workflows in Bubble itself.
We’re really starting to blur the lines between traditional coding and nocode tools now, even a year or two ago I would never have thought I’d be able to use developer platforms like Cloudflare Workers and Supabase so effectively, but they’re now core parts of my workflow when building with Bubble - and the features I’ve been able to make are way beyond anything that would have been possible previously without being a fairly advanced developer.
It’s an incredibly exciting time to be building apps - and as the technology continues to improve this year with more autonomous agents we’ll see more and more solo founders finding success without huge teams or giving away equity.
We’re entering the world of the ‘Self Driving Startup’ - where you can put all the systems in place to build and grow a SaaS business using AI autonomously.
This fantastic post from Monzo co-founder Jonas Templestein outlines the concept, and the neat way of breaking down the different levels of autonomy from Level 1 to Level 5. There’s also a more detailed blog post on the subject here which is well worth reading.
I’m going to aim to cover building a startup using AI and NoCode in this way more in this newsletter in 2025, and try to automate as much of the day to day running of UserLoop as I can using agents.
On to this week’s topic though - how to translate your Bubble app into multiple languages!
How to translate your Bubble App into 30+ languages for free
For the last year or so I’ve offered UserLoop in 5 different langauges. Users are able to select from a dropdown when they sign up, and then the entire app’s UI switches to that language.
Like many others I signed up to a fairly expensive service which took care of the translation. All I needed to do was drop a javascript snippet on the page and then trigger some Javascript to switch languages.
While this worked great, it was also crazy expensive!
You get charged per word translated, at a very steep rate.
So when I saw this tweet from David Bressler of FormulaBot on how he used some custom code on top of Google Translate to translate his app into multiple langauages for free it really caught my attention!
The translation works in exactly the same way as for the paid services, you drop a code snippet onto every page you translate then call some custom Javascript to translate the page content.
The only difference is it’s totally free.
After a very long conversation with ChatGPT I was able to add the same functionality to my own app, and I was shocked how simple it is!
The only caveat worth mentioning is that this is a slightly unofficial way of using the Google Translate website embed widget, so there is no guarantee it will work forever but it’s well worth trying out.
To get started with adding translation to your app, first you need to add the following code snippet to all pages in your Bubble App.
Download the script here.
For simplicity I recommend adding it to your app’s meta header in settings.
This will load the translate script on every page.
Then, you need to create a simple option set in Bubble containing the languages you want to translate your app into.
The display should be the language code, for example en, fr, de, es and then add a user readable title such as English, French, German.
Then, add a dropdown to either your app’s settings page, or your footer. Wherever you want to let the user change their language.
In my app, I’ve added the dropdown on the account settings page.
Then in the dropdown, we load in our option set. And show all the languages from our option set, and set the user readable field as the display option caption.
Then we need to set up a new workflow on our page.
This will trigger when the value of this dropdown is changed.
When the user changes the value in the language dropdown we then run the following Javascript using the free Javascript Toolbox plugin on Bubble.
We simply then inject the display code of the language the user selected and then Google will instantly translate the contents of that page into that language.
Here’s the plain javascript to run…
translateToLanguage('en’);
Obviously you just inject your language string in there.
Also you might notice I’m storing the user’s language preference to the database against their company record in the database.
This means I always know which language the user has selected in the backend - and also lets me run this javascript whenever they load the app. So the app is always automatically translated into their language of choice whenever they open it.
To do this, you simply need to call this javascript action on page load, if the user has a language set (use a conditional rule).
It’s an amazingly cheap, easy and effective way to translate your app. Huge shoutout to David for spotting this!
That’s a wrap for the first edition of 2025! Thank’s so much for being a subscriber and following along with my journey.
Are there any topics you’d like me to cover this year? Or have any feedback, just hit the reply button - I love hearing from you!
Until next time have a great weekend - and happy building!
James.
Thank you for the insightful newsletter, keep'em coming. Do you connect to Supabase using a plugin, or do you set up the APIs yourself. What would you recommend?
Thanks for sharing (as always) and best of luck in 2025!
Do you think you'll eventually remove Bubble from the stack completely?
As a long-time Bubble builder, I find myself starting fewer and fewer projects with Bubble. Spinning up a nice-looking UI with user authentication, connecting it to a database and making API calls can be set up almost as fast with Github Copilot or even tools such as lovable.dev.