Freelance Web Developer Best Practices?
Per-project pricing can be very difficult. Clients always request new improvements or changes once they see your work. If you're stuck with per-project pricing you will end up battling the client over important changes they request.
Bill by the hour and always create a statement of work. Your statement does not have to be very detailed. It should be a high level overview of your development goals. It should include time estimates for each phase of the project.
If you are going to be investing over 40 hours of work into a project it's a good idea to request a retainer. The client should be willing to put 10% to 25% down.
New clients may be weary of putting down a deposit. In this situation it's a good idea to break down the project into smaller phases. After each phase they should be required to pay you whatever hours you have logged.
Always keep detailed track of your time. It's important that your quotes are very close to the time billed. This will be trust with clients. Time everything you do and always compare it to your original quote.