Tech Stack 2024
Once Upon is growing. We need to have a technology stack that empowers 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 app
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 PDFs 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 them more than the alternatives so we are slowly moving more and more things onto AWS, pulling apart the Laravel monolith and moving on to serverless solutions to be able to scale with our users.
... and website
Our web presence was first a quickly thrown together React app that was then superseded by 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 website went back to the React roots using Next with a Storyblok CMS and hosted on Vercel. In 2023 we started to realised that Storyblok CMS wasn't putting out to our needs and we took the next step for our web by changing CMS again. Builder.io was the CMS that stood out the most in terms of our needs and requirements. Migration and implementations is still ongoing but the plan is to be 100% in Builder.io CMS by the end of 2024. With Builder.io we still use React, Next and hosting 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
- Javascript
- Typescript
- Swift
- Java
- Kotlin
- React
- React Native
- Apple sign in
- Google Photos
Web
- Typescript
- Next.js
- ISR (Incremental Static Regeneration)
- CSR (Client-Side Rendering)
- Sass
- Jest
- Builder.io
- 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
Other
CI/CD
- Github Action
- Fastlane
Tools / Dependencies
- Stripe
- Eslint
- Prettier
- Detox
- Lokalise
- Storybook
- Chromatic
- Puppeteer
Data / Analytics
- Google Cloud Platform including BigQuery
- Firebase Analytics & Google Analytics
- Stitch, Fivetran
- dbt Cloud
- Steep, Looker Studio
- Firebase Crashlytics