Tom Balcaen

(This page is intentionally minimalistic. It's my desire to prioritise for the things that are necessary.)

Happy plate CMS - content management systeem

Introduction

Analogous to the Happy Plate Mealplan project, I wanted to create a content management system as a content front to attract potential users. I was really interested in the workings of Medium.com and wanted to create a similar, although very lightweight version of the popular internet giant. What I wanted for the platform was a system where people could insert their meals and show the world what they are capable of cuisine-wise.

Understanding the challenge

The problem I wanted to solve with this project was to offer knowledge, advice and a voice to people who are interested in healthy living. A platform where people could go to learn about healthy eating, diƫting, food choices and how to organise them into their busy schedule. The goal was not to create recipes or give them advise on how to cook meals.
To keep things simple, It was imminent to start with the end in mind. To see what the core functionalities must be at its simplest form. To conclude we can assume that an CMS is just a blog where individuals can read stories or blog posts, create blog post and vote on their popularity. Popular articles and recipe would present themselves in a favorable manner.

My approach

Technologies used and why

If you read my other projects you will notice that some of the technologies used are the same. I always try to combine technologies that i'm familiar with together with new technologies. The technologies used are not always the best choice if we only take efficiency and cost into account. The purpose of many of these projects are to learn in a real life environment.

Front end framework

The front end framework used is Angular. The framework I know best. The front end is served from a AWS S3 bucket.

Backend

The backend is a nodejs server with passport, express and mongoose integrated. The backend server is running on a AWS EC2 instance with elastic IP. My choice for an elastic IP rather than an load balancer (load balancers are a better use case) is because of the cost. EIP is free, ALB (application load balancer) is not.

Database

MongoDB was chosen as a database. The NoSQL document store is great for CMS systems. It is highly scalable and the schemaless features are desirable.

Authentication provider

The authentication provider used is passport.js for nodejs. It integrates seemlessly with express and node. The

Things I learned

Keep it simple, the more features the cloudier the application gets.

When presenting the web application with potential readers it was clear that I implemented too many features that are not being used and that are not necessary for a starting application. I would start with an MVP and test every new ability as soon as possible before continuing coding another feature.

Code a mvp, validate quick with my target audience and learn from their feedback!

It is far easier to use markdown as a content type than it is to store html code inside the database and render it to the application.

Never duplicate html code, use components, it is easier to organise and you only have to change code in one place

Screenshots