Careers Pages for Monday.com
Whilst looking for an app to build I was struck by something a Monday customer said to me: "I'd be happy if I never had to leave the Monday.com window".
This, the new Monday App Framework and the vision for Monday as a Work OS leads me to believe that maybe you could do most tasks without ever leaving Monday.
I looked at the provided starter templates and decided to expand on the Job Recruitment board under the HR section. Perhaps I could find a way for HR staff to publish jobs to the web without having to leave Monday? They'd have one fewer window open, and this part of their hiring workflow could remain within Monday.
What it does
CareersPages provides a dashboard widget that allows you to create a company profile and then an entry for each job you have on offer. These are published to a webpage that an HR employee can then share.
How I built it
I build the app using Laravel / PHP for the backend and VueJS / Tailwind CSS for the frontend. The app is hosted on Lambda and I'm using the Serverless Framework for the infrastructure code and deployment steps. I've used Github Actions to setup a CI/CD pipeline. The Laravel app is backed by a MySql database on RDS. The app is sitting behind Cloudfront, with the dynamic requests going through to Lambda via API Gateway, and the static assets cached and backed by S3.
Architectural next steps for me would be to put the Lambdas behind a VPC for more security and switch to using DynamoDB instead MySQL as it's a better fit for an app running in Lambda (although I do have experience scaling with RDS). I'd also ideally like a proxy in front of the application so that I could offer custom domains as a feature to customers - this isn't easy in a sustainable way using CloudFront.
There's a copy of the code here: https://github.com/Modern-Work-Apps/careerspages-public
Challenges I ran into
I intended to build out automatically creating a candidates board and accepting submissions directly to that board, but I ran out of time to get that done.
I had wanted to use Monday board items to represent the published jobs, but I felt that the 2000 character limit on the long text field might not have been enough for the average job description so I decided to have the user manage the list in the widget itself.
Accomplishments that I'm proud of
I built this all myself in a fairly short timeframe. It's also the first time I've deployed Laravel into AWS Lambda. A good experience, in general. I had wanted to use DynamoDB as the persistent storage because of the cost / scale advantages over plain RDS, but Laravel is very much built around SQL and I didn't have time to port things across - it's something I'd like to look at in the future.
I had some great conversations early on with users of Monday, which helped me get to grips with the meaning of the product for people beyond the technical capabilities.
What I learned
I learned a lot about the way Monday works and what it's geared up to do. Having been a product manager for apps used by operational staff in big businesses, I really do see the potential for the App Framework to be used to solve key workflow issues. It could easily become a central line-of-business app hub in much the same way Salesforce has become - I'm excited to see how the Marketplace takes off!
What's next for CareersPages for Monday
I think that there's a space for a Monday App that covers some proportion of what a blue-chip Applicant Tracking System SaaS like Workable does. That would include:
- Themeable and embeddable company profile and job pages
- Direct submission of applications from candidates to Monday boards
- Customisable application forms
At this point I think there really would be a minimum viable product for a small HR team.
In general though, I think Monday as a Work OS is a great solution and I'm really eager to hear from Monday customers with specific problems to solve. I've got a Monday form here https://modernworkapps.com !