Introducing Sher
I’m excited to announce the release of my most recent project with you all, Sher! It’s a fairly simple concept, shareable timers. You can find it on the iOS app here or the Android app here.
How it works
- Sign in with Facebook. This allows us to leverage the social network you already have, rather than having to search for friends all over again.
- Create a timer with a name/description and expiration.
- Share it with friends that have also installed Sher.
- View all the countdown timers that you’ve created or are shared with you.
- Get a push notification when the timer has ended.
Purpose of the project
Sher was a side project that made countdowns or deadlines more fun and social. It was Matthew Yung’s baby, whom I met with at the beginning of the year to discuss. It was a chance to work closely with Matthew on various product & other decisions.
In addition, I was able keep my react native skills sharp, as Reader Vision had been entirely iOS native. React native continues to increase in popularity and I worked closely with it at NerdWallet, so I might as well stay on top of it for now!
Sher was also an opportunity to jump a bit into design, an area that I have a lot of room for growth with. We actually released a previous version of the app, but it’s design was disastrous so I took a quick online course on product design to improve my theory and sketch/photoshop skills. I still have a long way to go, but one step at a time!
Tech used
I wanted to run as quickly as possible and without spending too much time on a backend. I concluded that the Firebase database was a solid choice. It’s easy to read/write from as json. In the long term, migrating to a relational database might be the appropriate solution, but Firebase is a fast and easy data storage for now. Something which I didn’t get the full chance to check out, but is definitely worth exploring is Firebase functions, essentially blocks of code that you can run in the cloud. Not unlike AWS Lamba from what I understand.
As previously mentioned, Sher was built with react native. Having just come off a native iOS project, the overhead to get a fully functional react native project up and running was a little bit heavy. It’s very easy to get a static UI going, but to achieve the functionality that comes out of the box natively, I found myself pulling in a lot of third party libraries. Admittedly, that’s just the nature of react native and the javascript community.
Given there are a skeleton projects that can help you start with all those libraries/patterns pre-populated. If I were to use react native for numerous projects, I would ensure I had a solid scaffolding that was kept up to date. For future projects I will certainly keep react native in consideration, but am likely to lean towards native apps (depending on the requirements of course).
Transition to Android
After the initial release, Matthew and I concluded in order for the app to be social, we needed to include Android users as well. In my friend group alone, ~50% have Android phones.
Since react native had been used, we were part of the way there already. However, I’d never tried run it on Android before. Luckily, it went smoother than expected. There were a few libraries that needed updating and Android specific bugs to fix. The most time consuming aspect part was setting up push notifications, as you have to do the majority of that from scratch through the Urban Airship and Firebase cloud messaging UI’s. However, it wasn’t long before I had the Android app up and ready to go!
What’s next?
Play around with the iOS app or the Android app and invite your friends. We’d love to hear your feedback, so leaving ratings or comments!