full-stack job portal · react, node, socket.io
JobZee
A full-stack hiring platform where candidates and recruiters meet, apply and talk in real time.

Overview
Built for two audiences at once
A job portal that keeps both sides moving
JobZee pairs a public job board with an authenticated dashboard for each role. Candidates search, filter and apply with a stored profile; recruiters post openings and move applicants through stages. Socket.IO carries the conversation between them, so an application never goes quiet while someone waits on email.
The problem
Hiring breaks down in the gap between applying and hearing back. Candidates submit into silence, recruiters lose track of who is at which stage, and the whole conversation ends up scattered across inboxes.
The goal
Build one place where both sides of a hire can act — search and apply, post and review — with the conversation attached to the application rather than living in email.
How it was built
- 01Discovery
Mapping two journeys before writing a line
Candidate and recruiter needs pull a product in opposite directions. I wrote both journeys out first — search to offer, post to hire — and let the shared screens fall out of the overlap instead of designing one flow and bolting the other on.
- 02Development
Turning the flows into a working stack
A React front end talks to a Node and Express API over REST, with authentication, role-based routing and file uploads for resumes. Socket.IO runs alongside it for messaging and application updates, so the interface reacts the moment something changes server-side.
- 03Strategy
Shipping in slices, not in one drop
Auth, listings, applications and messaging each landed as a self-contained slice that worked end to end before the next one started. The deployed build was never more than one feature away from being demonstrable.
Project details
- Role
- Design and full-stack development
- Type
- Web application
- Stack
- React, Node, Express, Socket.IO
Key features
- Public job board with search and filtering
- Separate authenticated dashboards for candidates and recruiters
- Stored candidate profile and resume upload, so applying is not re-typing
- Recruiters post openings and move applicants through stages
- Real-time messaging and application updates over Socket.IO
Challenges
Two audiences, one interface
Candidate and recruiter needs pull a product in opposite directions. Designing either one first would have made the other an afterthought, so both journeys were written out before any screen was drawn and the shared screens fell out of the overlap.
Keeping the interface in step with the server
An application that changes state silently is the exact problem the product exists to solve. Socket.IO runs alongside the REST API so the interface reacts the moment something changes server-side, rather than waiting for a refresh.
The Result
A deployed portal that handles the full hiring loop — search, apply, review, respond — with live messaging rather than a mailbox in the middle of it.
What I learned
Designing two roles at once is far cheaper than retrofitting the second one. Writing both journeys end to end before building meant the shared screens were deliberate rather than compromises, and shipping in self-contained slices kept the deployed build demonstrable at every point instead of only at the end.
Want something like this built?
Tell me what you have in mind and I will come back with a plan, a timeline and a price.