Showing 2 Result(s)

Pahina – a serverless digital goods e-commerce platform (in development)

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.

Tech Stack

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.

Work Experience

UI

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

Serverless

  • 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! ✌️)

Poseidon – Crew Management software

Poseidon is a crew management and salary accounting software. Developed using Ruby On Rails, ReactJS, CoffeeScript, and Material Design Lite theme.

Project Role

Web developer in a three-man team.

This is my first Ruby On Rails project / ReactJS project so I relied on the senior developer’s feedback quite a lot. Before that, I trained myself by taking online courses and reading a lot of documentation.

The team worked remotely and communicated regularly on slack. We used GitHub review and pull requests before merging changes to the master branch.

Work experience

  • Headed in producing libraries in a form of gems on RubyGems.org, reducing the size of the project by 743.5KB.
  • Spearheaded as a part of a three-man team for building a crew management application solution from scratch. 
  • Established leadership in finishing assigned tasks on time with 80% automated tests coverage for all code committed.
  • Provided excellent management in developing authorization, crew salary, crew shift planning, and reporting modules.
  • Collaborated with the team remotely and provided daily progress reports using the Slack and Google Hangouts.
  • Led in using a wire-framing tool to design and conceptualize the requirements which were approved by the client.
  • Completed Ruby On Rails and Ruby best practices from others by code reviews and with the use of Udemy online courses.
  • Analyzed and reverse engineered all core requirements from scanned reports to clarify deliverables to the client.
  • Utilized Behavior Driven Development practice (BDD) that saved a lot of regression bugs during product redesign.
  • Coded after regular work hours to maximize progress, provide constant reports, and ensure a high level of commitment.