I am a full-stack web app developer, and on this page I will describe the stack I most often reach for.
But first, a word on the benefits of using the web as an app platform. It is, in my view, far superior than writing apps for Windows, Mac, iOS or Android. Everyone has a web browser, and the browsers of today are more than capable to handle even complex tasks like connection to Bluetooth devices, work offline, do background work etc.
It is also incredibly quick to update the apps, and everyone will always use the latest version. And finally, you have no app store with their rules and gate keeping. There is no outside company like Apple who must approve your app or who can pull it.
My Web App Stack
I use Firebase as serverless backend, meaning there often is no need to have a server at all. The database is Firestore, a Collection/Document model SQL-less option that is very quick to work with. The web app reads and writes directly to the database, and security rules ensure that only valid requests are accepted.
Firebase offers two kind of storage options. Firebase Storage is a file-based storage which lives on the cloud and is also accesses directly by the client, and again there are security rules to ensure proper access.
The Firebase Hosting is also sort of a storage option, but this is where you statically host your HTML, CSS, JS, images and all the other files that make up the web client.
Firebase Functions are short-lived function calls that run on the cloud, and can be called manually or activated on events such as database writes, file uploads or scheduled events.
That takes care of the back end. For the front end, I use Vue as the Javascript framework, Nuxt as the meta-framework, Vuetify as the component library and finally, I write it all in Typescript.
Microcontrollers and Bluetooth
Quite different from my web work, I also enjoy creating custom electronics and programming their microcontrollers using Circuit Python. My main projects in this field has been creating various remote controls for the Shared Game Timer and a heart-rate reactive art sculpture. In both cases, the microcontrollers communicate with either a main web app or other peripherals using Bluetooth, so I’m getting good at using that too.