This repo represents a coding challenge for a role I was considering. As you can tell, it is a bit in depth. The challenge involved two prompts:
- To create a help desk / support system ticket management system which is the code in this repository.
- Team leading. How would you lead a team? What methodology would you follow, at what cadence? Who would be writing product spec and tickets? How would you collaborate with product / design? How would you deliver bad feedback. I address these questions in DEVELOPING.md.
In the end, this gig was not a match, but it was a fun exercise regardless.
This is a yarn packages mono repo with a server directory that runs nestJS and a client directory that runs Next.js.
Install all npm dependencies
yarn
Run the server
yarn server run start
Run the client
yarn client run dev
Navigate to http://localhost:3001
.
This was quick poc / discovery style development. There is a lot to do in order for this to be production ready. The code has some TODOs which could be associated with tickets. On a high level, here's what I feel would be next steps for this repository.
On the backend:
- Adding an orm and database. nest docs look promising.
- Add auth -- nest has some useful opinions on auth
- More tests
On the frontend:
- Add a data/state manager for reducing duplicated code and being able to listen to events and update state. Maybe redux(?)
- Add a design system.
- Respect backend auth/roles. Currently, this has useful screens for public/private roles, e.g.
/admin
vs/[ticketId]
vs/
. But the experience should be more curated and secured by role. - More tests
Infra stuff:
- Environments and corresponding env variables (local, dev, staging, prod)
- A release tagging system that the team likes and knows how to use
- CI -- linting and testing
- A tsconfig that better enforces congruence between back and front end.
- Linting
See the document developing code as a team