Hacker News new | ask | show | jobs
by od14 3499 days ago
I'm just starting a CMS project, which is going to be my first big project. I've done a lot of research, read a lot of material on almost every framework possible, I wanted to make sure I would do the right choice both for my self (ease of use, enjoyable to work with, productive), and the buisness (long term maintainability is the most important thing).

I've gone over Angular 2, React, Vue.js, Ember, Polymer, and so many more. The one I really connected with is Vue. While I realize it's only been gaining popularity in recent months, there are some big companies who start to make use of it in big scale production sites (Alibaba, Laraval, ...), this makes me pretty confident that support will not be an issue.

For the db I would definitely choose Postgres, but I would go for plain old relational tables, and maybe use its JSON features for data which is isolated and does not relate to other data (e.g.saving spreadsheets data).

For the server I would choose NodeJS + Express + SequelizeJS, and I will probably make use of some GraphQL library up ahead too. But honestly, if you choose to make your system a SPA, then your server will not do much of the heavy lifting anyways - it will probably expose an API point and be used as an interface to the database, so I think any back-end stack would fit in. I would also consider Python + Flask + SQLAlchemy, which used to be my stack of choice few years back.

1 comments

I recently (for the last 3-4 months) attempted to code a CMS as a side project. I've chosen Python+Flask+SQL and vanilla JS, but have considered using Node and Go at various times of my coding.

The biggest disappointment I had by not using Node is that I couldn't easily integrate all the beautiful javascript libraries by just loading a module from npm.

For example, I'm using Quilljs for text entry, and I have to write something that parses Quill's JSON output and turns it into a renderable html/markdown. If I had used Node, there is already a module for it :).

If I started from scratch, I would have designed the back-end first without using any library. (I would define my objects User, Post etc. and hid the SQL as methods (e.g create, update, delete) under the hood) That way, I could debug the app, add new features without having the need to setup a web server. I could also write sound unit tests. I seriously regret not having done that.

The problem with my CMS was, that it was easy at the beginning. My customers asked new features and I just hacked them in. Now, my code is still legible, but since I've used wrong abstractions, it's a pain to add new features.

Your mileage may vary, I was inexperienced with FLASK and SQL at the time I started the CMS. I've learned a lot during the making and wanted to share my two cents.