Curriculum Vitae Web

Role: Solo Developer Timeline: 2024–Present Platform: Web (Cloudflare Pages + Render)

A full-stack web application that replaces the original desktop-only CV Manager with a multi-user, browser-based platform. Clinical trial teams can manage research experience across multiple sites, process documents, and collaborate in real time — all with role-based access control and a complete audit trail.

The Problem

The original desktop CV Manager worked well for individual users, but clinical research organizations needed a collaborative solution:

Solution Overview

Multi-User Sites & Studies

  • Per-site study databases with full CRUD operations
  • Import/export between Excel and the web database
  • Search, filter, and category-based grouping
  • Compressed study descriptions to minimize database footprint
  • Per-user category ordering and display preferences

Document Processing

  • Browser-based Update/Inject — uploads .docx and .xlsx, returns processed document
  • Redact Protocols — server-side protocol detection and masking
  • Parses Word documents using the same proven logic as the desktop app
  • Preserves all original formatting in the returned .docx

Access Control & Security

  • JWT-based authentication with access and refresh tokens
  • PBKDF2-SHA256 password hashing with brute-force rate limiting
  • Role-based tabs: Admin, Editor, Viewer with per-view permissions
  • Site-level access: admins grant view or edit per user per site
  • Global IP rate limiting and per-user processing rate limits

Admin & Operations

  • User CRUD, role assignment, and password reset
  • Live presence bar showing active users (admin-only)
  • Audit trail of every write action with user, timestamp, and changed values
  • Rotating auto-backups plus on-demand manual backup/restore
  • Forward-only schema migrations applied automatically on startup

Tech Stack

Python 3.11+ FastAPI psycopg (async) PostgreSQL (Neon) React 18 TypeScript Vite TailwindCSS Zustand Cloudflare Pages Render

Screenshots

Challenges & Solutions

Outcomes & Impact

Lessons Learned

Future Improvements