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
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