Résumé Evaluation Platform
ASOMMMN
Timeline: Jun 2026 – Present
Production full-stack platform that digitizes résumé evaluation for a national merchant marine officers' association: JWT authentication, role-based access control and a REST API backend.
Gallery
// Problem
- The association reviewed applicants' résumés entirely by hand: scattered documents, one-by-one review and no central record of each application's status.
- It needed a platform where applicants submit their information and evaluators review it in one place, with controlled access to sensitive data.
// My role
- Sole full-stack developer on the project (social service): architecture, frontend, backend, API, database and deployment.
- Designed the business logic for users, résumés and evaluations.
// Architecture
- Client: React SPA (Applicant · Evaluator · Admin)
- Services: Netlify (Frontend hosting + CDN)
- Services: REST API · Node.js (JWT auth + role middleware)
- Data: MongoDB (Users, résumés, evaluations)
- Data: AI assistant ([COMPLETAR: proveedor / modelo])
- React SPA → Netlify: HTTPS
- React SPA → REST API · Node.js: REST + Bearer JWT
- REST API · Node.js → MongoDB: queries
- REST API · Node.js → AI assistant: document review
// Technical decisions & trade-offs
Stateless JWT instead of server-side sessions
The API keeps no sessions: each request is validated from its token, which makes it simple to deploy the backend separately from the frontend. Trade-off: revoking a token before it expires requires short lifetimes or a revocation list.
Role-based access control enforced in the backend
Applicant, evaluator and admin permissions are checked in the API, not just by hiding buttons in the UI — the frontend is not a security boundary.
MongoDB for variable-shape records
Each résumé and evaluation is a document whose fields can vary between applicants; the document model avoids rigid migrations while the process is refined with the organization. Trade-off: cross-collection integrity is enforced in the application layer.
// Security
- JWT authentication with secure session handling.
- Role-based authorization on every API endpoint.
- Sensitive applicant and evaluator data is only accessible to authorized roles.
- [COMPLETAR: hash de contraseñas (¿bcrypt/argon2?), expiración de tokens y validación de archivos subidos]
// Outcome & impact
- Résumé evaluation went from fully manual to digital — in production and used by real evaluators.
- [COMPLETAR: número de aspirantes / evaluaciones procesadas o tiempo de revisión antes vs. después]
// Stack
- React
- Node.js
- MongoDB
- JWT
- REST API