DEV Community

Cover image for Technology choices
Shrey Dabhi
Shrey Dabhi

Posted on

Technology choices

In the previous post, I discussed how I decided what to build. In this post I would like to discuss more about the technology choices.

I heard about the DigitalOcean Hackathon and immediately decided that it would be the perfect motivation and opportunity to complete building the tool. The first choice I faced was to choose the components, some of the options I came up with are:

1. PostgreSQL + Hasura + Frontend (logic stays on frontend)

The schema management would be difficult and would need a separate service to manage users. I would end up with too many moving parts and all the keys and credentials would be exposed in the browser. Not a good choice for multi-user apps

2. Database + Serverless functions + Frontend (logic stays in functions)

This would definitely solve the problem of securing the keys and credentials. The number of functions required for CRUD operations would be just too many.

3. Database + Serverless functions + Hasura + Frontend (logic stays in functions)

Same as #2, but uses Hasura for CRUD. There's a slight chance of exposing user info stored in the same DB via Hasura.

4. A monolithic app which can handle both backend and frontend

This is a very promising option. Just that I didn't know about any good frameworks, so would have to roll my own CSS and the board like structure would be next to impossible to build with vanilla JS.

5. REST API server + SPA for frontend

This option felt like a silver bullet when I set-out to build this tool. I had to choose from ExpressJS, Ruby on Rails and Django for building the API, and Angular and React for building the frontend. I chose Django and React as I am more comfortable with them as compared to the other options.

Initially I was very skeptical about completing this project, but soon I was confident enough that I bought a domain name for it. I named it "Rappel". It is a synonym of Abseiling.

Abseiling, also known as rappelling from French rappeler, 'to recall' or 'to pull through', is a controlled descent off a vertical drop, such as a rock face, using a rope.
Abseiling on Wikipedia

Cover image: Photo by Victoriano Izquierdo on Unsplash

Top comments (2)

Collapse
 
gevera profile image
Denis Donici

How about logic in Postgres itself?

Collapse
 
sdabhi23 profile image
Shrey Dabhi

Logic also involves making calls to GitHub's API and updating the repos, I am not sure if that would be possible from within Postgres