Job board
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
userstable, 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 pullanddocker compose upput the whole site online: PostgreSQL, PHP and Nginx in containers.
Challenges
- Choosing between separate company and candidate tables or one role-based
userstable. - Fitting per-user encryption keys into the schema without making every query painful.
What I learned
TODO(content): in your own words. Raw material: relational modelling trade-offs, designing encryption into a data model, packaging an app so it deploys in one command, working as a pair.