just my 2 cents,
but, i usually charge per hour with an upfront conversation with the client regarding time/page. if the site is one basic template with lots of simlar pages, then i explain that the architecture of the first page will take x amount of time, with all subsequent pages taking a fraction of x amount of time. i only do coding work (client and server side). so, these discussions usually take place with very loose estimates which are revised after i see the final designs. this involves a little more work up front, but i feel the client has a good understanding of where their money is going, and it gives me a good idea of what kind of time i will be spending on any project. as a business courtesy, i don't usually charge for time that i get hung up on something because of my own shortcomings. however, i do charge hourly for revisions/changes/etc after a certain time. using an hourly rate helps avoid any situations with scope-creep or other requirements changes during development. hope this helps. j.