Hmm, this sounds like a false dichotomy.
The problem could be formulated like:
- translating my design to a complex CMS is time consuming, new versions might impose a lot of updating, and I must keep ahead of the plug ins that offer the functionality my site needs. Js widgets also need more work or attention to be succesfully integrated.
- static site doesn't cut it because I need dynamic features like user logins or have data that is better organized in a DB
- roll-your-own dynamic site with scripts requires a lot of attention to security and vulnerabilities"
An answer could be: use a lightweight framework that does not impose many restrictions on the structure. Radiant for rails is the classic one, but I prefer wolfcms because it is a bit easier to deploy and has no domain specific language for templating, you embed PHP. Radiant needs an extension to do that.
In such frameworks you could start with your hand crafted html and:
- Put your hand made html pages in the CMS tree. The advantage is that you can login to the server to edit and upload content without much fuss (watch out for upload limits in php.ini though)
- Separate design (using layouts) from content, so that less repetition and more consistency is achieved.
- Automate navigation so adding a page to the tree updates the links and the site map.
- Use either the DB or the page parts (they are like db fields, the page is like a record) to further separate content from presentation, so that even unskilled people can add content.
- Refactor functionality in plugins so they get reusable (if you're getting a pro)
If you're going to need app-like functionality, though, a full stack framework like web2py rails or the thousand others is where you'll likely end up, eventually.