Ocula is a weather app built entirely using modern web standards in an attempt to create a great looking weather app that anyone can use on any device while also providing a simple PWA template for developers to build upon.

I set out to create Ocula as a replacement for my favourite weather app - Pocket Weather, which was unfortunately shut down at the end of 2019 due to high maintenance costs. If you're anything like me (or for some reason, most Australians) then you may appreciate a good weather app.


The goal of this project is to satisfy the following:

  • Must be open-source and freely available to all.
  • Must be ad-free, subscription-free and any revenue generated to be used for ongoing maintenance costs.
  • Must be built entirely using free (or freemium) services/assets (including hosting, api's, graphics etc.).
  • Must be fast, lightweight, accessible and beautiful.

It is my hope that by satisfying the above conditions Ocula can be a weather app for all to enjoy without being bombarded with ads and signups.

However, as a result of satisfying the above conditions it is therefore not sustainable without some form of monetisation. For the most part I use free tiers of various services to ensure the app remains free but with increased usage I will personally incur the cost and may be forced to shutdown the service should costs become burdensome. For this reason I ask that you consider one of the following:

  • If you like Ocula and use it as your everyday weather app I ask that you please consider contributing a regular small donation to the project to help ease the cost of maintenance.
  • If you are a developer you are free to fork this repository and host your own copy in accordance with the MIT licence .

Known Issues

  • Sunrise/sunset is not currently localised by timezone.
  • Pull-to-refresh doesn't work on iOS.


  • Introduce theming (including dark theme and contextual night theme).
  • Add more colour and nice weather animations in the top section.
  • Improve the trend graphs by adding more interaction.
  • Improve onboarding with empty-state graphics.
  • Improve accessibility.
  • Add mechanism for migrating the settings schema when upgrading settings fields etc.


Ocula is free to copy and host yourself. To do so you will need the following:

  • A Zeit account linked to Github (free Ci and hosting)
  • A DarkSky API account (free up to 1000 calls a day)
  • A MapBox API account

To host Ocula yourself, follow these steps:

  1. Fork this repository and link it in your Zeit account.
  2. Add a .env and a .env.build file to the root folder.
  3. In the .env file put the following:
  1. in the .env.build file put the following:
  1. Install the @now cli yarn global add @now/latest and run now in the terminal to link the project and enable local development.
  2. Enjoy!