Adam Ilyas

Adam Ilyas

Building a mentorship platform for tech and data professionals!

Amigoals Platform - Tech Stack

Posted on May 1, 2021

Frontend

We decided that frontend was (React + Tailwind css) because I (adam) knew React, and Vincent (CoFounder/ Data Scientist) touched React before

Why React: Was Familiar with React, and will be easy to find people who knows react.

Why Tailwind: Easy to use, bootstrapped css classes, faster development speed.

I decided to deploy the React frontend on netlify because it was easy, and since we had relatively low traffic, the free tier was sufficient for us.

Backend

We used go because I was new to go and the best way to learn a language was to use it in a project. Also, many microservice in Grab uses go so I could easily take inspiration of the coding style and design pattern.

Also, I purposely decoupled the backend from the frontend because I thought that there was a possibility of having a amigoals mobile app.

Database was postgresql, we decided on relational because it makes sense that our platform is relational (connecting users, storing work experiences and education of users, adding of mentor reviews).

We use S3 to serve our images because we had 1K credits from some funding we applied so why not.

Cloud Hosting

At first we used heroku hobby tier for our prototype, but decided that digital ocean was cheaper and has sufficient functionality (back ups).

Since amigoals is a relatively small service, I literally just ssh into digital ocean to set up everything,

  • Install database
  • Install Go
  • Set up systemd service for the go web service
  • Set up NGINX as reverse proxy to handle backend api calls

Version Control

We have a master branch that holds our latest verified code.

For each release, we would do a merge request to prod so that we can always role back to the previous prod version.

We set up precommit hooks to prevent our devs from pushing to master and prod.

Mistakes

Initially, we use linkedin oauth as our login system. But it was way more effort than we estimated, and not everyone has linkedin, so we still had to maintain our own login system. In the end, we deprecated and removed the linkedin system when there were still very few users.