Pahina is a digital goods e-commerce platform (not much I can share for now on what exactly it’s for, sort of confidentiality since the project is currently in development).
All of the e-commerce functionalities are provided by Shopify. There are three modules buyer mobile app, seller web app, and API.
Here, I’ll share the technology behind the platform and experiences during development.
- Buyer mobile app
- Customized components for sign up, sign in, forgot password, confirm sign up, and set up Multi-Factor Authentication (MFA).
- Android and iOS platform support using React Native and Expo.io.
- Screen navigation and transition React Navigation.
- Custom themes using React Native Elements and Styled Components.
- Seller web app
- Serverless API
All of the code is written with TypeScript except for a very few AWS Lambda which is managed by AWS Amplify Framework.
The authentication, analytics, and data storage are managed in AWS Amplify Framework. This allows me to use AWS Amplify JS library for both mobile and web.
The Shopify API is securely accessed using AWS Lambda and API Gateway authorizers or DynamoDB triggers. These AWS Lambda functions have controlled access to limited resources and retrieve secured keys from AWS Systems Manager Parameter Store, all of which are coded as Infrastructure as Code (IaC) using CloudFormation.
- Used TypeScript for React Native and ReactJS project for static typings and better code IntelliSense.
- Developed custom themed UI components using styled-components and react-native-elements libraries.
- Implemented custom React components for AWS Amplify JS authentication workflow complete with Multi-Factor Authentication (MFA) for Short Message Service (SMS) and Time-based One-time Password (TOTP).
- Contributed minor bug fixes to various open-source libraries and used patched-package to locally fix dependencies that need immediate changes.
- Managed app distribution using Fastlane and generated images using Sketch for Google Play and Apple App stores.
- Written Infrastructure as Code (IaC) using AWS CloudFormation template that integrates multiple AWS resources with Web app, Mobile app, and Shopify API.
- Added security best practices by adding specific IAM Policy to AWS CloudFormation resources and enabling AWS Cognito authorizer to API Gateway, and storing credentials to AWS parameter store.
- Configured TypeScript on AWS SAM Lambda functions to build using ES2017 for readable artifacts and use a shared library among many functions for reduced code duplication. (Soon to change to use AWS Lambda Layers + TypeScript! ✌️)