CV

Job board

SchoolOct 2026 – Oct 2026Team of 2 · with Léa Bossuat (GitHub, LinkedIn)

A job-listings website with a relational database, a PHP API and per-user encryption of personal data, deployed with one Docker command.

Context & objective

Epitech project T-WEB-500, built with Léa Bossuat: a job board where companies post listings and candidates apply, while keeping personal data protected under GDPR.

What I built

  • A relational schema modelled on dbdiagram.io: listings, users, company profiles and encryption keys.
  • Companies and candidates in one users table, told apart by role, with public company information in a separate profile table.
  • A data encryption key per user, so personal data is encrypted for GDPR from the design stage, not added afterwards.
  • A PHP API called by the JavaScript front end.
  • A repo where git pull and docker compose up put the whole site online: PostgreSQL, PHP and Nginx in containers.

Challenges

  • Choosing between separate company and candidate tables or one role-based users table.
  • Fitting per-user encryption keys into the schema without making every query painful.

What I learned

This was the first time I built something like this, and the whole PHP API is written by hand, without a framework. It was painstaking, but I know every part of it.

  • Encryption has to be designed in. Per-user keys belong in the data model from the start, not added afterwards.
  • One command to deploy. Packaging the app so that git pull and docker compose up are enough changes how you build it.
  • Working as a pair. Sharing one repo and one schema means splitting the work and staying in sync.