Some of you (ok, two of you) have asked how we built Yak Tack. Well, here it is.
Web
Yak Tack started out as a simple web app. It’s a single-page application (SPA if your part of the “in crowd”) built in React. And we chose Redux as our everybodys-gotta-do-it-so-we-are-doing-it unidirectional data-flow technology.
Mobile
Most people experience Yak Tack as an iOS or Android app. We develop those apps in React Native, which is kind of a build once, deploy everywhere option. In reality, we’ve found we need to do iOS-specific and Android-specific things within the mobile project, although 95% of the React Native code is indeed platform-agnostic.
Underneath React Native lies Redux which, much like the web version, lets us take advantage of unidirectional data patterns to properly “separate concerns,” as it were.
Backend
The Web and Mobile apps talk to a Rails-enabled set of endpoints over the internet. These intern communicated with a plain-old-Ruby service layer. And that in turn talks to our database through Rails again.
Much of what we do is asynchronous. Asynchronism is a good way to scale, and to deal with throttling issues imposed by integrations (which we’ll get to in a moment). Our rule of thumb is that any time it’s ok for the backend to be eventually consistent with the front, we’ll do it asynchronously.
Heroku Scheduler powers our “job clock.” Basically, it kicks off backend tasks that need to happen at some predetermined interval. One example that we all know and love is our daily tacks; you may blame Heroku for those.
(oh, and Heroku hosts the Yak Tack backend).
Integrations
Yak Tack is made possible by integrations with myriad third parties that, when “mashed up,” (remember those?) create our secret sauce. Stripe is our payment processor. And we’ve set things up so that credit card numbers never pass through or are stored by the Yak Tack infrastructure; they’re transmitted straight from the app to Stripe. And that, folks, is secure. We like secure!
Email goes through Amazon SES.
Mobile app notifications to both Android and iOS devices are delivered by our good friends at Firebase (they make it really simple).
Zapier automation helps us process inbound email requests.
And Oxford is our primary dictionary (it’s fun getting invoiced in GBP). When Oxford fails, we revert to Wikipedia, which serves us well for more esoteric words and phrases, such as bikeshedding.
Ok, that’s it. So now you know, and knowing is half the battle :)