The needs of modern web applications vary greatly depending on the business/product the application is serving, but certain functionality is common to most applications. Such functionality includes registration/authentication, form processing and validation, routing, caching, and database interfacing. While this functionality can be built from scratch with any server-capable language, it is more efficient to use a framework that provides this common functionality out of the box, allowing developers to focus on the specific business needs of their application. In this course, students learn about framework-based web application development via the lens of the PHP framework Laravel. Along the way, we explore paradigms common to web frameworks beyond Laravel, such as routing, controllers, models, views, and object-relational mapping. Over the course of the semester, we build stand-alone web applications and also look at how to build web services that can act as the backend to single-page applications built using tools such as Angular, React, or Vue.js.