Yayabels and DDD
What better way to spend the weekend than to do some rewrite of one of your side projects?
I wrote the first version of yayabels.com using JAM stack.
The Markup, generated by NuxtJS is hosted in github pages (SSL and all), and the API (ASP.NET core WebAPI) is hosted in a free-tier app service in Azure. Yes, I am cheap that way.
I was scratching my itch back then.
Now I want to get serious with yayabels.com.
I decided to go with a boring technology stack and DDD the hell out this shit.
Let’s get started:
Hiring Bounded Context
This is the Hiring bounded context. The other possible bounded contexts are Application and Referrals but that may still change as we continue to improve on all the domains.
An employer posts a Job.
This job post will expire in a month, and a notification will be sent prior to that.
All candidates who match the criteria are notified of the new job post.
A candidate can click on the link and confirm their intent to apply.
A candidate cannot apply to a job that he/she is not qualified for (missing police clearance for example).
The employer gets notified. Employer can now view candidate documents and details. If candidate is not qualified, employer gives the reason. If qualified, employer can now call the candidate.
When candidate does not get hired, employer tells the recruiter if any, the reason.
When candidate does get hired, the recruiter (if any) is informed.
Every month, employer evaluates the candidate. Likewise, employer gets evaluated by Candidate.
Based on the story above I have identified the following events:
Likewise, here are the commands:
This bounded context revolves around a Job. So that’s what we will set as the root.
- Job (root)
We need a few read models
- candidates that monitor job posts
- employers looking for candidates
- recruiters that monitor candidates’ status
To be continued…
Hey I got a life too. Just kidding, but I still got time to binge watch some Netflix or play that Witcher 2 game I keep putting of for many years. Oh hey OpenTTT is great!
Next time maybe I will post about the tools I finally decide to go with. There’s so many of them. So far the ones I’m looking at are: