Case study
trclu-careers
Overview
The official hiring portal for TRC-LU. It runs the whole CSC recruitment process online, job posts, multi-step applications, document review, exam scheduling, and hiring decisions.
Problem
TRC-LU's recruitment ran on paper: applicants dropped off physical documents, HR sorted and reviewed them by hand, and checking status meant a phone call or a visit. There was no online portal for postings, applications, or status tracking.
Approach
I built a React 19 SPA on Cloudflare Pages with a serverless backend through Pages Functions. Sign in with Google or email/password. A multi-step application wizard covers education, training, work history, eligibility, and document upload, all configurable per job. The HR side gets pipeline management, document-review tools, and a CSC-format Excel export.
Architecture
Dual-backend architecture: legacy Google Apps Script (archived, migration reference) replaced by Cloudflare Pages Functions + Neon Postgres + Cloudflare R2. Action-based API router dispatches by action field. HMAC-SHA256 signed tokens with HttpOnly refresh cookies. Cursor-based pagination for HR application lists. Version-aware caching with data version tracking per entity. PSGC address system with edge-cached data.
Challenges
Moving off Google Apps Script and Sheets (no constraints, indexes, or transactions) onto Neon Postgres and R2 meant a full rewrite while keeping the site live. Apps Script's limits (30s runtime, 5,000 PBKDF2 iterations) forced some trade-offs. A multi-step form with per-job sections needed careful state handling. The document-review Excel export had to match the official 15-column CSC format. Rate limiting sits at the edge via Cloudflare KV.
Results
A live portal at trclu-careers.pages.dev serving TRC-LU's hiring. Applicants apply once and track status online; HR runs the full pipeline from review through exam scheduling to the hiring decision. Documentary review exports as CSC-compliant Excel workbooks.