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
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.
- 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.
- 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.
- 03Feature branches into developWork flowed through feature branches into develop into main, across 6 merged pull requests.
By the numbers.
counted from the repository19REST endpoints
17screens per mobile app
4pipeline stages
5 minOTP expiry, auto-purged