Uncategorized Jun 29, 2020

Last night my daughter was sick, so I spent a couple of hours sitting in her bed to help her fall asleep. With a bit of time on my hands, I put together this little open source project.

I really don’t know if anyone has a need for this other than me. But I’ve built this app a few times for myself in the past, so last night I finally took the initiative to make it generic and reusable – both for my future self and anyone else who might find it useful.

It’s called BespokeApp. It’s a simple iOS app that gives you a tabbed web browser with the pre-defined websites of your choosing.

Why is this helpful? Well, I have a number of websites I visit frequently that are all related.

For example, in my day-to-day business running my little software company, I often bounce between my help desk, my customer database, my website stats, and a few other 3rd party web apps like Linode and NodePing.

Separately, I have a number of web apps running locally on my iMac that I use to manage our home media sever, Docker, and some Raspberry Pi stuff.

I think of all these websites as belonging to distinct groups that are helpful when used together while I’m focused on a specific task. A common workflow I’ll run multiple times per day is…

I’ll get a push notification on my phone about a new support ticket from a customer. So, I’ll open up my bespoke, small biz app, flip to my help desk, and read their ticket. If it looks like they’re having a problem with their license or need me to send them a duplicate receipt, I can one-tap over to my backend system, lookup their order, and reply.

When I’m working on a task that requires information from various sources or multiple websites, BespokeApp just makes it fast and easy to coordinate. Sure, on my Mac (or even Mobile Safari) I could do all of this with bookmarks, but specifically on iOS, this is a pain in the butt to manage with every browser I’ve tried. None of them make switching tabs easy. Or even make accessing a group of bookmarks less than eleventy-thousand taps.

BespokeApp gives me a single app to open with a tabbed interface that lets me quickly switch between related websites.

As I said at the beginning of this post, I’ve written this same app a few different times for myself as I’ve needed different groups. But now it’s generic and reusable.

Two bespoke app icons

Everything is configured with a single property list (.plist) file. It lets you define each tab’s title, image, and the URL it loads.

You can even add multiple (related?) URLs on a single tab. The first one will be loaded by default, and you can then long-press to switch between websites within that tab itself. It’s all very meta.

Bespoke app long press action

Best of all, if you find BespokeApp helpful, you don’t need to clone a separate copy for each group (app). Instead, just duplicate the iOS target in Xcode with a new bundle ID, give it a new name, and use a different .plist. That’ll let you keep all of your bespoke apps in a single project / repo.

So that’s it. BespokeApp is a pragmatic, 152 line long, one-trick pony. I really think you’re gonna love it. (Sorry.)