All work
case study · P/05

Jobify — Job Portal

Small companies need a simple way to post roles and track applicants, and candidates want to apply from their phone. Jobify covers both sides with one Spring Boot API.

Role
Sole engineer
Timeline
Feb — Aug 2026 · 6 merged PRs
Platforms
Web · iOS · Android
Links
Live ↗GitHub ↗

What I built, layer by layer.

backend
Spring Boot API
  • BCrypt + JWT login with account type in the token claims
  • Password reset by emailed OTP; a scheduled job purges OTPs older than 5 minutes
  • Applicant pipeline: Applied → Interviewing → Offered / Rejected, with interview times
  • In-app notifications when jobs are posted or interviews scheduled
Spring Boot 3.3 · Spring Security · Spring Data MongoDB · JavaMail · Docker
frontend
React web app
  • Employer job editor with Tiptap rich text and drafts
  • Find Jobs / Find Talent with filters and sorting
  • Axios interceptor attaches tokens and logs out on 401
React 18 · TypeScript · Redux Toolkit · Mantine · Tiptap
mobile
React Native apps
  • 17 screens, résumé upload with the document picker
  • Built in Expo, then ported to a bare React Native CLI app
Expo 51 · React Native CLI · React Navigation 6

Engineering decisions.

  1. 01Applicants embedded in the jobEmbedding applications in the Job document keeps reads to one query. Documents grow with applicants, so history uses a nested query.
  2. 02Files stored in MongoDBRésumés and photos live as binary in Mongo: zero extra infrastructure, bounded by the 16 MB document limit. Object storage is the next step.
  3. 03Feature branches into developWork flowed through feature branches into develop into main, across 6 merged pull requests.

By the numbers.

counted from the repository
19REST endpoints
17screens per mobile app
4pipeline stages
5 minOTP expiry, auto-purged
next project · P/06Food Order →