I’ve been developing websites (and web applications) professionally since 1995 and back in the day a lot of development was static and hard coded. When it came to doing a redesign or architecture of a website/web app it would take so much tedious work to change hard-coded content. Oooooh then came web frameworks (and CMS) which took care of so much of the standard features of a website/web app. Seems much of the developers these days still do not take advantage of frameworks and the ability to now develop features as modules/plugins.
With that said I am a strong believer that websites/web apps should be built on content management systems and/or frameworks. Let the CMS take care of the look and feel (themes), user management, meta data, website settings, menus, page types, SEO, security, login/logout/forgot password, forms, etc. The beauty of CSS if you can style just about any standard look and feel of a CMS or plugin to look as you please.
Most importantly website features (and custom functionality) these should be developed out as separate code utilizing the CMS’s module/plugin framework. So the setup of a website would/should be as easily as setting up the CMS and activating the custom features/plugins. Simple as that. NO need to configure to a server or an environment or custom server images or custom database scripts or custom anything. Just setup and activate.