It does indeed need to be coded, and its broken down into 3 main categories:
1) Frontend (what the user sees).
2) Backend
3) Data Access Layer (DAL)
The first is obvious, there's parts (like breaking quotes into pages, dynamically loading quotes, etc) that can't be done in pure HTML+CSS. That necessitates either DotVVM or JavaScript.
The second, the backend, sits between the frontend and the DAL. It makes the data the DAL pulls useful, acting on it as we need, doing things like (potentially) parsing BBCode into HTML, making sure the data is valid, and preventing things like SQL injection attacks by sanitizing input into the system.
The third part consists partly of regular code and partly of SQL, especially in the case of PostgreSQL + Python. The former to pull data from the database (quotes, commets, etc) and the latter providing not only the structure of the database itself, but any stored procedures that sit right on top of the database, facilitating speedier access to certain queries that would otherwise be slower in code. Long story short, the DAL polls the database and turns what it gets into objects that are then passed to the backend, or takes data that's given by the backend and pushing it to the database.
[ETA]
The TL;DR is this: one could do it with straight HTML+CSS. The problem is that every quote approval would require a site edit/update before it'd take effect. That'd also mean that we'd likely have to break up the pages by day to keep them at a manageable size. Otherwise, the pages would be hatefully enormous and take forever to load.