the brief
Build a working full-stack product without a framework catching you.
The assignment was a CRUD app. I turned it into a real product: Artsy lets people find and book hands-on art workshops, and lets instructors publish and manage them.
Doing it in plain PHP against PostgreSQL meant writing the parts a framework usually hides: session handling, password hashing, prepared statements, the relational schema, the validation layer. I stopped treating the database as a black box after this project.
what I built
Auth, CRUD, and a schema that holds up.
Authentication
Sessions and hashed passwords, with role separation between instructor and student.
Workshop CRUD
Instructors create, edit and retire workshops; bookings stay consistent with the seats available.
Relational schema
Normalised tables for users, workshops and bookings, with foreign keys doing the integrity work.
Server-rendered UI
A designed interface. Coursework rarely looks considered, and I wanted this one to.
tech