Should I cycle: System design

I spent some time on the weekend thinking about Should I Cycle, the app I want to build. There’s two ways I could do it:

  • standalone iPhone app


  • build an API
  • iPhone app will call the API

Given the terms of use of most of the weather APIs out there, I wouldn’t be able to call them directly from my iPhone app. So I should build my own API which the iPhone app will call. OK then.

What should my API look like and what will it do? It’ll be pretty simple – when invoked, all it will do is call the other web services it’ll use – weather, air quality, pollen levels, convert the results into a succinct format, and probably cache the results.

Here’s a simple diagram (created using

Should I cycle (1)


2 thoughts on “Should I cycle: System design

  1. Why bother with the native iOS app? Why not just implement the service + nice home-screen friendly web app?

    The native notification seems like a tiny reason to go through the app store rigmarole.

    Btw I am enjoying this series of posts :)

    • I was thinking about this in a user first way. As a user, what do I want? I want a push notification popup at 7:30am that tells me whether I can cycle to work and another one at 5pm which tells me whether I can cycle home. No faffing about unlocking phone, opening an app or website, potentially logging in, etc. At the moment it’s a manual process – I check Yahoo’s weather app for rain % and wind speed and direction, as I’m a lazy sod and won’t cycle into a strong head wind. And the wind direction I care about is obviously the opposite on the way to work as it is on the way home. So the app idea was born from that basic requirement.

      Also, I wouldn’t mind looking at Apple’s new Swift language – if I remain on iOS. The new one plus one phone is tempting me to join Android. My flatmate has one.

      Glad to hear you’re enjoying it, I’ve got a few more posts in the pipeline :)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s