
I'm a Flutter & Dart enthusiast. No RGB keyboards or 42inch widescreens. Just me and my laptop at the dinner table. Building @gymplyapp.
Alkmaar, Nederland
Joined April 2021
- Tweets3.6K
- Following813
- Followers1.3K
- Likes16.8K
I have been fighting this button since September 23rd.
I have spoken to Sevanthi, Ranadeep and Khaysia.
I am about to return the MacBook.
Every @AppleSupport expectation ever crushed by this horrible experience, I cannot believe it is this hard to take an easy 100 dollars.
Added the App Store badge to gymply.app π
Just waiting for my work apple phone to arrive so I can try and get an apple developer account π
I've sold the ROG and bought a refurbished MacBook Air. I can now finally, finally develop for iOS as well π
Let's see if Antigravity can get it up and running quickly π₯³
The good part: Just ran a script to compare folders to files and I apparently missed hundreds of exercise images for GYMPLY.
The bad part: Copying and renaming them one by one nowπ₯²
Great extra value to gymply.app but this is quite tedious work π
LOL, one single refactor absolutely depleted my free tokens for Antigravity IDE π
Back to using my own API key in Android Studio π
GYMPLY going strong on Google Play, about 10 downloads a day π Using it on a daily basis, still loving what I've cooked up π
Nostr feed only has me and a few users, that needs to pick up traction though, it's lonely π
gymply.app
Went on an 8hr ride with colleagues. Body still hurts, but it was sooo good. The Netherlands might be flat, but it's still pretty π
Must read. Please protect your keys and at least set a spending cap, now possible via Google AI Studio!
Thanks for the write-up @ulusoyapps π Hope they rip up the bill soon.
The GCP project of my @FlutterDev @Firebase app got suspended this weekend for abuse, after a single day of β¬3,167 in unauthorized Gemini API charges. The root cause turned out to be a #Firebase Hosting default that is hard to know about. Worth sharing what I learned.
I thought the Firebase and Google Cloud project was clean and safe. Client uses Firebase AI Logic (proxy, no on-device Gemini key) with App Check via Play Integrity / App Attest.
The suspension email said "key published on public sources." But: my GitHub repo is private and was never public. flutter build web was never run for this project. Where was the leak surface?
Google AI Studio showed three Gemini-callable keys. Two tight (server-side). One was a "Browser key (auto created by Firebase)" β Unrestricted, since Nov 2024. That was the web app in my generated firebase_options.dart, from when I configured Flutter web at project init.
Here's the part I didn't know about: Firebase Hosting auto-serves your web SDK config at a reserved URL β https://.web.app/__/firebase/init.json β as plain JSON, unauthenticated, to anyone. It includes apiKey, appId, projectId, authDomain.
This endpoint is active whenever you have (a) a registered web app in Firebase Console + (b) any Hosting deploy. Contents of the deployed site are irrelevant. Mine was a simple CSS landing page that doesn't reference Firebase JS SDK at all. Endpoint leaked the key anyway.
Bots scrape *.web.app/__/firebase/init.json because the pattern is universal across every Firebase project. Mine got picked up, the key was Unrestricted (= usable for any enabled API), and someone burned β¬3K of Gemini inference in a few hours.
Project reinstated after appeal; outstanding balance still in review.
Lessons I missed:
- Auto-generated browser keys are Unrestricted by default (at least the time project was created). Always add HTTP referrer + API restrictions at creation.
- Don't register a web app unless you use the JS SDK.
- Set a Gemini spend cap + budget alert. β¬100/day cap. You can easily do this in Google AI Studio
What I would ask the Firebase team:
β Browser keys should default to restricted (HTTP referrer to project domains, API restriction to Firebase services) -> not sure this has changed after the date I created the project.
β Reserved __/firebase/init.json should be opt-in. Static websites hosted with Firebase Web hosting do not need the API key info.
β Firebase Console should warn when a key has been Unrestricted for >N days. Google AI Studio warns when you visit API keys page, but it should be visible on homepage.
β Default-on spend caps for Generative Language API.
TLDR; "Private repo" is not a meaningful security boundary when the key has another publicly-reachable surface. Audit not just your code, but every endpoint your project ID exposes including the ones the platform creates for you without telling you. Always manually verify API restrictions.
My very first review on Google Play π
play.google.com/console/deveβ¦
With Geminiβs help, gymply.app now offers oneβtime and subscription donations.
Supporters can change the app icon as a small gesture of appreciation. Anything else I should definitely add for supporters?
FUN! GYMPLY supporters now get to choose their appicon. A work in progress, but it works on my emulator π
Particularly nice and finegrained muscle heatmap package for Flutter: pub.dev/packages/flutter_bodβ¦
Going to look into separating my musclegroups into smaller muscles for more refined details.
gymply.app
Got my friend's old helmet camera (he leveled up to insta360 x5) and tried it out yesterday evening.
This is great fun, just dump all files in some actioncam app and it creates this π
Added a muscle heatmap for gymply.app πͺ
Getting ready for a quick ποΈ ride before work now, have a great day all π



















