For the last couple of weeks I have been working on building a simple CMS website for a customer. Nothing too difficult, just a six page website with the ability for the customer to edit the content of the pages themselves, supported with a backend Microsoft SQL database.
Each page had some static content and some editable content, it is good practice to reuse code and rather than just writing the same code on each page for the editable content I created a simple user control that could be dropped on each page. All it consisted of was a literal to hold the page content and a few buttons edit, save and cancel with the code behind controlling what was visible and what happened when each button was pressed. Having it as a user control means that if you need to make changes you only have to do it in one place rather than on each page you have used the functionality.
For easy editing and file management we are using TinyMCE and MoxieManager. This gives a word like editing tool for creating content and a windows like file manager for uploading image files and documents. Very user friendly and very familiar for anyone with a passing knowledge of word processors.
Finally the site was made secure using ASP.NET security with simple login and password management code taken from another project with have finished recently, another time saving practice, if you have something that works, reuse it if possible to save reinventing the wheel each time! Writing your own login and password management code rather than using the built in ASP controls gives you more flexibility, using the email address as a login name for example.
Finally the web site was styled, using good web practice of having all style elements in a css file rather than on the page itself. I personally leave styling the website until the end, focusing on functionality first and then making it fit the design afterwards.