Today I spent a lot of time getting familiar with our chosen back end framework, Express.js. I’ve used other MVC web frameworks before, so it didn’t take long to get used to Express. Aspects like views, models, controllers, and routes were already familiar to me. However, I need to spend time getting familiar with Node.js itself. It has unique development tools, commands, ways of managing dependencies, etc.
It also is more modular than other web frameworks I’ve used. To compare it with Ruby on Rails, my usual go to framework, it gets out of your way and does nothing for you. No code is generated for you. You need to choose which modules to pull in and create variables to represent your server that you want to use. I’m used to a certain project structure enforced, where the frameworks expect certain files in certain folders, arranged a certain way, with a lot of stuff happening behind the scenes. Rails forces you to make controller classes in a controllers folder, but if you do, things just connect together. Node expects you to manually create routes and pass in functions as arguments as you do, which become the controller behaviour.
We also continued to look into our database schema for when we will be logging user data and looked into our choice of database technology. It turns out PostgreSQL has support for JSON data as a native type. It can query JSON objects and perform all the complex and powerful analysis we’re used to with SQL, without pulling the JSON object out (as a string) and storing it in memory. This could have an incredible impact on how quickly our system can help correlate things for the users and recommend articles etc for them.