the MEOWER-PLATFORM

A weekend project for one enthusiastic zoologist

What I built when Power Apps couldn't reach my user.

The app's home page in a desktop browser, with a welcome message and the list of logged critters.
Where the door opens. Sign in, see friends, add a new one.

The setup

My nephew is three. He is, to put it gently, very into the small animals in his neighborhood. Ants, frogs, turtles, the occasional squirrel. He finds them, he names them, he tells me about them. Andy the Ant. Tremble the Frog. Shelly the Turtle. I love this for him.

Here's the thing: there are a lot of them. More every week. My nephew remembers all of them effortlessly. I, an adult with calendars and a job, could not. I'd ask him about Andy the Ant and he'd patiently explain that Andy was last week, we're on Cassidy the Caterpillar now, T, keep up.

So one weekend I decided I was going to fix this on my end. I was going to build him an app. He didn't ask. He's three. But I needed it, and he was going to love it, and that was good enough.

My first instinct, naturally, was Power Apps. But my sister doesn't have a Power Platform license, and asking her to manage one so her kid could log a frog felt like the wrong end of the lift. So Power Apps was out.

This is a thing I run into a lot, actually. Power Platform is amazing when your user has access. When they don't, you need a different door. This was an excuse to walk through that other door.

What I wanted

Calm requirements list, all from me, because the user was three:

That's the whole brief.

The add-a-critter form on a phone, with fields for name, a photo from the camera roll, notes, birthday, and floofiness rating.
The whole brief in one screen. Name it, photograph it, save it.

The part I want to be honest about

I'm a solution engineer. I work with low-code platforms, not full-stack web apps. I do not, on my own, know how to wire up a static site to an API to a database to a deployment pipeline. That is not the part of the building I have muscles for.

So to the GitHub Copilot CLI we went. Again.

I described what I needed in plain English. The CLI picked the stack, scaffolded the project, set up the infrastructure, wrote the API, configured deployments, and then sat patiently while I tested it on my phone, found bugs, and asked for changes. I knew what I wanted the app to do. The CLI knew how to make a computer do that. That was the whole arrangement.

This post is a recap of what the two of us shipped together. I'm not going to pretend I would have known to reach for Azure Static Web Apps on my own, because I wouldn't have.

What it ended up being built on

Azure Static Web Apps, free tier. HTML and CSS and a little JavaScript on the front. An Azure Functions API on the back. Cosmos DB for the data, free tier there too. Bicep to set up the infra. GitHub Actions to deploy automatically every time I push.

Every one of those pieces was picked by the CLI based on what I told it I needed. "Free, runs on a phone, only family can see it, photos, lock it down." The stack fell out of those requirements.

For auth, Microsoft accounts, GitHub, and a few others where the kids could land. I invite each person by email and only invited people can sign in. That part took us a minute to figure out and is honestly the only piece I'd call interesting under the hood.

The bumps I won't pretend didn't happen

Real-world bugs showed up the moment I opened the thing on a phone. None of them were the CLI's fault and none of them were mine. They were just normal first-time-running-on-an-actual-device bugs. I described them in plain English, the CLI fixed them.

The asks (or: I am also essentially a child)

Once it was running, the feature ideas kept coming. I have to be honest about where they came from. I came up with most of them while using the app, because I am, by all available evidence, also a small child. My older nephew and I co-designed the big ones together.

Most of these are mine, from opening the app, seeing something I wanted, and asking the CLI to add it:

And the big ones, from my older nephew and me, brainstorming together:

The app's dashboard with tiles showing the total count of friends, recent additions, and a few summary stats.
The dashboard. Tiles, counts, a little bit of pride.
The birthdays view listing each critter alongside their birthday.
Birthdays. Some real, some lovingly invented.
The floofiness ranking page on a phone, with critters rated zero to five using a custom Floofers face as the rating icon.
The Floofiness ranking. Floofers as the unit of measurement. My highest honor.

What I'd do differently next time

Honestly? Not a lot. The boring parts (deploy, domain, auth) were the hardest. The fun parts (Floofers icons, dashboard tiles, all the little feature requests I filed against myself) were the easiest. If anything, I'd start with the boring parts and let the fun grow on top, rather than building the fun first and then panicking about how it was going to ship.

The other thing: I'd pull my older nephew in even sooner. The features we came up with together were better than the ones I came up with alone. Floofiness as a real, queryable, sortable attribute was his energy and my engineering, and it's the best feature in the app.

The takeaway

If you build for makers and admins and consultants all day, you can forget how much fun it is to build for someone who just wants to remember a frog. This took a weekend. It costs nothing to run. And it gave my nephew a place to put his friends. That's the whole point.

I didn't have to learn a full stack to ship a full stack. I knew the shape of the thing I wanted. The CLI knew the rest.

Together we built an app for one three-year-old, and seven of his closest animal friends. That's a Saturday well spent.

If your platform of choice can't reach your user, build a smaller door. Static Web Apps is right there. Free tiers exist. The CLI is right there. Your nephew is waiting.

Back to the blog