The purpose of this project
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:
- Go through an abbreviated UX Design phase with wireframes and component interactions but not do user profiles and genuine usability research.
- 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.
- Building the app using a monorepository to integrate the various pieces while keeping the code itself segregated: Domains, front- and backend implementations and libraries
- Get familiar implementing web sockets as a means of communicating between browser and server
- 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.
- 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.
- 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.
- 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:
- Step 0: The why and how
- Step 1: Domain Storytelling
- Step 2: UX and wireframes
- Step 3: Architecture and domain driven design
- Step 4: Frontend Software Architecture