👉 Built a lightweight creative generator app using Google Sheets API + Cloud Run

Hi everyone,

I’ve been experimenting with Google Cloud services and APIs to make small, fun tools. One project I built is a text-based generator inspired by pop culture trends.

How I built it:

  • Data layer: I stored word/phrase sets in Google Sheets.

  • Backend: Connected via Sheets API, with caching for performance.

  • Frontend: Simple HTML/JS to randomize and display outputs.

  • Hosting: Deployed using Cloud Run for easy scalability.

What I learned:

  • Sheets API is lightweight but quota management is important.

  • Caching with Cloud Run reduced latency by ~40%.

  • Randomization logic is simple but gives a surprisingly engaging result.

If anyone’s curious, I wrote up a small demo project and published it online. It’s called Brat Generator

Would love feedback on performance optimization and whether Cloud Functions might be a better fit than Cloud Run in this use case.

1 Like

Hey, this is a really cool approach — I like how you used Google Sheets as a lightweight data layer and kept everything simple. Using caching with Cloud Run to cut latency is a smart move too :+1:

I actually built something similar recently (a brat-style text generator), and I ran into a few issues you might also encounter as usage grows:

  • Cold starts on Cloud Run can sometimes cause inconsistent response times, especially for lightweight apps like this

  • Sheets API quotas can become a bottleneck if you scale traffic, since it’s not really designed for high-frequency reads

  • Caching helps a lot (like you mentioned), but eventually you might want to move frequently accessed data to something like Firestore or in-memory storage

Regarding your question about Cloud Functions vs Cloud Run:

  • If your app is mostly event-driven or simple API calls, Cloud Functions can be simpler

  • But if you want more control, scaling flexibility, and container-based deployment, Cloud Run is usually the better long-term choice

One thing that worked well for me was:

  • Keeping Sheets as a “source of truth”

  • Syncing data periodically to a faster store (cache/db)

  • Letting the frontend hit the cached layer instead of Sheets directly

Overall though, this is a great lightweight architecture — especially for MVPs or experimental tools. Would be интересно to see how it performs under heavier traffic.

1 Like