Avatar of Kevin Leung

Kevin Leung

Software Engineer at HearHear
Avatar of kevinleung987
Software Engineer at HearHear

Our team is already familiar with React's component based, functional, single-page application style and it will make the manipulation of the different views of our platform easier to manage. In addition, there are a lot of libraries that can be used by React.

React also plays nicely with TypeScript and as a component-based framework we can split up our work across engineers without bumping shoulders.

READ MORE
2 upvotes114 views
Avatar of kevinleung987
Software Engineer at HearHear

We use Postman to test our back-end API before building out features that call and use these APIs on the front-end. Postman is also useful for generating documentation for our API or mocking out our back-end API responses to de-couple development of the front-end from the implementation of the back-end.

READ MORE
2 upvotes84 views
Avatar of kevinleung987
Software Engineer at HearHear

We decided to use PostgreSQL for our database because it is well-supported, widely used, and has many useful features (like supporting JSON blobs as a data type). It has also been shown to scale well in other applications.

It also plays well with the rest of our stack, TypeORM supports Postgres as a target DB and Heroku offers a hosted Postgres option.

READ MORE
2 upvotes82 views
Avatar of kevinleung987
Software Engineer at HearHear

Heroku makes it easy to deploy our application and the flexible pricing tiers makes it easy to scale our application from MVP to production.

With Heroku the deployment of HearHear becomes a thoughtless process, we don't even have to worry about deploying with our database, it's provided as an add-on and fully managed for us.

READ MORE
2 upvotes51 views
Avatar of kevinleung987
Software Engineer at HearHear

Our team wanted to be able to have a common language for both the front-end and back-end. NodeJS provides a rich ecosystem of libraries and tooling for modern web development.

NodeJS is also relatively easy to deploy and with a shared language we can actually share code between the Front-End and Back-End, particularly any types that we create with TypeScript.

READ MORE
1 upvote225 views
Avatar of kevinleung987
Software Engineer at HearHear

TypeScript provides static type-checking for our application on compile-time. TS is well supported by Visual Studio Code and speeds up development with intelligent autocomplete and other features.

By creating request/response types and sharing them between the front-end and back-end we can ensure that our API calls are safe. Because TypeScript is so ubiquitous, pretty much every common library comes with type definitions built-in or provided by the open-source community.

READ MORE
1 upvote101 views
Avatar of kevinleung987
Software Engineer at HearHear

Express makes it very easy for us to build a back-end with Node, it is the most well-supported and ubiquitous web framework for Node. It is very easy to organize our back-end server into a MVC structure with Express with the many libraries supported.

As a plus it can also act as a web server and serve our front-end bundle so we don't need to spin up a separate Heroku web dyno.

READ MORE
1 upvote38 views
Avatar of kevinleung987
Software Engineer at HearHear

Google Cloud Platform provides machine learning APIs for HearHear to build our recommendation/curation model on top of. GCP is very versatile and supports custom use-cases like ours, with a simple API that's easy to use.

READ MORE
1 upvote22 views
Avatar of kevinleung987
Software Engineer at HearHear

We chose TypeORM for our Object Relational Mapping library because it works natively with TypeScript and provides support for the Active Record model, enabling a simple way to interact with our database.

READ MORE
1 upvote20 views
Avatar of kevinleung987
Software Engineer at HearHear

Materialize is a simple responsive CSS framework that follows Google's Material Design guidelines. It provides an easy way for us to style HearHear's UI with it's provided components, grid system, color and other features.

READ MORE
1 upvote20 views