Saved by Flutter: Reinvigorating an old Holiday App

Seth Westphal
5 min readJun 1, 2018

--

TL;DR — Revamped holiday app for Android and now iOS too!

It was a cool, spring Wisconsin day back in 2011. Propelled by a successful website launch a few months prior, I was excited to release a much-requested Android app. I was still in high school, and my self-taught programming knowledge severely limited its complexity. However, despite its simplicity, it was still able to keep tens of thousands of users content.

Checkiday app v1.0 — April 25, 2011

Since then I have redesigned the website from scratch to contain more information such as images, descriptions, how to celebrate, and much more. The most frequent feedback I received after this launch was that I should update the mobile app.

Fast forward to today, and I am happy to announce that I am releasing the first major update to the Checkiday app in over seven years. After laying the infrastructure groundwork with the new website launch, I have been hard at work polishing the new app. I will take you through the new features and future plans, and will even discuss how I built the app.

Announcing the Checkiday App 2.0

Checkiday app v2.0 — June 1, 2018

At first glance, a few things look familiar. The top of the screen still features the <> arrow buttons as well as the date, and the color scheme isn’t much different.

However, that is where the major similarities end. That red navigation bar now features a button that brings up a date picker, allowing you to fly through time with an ease that would wow Marty McFly. The same date picker can also be accessed by tapping on the date itself.

You will notice that the holidays are now presented as a list of cards, rather than simple text. These cards include an image, summary of when the holiday is observed, and two buttons. The share button does what you would expect — opening up the system share interface, allowing you to share a holiday with an app of your choosing.

The new date picker

The other button, which says “LEARN MORE,” opens up a new view. This same view can be opened by tapping on the image or the name of the holiday. On this new view you will find additional information such as alternate names, a holiday description, how to celebrate, when the holiday occurs, who founded the holiday, a countdown to the next celebration, related hashtags, and a list of sources.

Going back to the main holiday list, you can scroll down to find multi-day events that are either starting or still being celebrated. These events include weeks, months, and other multi-day celebrations. These events are compressed into a more concise list.

iOS Support

With this release, we are happy to announce that we now support iOS devices! Check it out and let us know what you think.

Download Links

Android: https://play.google.com/store/apps/details?id=com.westy92.checkiday

iOS: https://itunes.apple.com/us/app/checkiday/id1392571763

Future Plans

I am constantly thinking of ways to improve the site and app. Here’s a few things I have on deck which I hope to add next.

  • Settings — allow users to set their timezone, view NSFW holidays, and tweak some layout options.
  • Widget — Android users love their home screen widgets. I plan to build one.
  • Push Notifications — Daily updates delivered to your device.
  • Content — this one is being worked on constantly. I am adding more holiday descriptions daily, as well as updating other data and adding new holidays. This will continue to help ensure we continue to have the most complete and accurate information available.
  • Search — the ability to search for holidays and other events.
    Update 6.2.2018 — we’ve implemented search!

Building the App

I have very limited experience with native mobile development. I’ve tinkered over the years with things like PhoneGap, Cordova, Xamarin, and NativeScript. My love for TypeScript and Angular had me excited about NativeScript, and I thought I found my cross-platform savior.

Then I heard about Flutter and everything changed. I immediately fell in love with both Flutter and Dart, the language you use to build Flutter apps. I loved Dart because of how concise it was while still being powerful and elegant. It has a type system to help minimize errors and can be compiled both AOT and JIT. It also has a familiar async/await syntax that I’d grown to love in TypeScript/ES7. Additionally, Flutter itself offers hot reload functionality to speed up development and has native performance on both iOS and Android.

As a fan of and contributor to open source software, I was impressed by how responsive and approachable the Flutter and Dart teams were. I was able to both report bugs and implement new features as my project needed them.

After tinkering with an example one night, it became clear that Flutter was my answer. A few months later, you can see the result for yourself — developed by someone with almost no native mobile development experience.

Additionally, I’d like to add that I was able to build and run a functional iOS version of the application with zero code modifications. We did end up making a few tweaks to improve the iOS experience, but this should speak volumes as to how easy it is to build a cross-platform application using Flutter!

What is Checkiday?

Sorry, I probably should have led with this. :) Checkiday is a holiday website that I launched in early 2011. At the time, there were a few holiday websites out there, but they were just giant lists that you had to scroll through to find a given day. I wanted to build a site that would show you today’s holidays automatically as well as allow you to explore the calendar and search.

The site has grown steadily since its inception and has served over 16 million unique users on the website alone, not counting the mobile apps, social media pages, and other venues.

Last February I revamped the website to include images and much more information about each holiday. I also added support for multi-day events like weeks and months. I’m continually adding more holidays and information.

--

--

Seth Westphal
Seth Westphal

Written by Seth Westphal

Senior Software Engineer @ Fetch Rewards. Founder of Checkiday.com. Software and technology enthusiast.

No responses yet