College project (UTEC, 2020). A web platform for sending documents where access is verified by a live webcam face check instead of a password alone.
Live portfolio: joaquinramirez.dev
Passwords protect the account, not the person. If I send you a sensitive document, nothing guarantees the one opening it is actually you. Safe docs verifies the person: the platform matches a live webcam capture against the user's enrolled face before granting access to their documents.
- Flask web app (
safe-docs-web-platform/web/server.py): signup, login, file upload, and per-user document inboxes backed by a SQL database. - Facial verification (
functions.py): OpenCV captures webcam frames, theface_recognitionlibrary (dlib) encodes the detected face, and the encoding is matched against the user's enrolled image inknown_users/. - Frontend: HTML/CSS/JavaScript with Bootstrap templates.
Python, Flask, OpenCV, face_recognition (dlib), SQL, JavaScript, Bootstrap.
- A 2020 undergraduate MVP, unmaintained since: Flask is pinned to 1.0.2 and the webcam capture runs server-side (
cv2.VideoCapture(0)), so it runs on localhost rather than as a deployed service. - Face matching uses static encodings with no liveness detection, so it does not defend against photo spoofing. A production version would need anti-spoofing and client-side capture.
- Demo enrollment images are public-domain official portraits (the same sample images the face_recognition library uses); a real deployment would store encodings, not photos.
It worked as an MVP and proved the flow end to end. My production ML work since then is written up at joaquinramirez.dev.