I was going with Raspberry Pi but there are a lot of extra components to make that workable, and with the chip shortage I'm switching to ESP32, which needs a PCB with almost nothing. I think I will just need a capacitor, a diode, and some connectors. That right there is ample reason to use ESP32. I can choose several modules, and in fact I'll be including space on the circuit board for many different kinds of ESP32 simply because of the chip shortage. If one cannot be sourced, I can use another. Can solder at home using the "bed of sand" surface mount soldering technique.
This gent right here worked out a method of doing OTA:
For Firestore and MQTT use Google's code, it worked flawlessly for me:
https://github.com/GoogleCloudPlatform/ ... icropython
You have to then write some backend Google Functions to connect MQTT to Firestore via PubSub.
And for Bluetooth, here is some example code. Install the LightBlue app on your phone for debugging.
https://github.com/micropython/micropyt ... /bluetooth
I used Ionic+Angular+Capacitor+TypeScript to create my app but if I were doing it again, I probably would have gone with React Native. There's only one catch with RN: There is no way to use BLE with Expo. That makes using RN a lot harder. Ionic can do it, but there's so few people working with Ionic I struggled a lot to get help. I think I would have gone with RN without Expo had I known.