As mentioned in previous articles, I have been using Gemini's latest "Vibe Coding" application—Build in AI Studio—to develop various small tools for quite a while now.
Over the last two days, I finally figured out a solution for a unified backend for these tools. After successfully deploying it on Cloudflare, I've decided to gradually open-source the backend and the various applications.
Today, the first release is a tool that is quite meaningful to me: a fancy image editing tool called "bipolar-banana." It is meaningful not just for its editing capabilities, but because it helped heal me during a recent period when I was at my lowest.
Let's take it piece by piece. First, the unified backend, fabric-worker: https://github.com/dmquant/fabric
The architecture is simple: it uses Cloudflare Workers to manage a relational database (D1) and an object storage database (R2) in a unified way. In fact, I have been designing and experimenting with a backend concept for a long time, trying many different solutions.
I went through many names, and the version closest to perfection was called ai-factory, which utilized almost the entire Cloudflare storage suite. However, it was so "perfect" that it was difficult to actually add applications on top of it.

The sudden breakthrough came from doing the opposite: minimalism.

It's interesting; every AI project I'm satisfied with is "minimalist." If we believe in the capabilities of the model, perhaps it should be as I wrote in yesterday's article about Google: Model + Storage. And storage just needs to be storage; we don't even need to standardize or structure it—we can just keep it in its original form. The two most important points are: save it, and trust that the model is constantly improving.
Therefore, the data structure is simple. The relational database has only three tables: sessions, logs, and assets. They represent what, how, and where, respectively.

There is only one type of object: the output corresponding to the application, regardless of format—be it text, images, code, audio, or binary files...

Then, in Build, I provide a unified backend for every app:

A side note: why Cloudflare? It is by far the most complete, user-friendly, and efficient full-stack toolset I have used: security, website and domain management, web hosting, data storage, and the incredibly versatile Workers. When I have time, I might do a dedicated, comprehensive introduction to Cloudflare and why I believe it will become vital infrastructure in the AI era.
It’s not just SaaS, IaaS, PaaS, or MaaS—it’s all of them. It is EaaS: Everything as a Service.
Having covered the backend worker (the project's worker subdirectory contains a README with detailed deployment instructions), let's introduce the protagonist: bipolar-banana.

I am still improving bipolar-banana almost every day. It has become an essential daily photo editing tool for me. It is no longer just the emotional outlet it started as.

Instead, it now boasts functions that are very practical for me, such as interior decoration (this consumes a lot of API quota, so use it sparingly; I might think about how to improve this workflow later).

For example, photo stylization (24 styles) and intelligent styling.

I even use it to build 3D scenes. However, due to recent Gemini updates, there were some minor code issues, so I temporarily removed that feature and replaced it with p5.js.

Of course, my two most common use cases are: first, privacy processing—I take many street photos, but the presence of real faces often makes me uncomfortable to share; this tool can naturally replace faces. Second, generating image assets for video production.

The combination of these two resulted in the video I posted yesterday.
Actually, maybe these images represent parallel worlds that truly exist—who's to say they don't?

Bipolar_banana has been added as a submodule to the fabric project.
That concludes the first application share. Although I don't care deeply about article view counts (I care, but not excessively), I want to try a new approach today by setting a goal for the next application share: OR (10K+ views, 50+ likes, 200+ shares).
The next planned application for sharing is: an automated daily report visualization and broadcast tool.
