The CQRS+ES Job Application Tracker

1 minute read

In my recent search for a new job, I’ve had the pleasure of interacting with some different job search sites. I’ve been frustrated at a couple of them, one in particular, that sent me a rejection a few minutes after I saved my application as a draft (I did not submit). The rejection included phrases like “After careful consideration..” which of course was a lie. The next day I received another rejection email for the same job application that I never finished. I know that the chances are high that the site is just poorly designed and implemented and it got me thinking about how a site like this works and maybe I could write my own.

I think this would be a reasonable project to demonstrate the benefits of event-driven microservices with CQRS+ES because I think it’s an easy to understand Domain and can have some useful features:

  • Registering users
  • Logging in with different roles (job seeker, job poster)
  • Uploading documents (e.g. resumes or cover letters)
  • Saving a draft to complete later
  • Notifications and tracking changes

There is a lot to do in order to get this done, particularly since I’m a team of one. My roadmap consists of the following steps:

  1. Flesh out the requirements using Story Mapping and Event Storming/Modeling
  2. Determine a Most Viable Product from the Story Map
  3. Determine and design the bounded contexts
  4. Begin implementing the microservices

In addition to those steps, I will also be planning out and creating some infrastructure for the deployment. In the beginning I’m going to need to do the following:

  1. Setup on-prem Kubernetes cluster
  2. Setup CI/CD infrastructure and pipelines
  3. Create Docker Compose scripts for running containers locally before before deployment to Kubernetes.

Next Up: Story Mapping