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.