← All projectsapprenticeship2024Under the hood ↓
Faderco HR Portal
My first production system. Built it alone, from “what do you need” to “it's live.”
An internal HR portal that retired the spreadsheets: candidate intake through offer, 50+ a cycle.
- Role
- Apprenticeship · solo, 10 months
- Stack
- DjangoReactPostgreSQLBootstrapStreamWebRTCGoogle OAuth2
- Result
- 4h → 15minper interview, once the call moved into the browser
- Access
- internal tool, code stays with Faderco
A Screens
Click any screen to open it in the zoom viewer. Wheel to zoom, drag to pan.
Under the hood
Faderco HR Portal
Under the hood
Faderco HR Portal
B Architecture
A vacancy, end to end
Two staff roles and a candidate who never gets an account. Every stage moves the applicant's record one notch along a five-state ladder, and the interview happens on a private link that dies with the call.
From a vacancy to a hire
A hiring pipeline with two roles on it: managers raise the need, HR runs the process, and the interview happens in the browser.
- What people use
- Code I wrote
- Where it is kept
- Someone else's service
A vacancy becomes a hire
The whole pipeline is one chain of records. A request becomes a post, a post collects applicants, and an applicant carries an interview and an evaluation, so nothing about a candidate lives in somebody's inbox.
C Decisions
The calls that made the difference, and what each one bought.
Shipped their first remote interviewing on the Stream API. A four-hour drive each way became a fifteen-minute call in the browser.
Every interview room is a UUID with a per-candidate guest id and an expiring token, so a link cannot be forwarded into an open door.
D What it runs on
- Django
- React
- PostgreSQL
- Bootstrap
- Stream
- WebRTC
- Google OAuth2
internal tool, code stays with Faderco