How we are building RYSE

a full stack peek into the technologies used to build and launch a scalable social fitness and health app

React + Cordova for iOS and Android, Yarn 3 Workspaces Monorepo, AWS CDK, AppSync, Cognito, DynamoDB, CodePipeline, S3, Pinpoint and more

RYSE App mobile development stack. Technology icons.

RYSE App mobile development stack. Technology icons.

At RYSE, we believe in empowering people in every aspect of their lives. Not only are we empowering individuals to be healthier through our RYSE mobile app — we also want to give back to the technology community by exposing our full technology stack with real world examples that we’ve implemented along the way. “Hello World” tutorials can only get you so far in terms of launching an actual product, but it’s 2021 and we want other engineers like us to feel ready to go after their dreams :)

Overview

This article is just an introduction into the technologies we’ve had to use so far at RYSE. We will deep dive each of these topics with real examples in their own blog posts in the future, so be sure to Subscribe to be notified when they are published.

The RYSE Stack

Repo Setup

  • Yarn 3 Workspaces + Lerna

  • Typescript

  • ESLint, Prettier, Husky, Lint-staged

  • Jest

Frontend Stack

  • React (using Create React App with CRACO)

  • Cordova (iOS and Android app shell to load React app and provide native functionality)

  • Recoil (state management)

  • Material UI (component library)

  • Fullstory and Heap (for analytics)

  • Storybook (component explorer tool)

  • S3 website + CloudFront (hosted domain, certificate, and invalidation)

  • PWA (Progressive web app with auto-update when new version is deployed)

Backend Stack

  • Cognito (user signup, login, authentication, and management, restrict usernames, etc)

  • AppSync (queries, mutations, subscriptions, pipeline/dynamo/lambda resolvers)

  • DynamoDB + Streams (Single table design pattern)

  • EventBridge (Fan-out DynamoDB stream events and filter to subscribed lambdas)

  • Lambdas (subscribe to events and execute business logic and call other AWS services)

  • S3 (for storing public and private images and thumbnails)

  • StepFunctions (for complex tasks like building large “social feeds”)

  • CloudFront, Route53, Certificate Manager, Secrets Manager

  • Pinpoint (for managing user to device mappings and sending push notifications)

  • CloudWatch, SNS, AWS Chatbot (alarms, notifications, and alerts)

CI/CD Stack

  • Github Actions (Run status checks on PRs — test, lint, typecheck, build)

  • AWS CDK in Typescript for Infrastructure as Code

  • AWS CodePipeline + AWS CodeBuild per service (via CDK pipelines construct)

  • Deploy on Github merge (detect changed packages with Lerna and only deploy changed services)

  • Slack Notifications (for PRs, merges, and pipeline deploy success and failure events)

Services and Software Used

  • AWS

  • Github

  • VSCode for developer IDE

  • Figma for UI/UX design and prototyping

  • iOS — Xcode, Apple Developer account, App Store connect

  • Android — Android Studio, Google Play account, Firebase Project (for Push notifications)

  • Slack (for alerts and notifications)

As always, thanks for reading and staying curious!

Want to join the RYSE community?

Get the RYSE app:

Learn more about engineering at RYSE on our blog RYSE Engineering



Previous
Previous

Step by step guide to setup and configure Cordova for iOS and Android to load a hosted React app

Next
Next

User profile redesign