Skip to content
Back to projects
In production

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

reclutamiento-asommmn.netlify.app

// 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

Architecture: Résumé Evaluation PlatformCLIENTSERVICESDATAReact SPAApplicant · Evaluator · AdminNetlifyFrontend hosting + CDNREST API · Node.jsJWT auth + role middlewareMongoDBUsers, résumés, evaluationsAI assistant[COMPLETAR: proveedor / modelo]HTTPSREST + Bearer JWTqueriesdocument review
  • 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
The frontend is served from Netlify; every API request carries a JWT and goes through middleware that checks the user's role before touching the database. Backend hosting: [COMPLETAR: dónde corre la API].

// 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