Torsten Müller

The purpose of this project

March 2nd, 2020

I had the idea for this project a while ago to give myself an opportunity to explore and learn new technologies as well as to have a project to do from start to finish: Including UX research, wireframing, architecture, technology selection and learning about new technologies.

Of course, I also had a few technologies and methods in mind for this project, namely:

  1. Go through an abbreviated UX Design phase with wireframes and component interactions but not do user profiles and genuine usability research.
  2. Use Domain Driven Design to identify building blocks of the application, separate concerns and keep the code structured and single-purpose. I desperately want to avoid code spaghetti and code that doesn’t communicate — like I have seen on some projects in my past.
  3. Building the app using a monorepository to integrate the various pieces while keeping the code itself segregated: Domains, front- and backend implementations and libraries
  4. Get familiar implementing web sockets as a means of communicating between browser and server
  5. Brush up on my node.js skills to implement a server-side app and get to know and evaluate some other frameworks than the express framework I have been using in the past.
  6. Speaking of node: It occurred to me to use node to implement a facade to enable web socket communication and later on extend the backend by implementing a “proper” application built in a compiled, ideally functional language such as Kotlin or Scala.
  7. For the Frontend, I decided to extend my Angular knowledge and explore the new features and behavior of Angular 9, which at the time of this writing has been out only for a few weeks.
  8. The database paradigm and technology selection I would decide on after the architecture phase has determined the domains and to some extend the data to collect and how it should/can be structured.

So that’s the plan for the foreseeable future, and I look forward to do something from start to finish and explore new ways of thinking and technologies. As you can tell, this will be a little bit of a longer endeavour, but I will create articles for each step I’m going through and putting down my thoughts and insights. I hope it will be fun.

A word of caution: The application I’m using as an example has the potential to be very complex and large and take months or years to implement on my own, in my free time. I make no attempt to figure everything out in detail and code, just to get a somewhat high-level working prototype going — to practice and document my approach to a problem like this.

Here is a table of content of the pieces I have (planned or ready) so far:

Next step: Domain Story Telling