The CQRS+ES Job Application Tracker
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:
- Flesh out the requirements using Story Mapping and Event Storming/Modeling
- Determine a Most Viable Product from the Story Map
- Determine and design the bounded contexts
- 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:
- Setup on-prem Kubernetes cluster
- Setup CI/CD infrastructure and pipelines
- Create Docker Compose scripts for running containers locally before before deployment to Kubernetes.
Next Up: Story Mapping