Tech Stack 2022

Once Upon is growing. We need to have a technology stack that empower us to solve the fun and creative challenges ahead, while still delivering a solution that scales with the ever growing number of Once Upon users. We are always looking for the most suitable programming languages, frameworks, services or tools to use so this document is a work in progress.


A brief history of the tech stack

The app was initially built in React Native using Javascript, supplemented with a backend written in Laravel using PHP. To make sure that the physical and digital product looked the same our initial solution was to create the images and PDF’s on the device using a native canvas. This meant that there would be some differences between books created on Android and iOS but as we initially did not have any collaboration we did not see it as a big drawback. As the momentum grew we added users and authentication using Firebase and naturally continued by implementing collaboration using a Firebase Realtime Database. Working with the new layout engine we tried out AWS Lambda and step functions and found we liked it more than the alternatives so we are slowly moving more and more things on to AWS; pulling apart the Laravel monolith and moving on to serverless solutions to be able to scale with our users.

Our web presence was first a quickly thrown together React app that was then superseded with a Wordpress site that we hired an external company to produce. While it was fit for purpose as a support hub it couldn’t really hold up for our future plans and ideas and as we could hire more developers we finally had the resources to re-do the site to our liking in 2021. The new web went back to the React roots using Next with a Storyblok CMS and hosted on Vercel.

We have found that Typescript has matured into a good option in many areas of our system, so that is what we most often choose when starting something new.

Frontend



App


Languages

  • Javascript

  • Typescript

  • Swift

  • Java

  • Kotlin

Technologies

  • React

  • React Native

  • Apple sign in

  • Google Photos

Web


Languages

  • Typescript

Technologies

  • Next.js

    • ISR (Incremental Static Regeneration)

    • CSR (Client-Side Rendering)

    • Sass

    • Jest

  • Storyblok

  • Vercel

  • Sentry.io

Backend



Languages

  • Javascript, Typescript, Node.js

  • PHP, Laravel

Infrastructure

  • AWS Lambda

  • AWS Step Functions

  • AWS Batch

  • Firebase Storage

  • Firebase Realtime Database

  • Firebase Cloud Functions

CI/CD


  • Github Action

  • Fastlane

Tools / Dependencies


  • Stripe

  • Eslint

  • Prettier

  • Detox

  • Lokalise

  • Storybook

  • Chromatic

  • Puppeteer

Data / Analytics


  • Power BI

  • Google BigQuery

  • Mysql

  • Appsflyer

  • Firebase Analytics

  • Firebase Crashlytics