Capstone Stack Overview

// Applicants first hcm app

{" . "}

==>

For my Capstone project I had pitched an idea of an Applicant-oriented Human Capital Management application, which was then selected by my instructor. My inspiration for pitching the idea was the poor user experience I have had in using job application software and Applicant Tracking Software alike. I felt as though creating just the ATS and job posting aspect was a little too narrow considering this is going to be a five-month project, especially because I am working alongside two of my student peers.

The stack currently will be utilizing Next.js, Node.js, React (obviously), NextAuth, Redux Toolkit, Drizzle ORM, PostgreSQL, Shadcn UI, Chart.js, and various other react-based libraries as a starting point.

Some technical considerations I had to make surround authentication, identity management, and database management. I decided to start with PostgreSQL because of the potentially complicated queries that will need o be made. The goal is to make the application somewhat customizable for the different roles including recruiters, HR managers, payroll admins, and general employees. Each role requires their own dashboard setup due to their innate differing tasks.

This is one of the reasons why I decided to include Redux Toolkit in the stack. In a previous project, I had realized that having complex state management without redux is extremely difficult to maintain because of the props required to pass down and lift up through nested components. Being able to access a singleton in the redux store makes managing state via reducers very easy and also maintainable because of the single access point provided. This is obviously going to be important when serving the client differing custom interfaces.

In terms of identity management, NextAuth provides a middle ground, in which we as developers can retain some level of configuration compared to a high-level service like Clerk. With NextAuth, we can integrate with various identity providers and customize the authentication flow to meet our specific needs, such as role-based access control and multi-factor authentication. This flexibility is imperative for an HCM application, where different user roles have varying levels of access and permissions. I also considered using OAuth 2, JOSE, and bcrypt to enhance security measures but felt as though the setup would be cumbersome starting out.

Next.js has become incredibly powerful for full-stack development and has become a framework that I thoroughly enjoy working with. As the team lead, it’s important that the technology we use is something that I am familiar with so that I can help my teammates overcome challenges along the way. Next.js has also become performant through server-side rendering, which reduces client-side bundle sizes significantly. Some may point to viral benchmarking comparisons to similar frameworks in which next is slower in certain niche scenarios, but I believe the overall benefits of using Next.js outweigh the potential performance dips in specific cases. After all, the comparisons provided are measured at the nanosecond level. Additionally, Next.js offers static site generation (SSG) and incremental static regeneration (ISR), which further enhances performance and scalability for our application.

I’m excited to build out an enterprise-level type of application as I think it will teach me a lot about handling large amounts of users and data.

Work Cited:

Redux Fundamentals, Part 2: Concepts and Data Flow by Dan Abramov and the Redux documentation authors. Retrieved from https://redux.js.org/tutorials/fundamentals/part-2-concepts-and-data-flow

Ficheiro:Postgresql elephant.svg by Daniel Lundin. Retrieved from https://pt.wikipedia.org/wiki/Ficheiro:Postgresql_elephant.svg

A Deep Dive into Server-Side and Client-Side Rendering in Next.js 13 by Swastik Supakar. Medium. 16 Jun 2023. Retrieved from https://medium.com/@alexfinch607/a-deep-dive-into-server-side-and-client-side-rendering-in-next-js-13-2d0b5deecde5