Doing work for a friend is a bit of a slippery slope. Do you cut them a break because they’re a friend? How close are you? If the project goes south could it hurt the relationship? I know some developers that will tell you to never do jobs for friends of family, or never do paid jobs. I personally don’t charge depending on how close I am to a person, if they end up offering me compensation in the end I might take it. It depends on how much.
But let’s try and work this out regardless of the friend factor.
You could see if your friend has a budget in mind, what they’re willing to spend on a freelancer or company to redo their website. And then you can tweak your charges from there.
Other than that, you basically have to look at the entire project scope and compare that to how long you see yourself taking to do it. Here’s a good chance to work on creating project milestones and otherwise breaking the overall project down into workable goals. You can totally charge for those individual milestones too.
Then comes the question of flat fee vs hourly. Again that’s entirely up to you. A flat fee looks nicer/feels safer to the client, they have set amount in mind. On the other hand, an hourly is more beneficial to you, but it’s kind of open-ended to them, the end amount is uncertain and there’s more pressure on you to do things faster.
Some other things to factor in to a possible cost are what you use to rebuild this site. Would you use a CMS (like WordPress for example, which is a free open-source CMS) to do a lot of the heavy lifting and give them something they can update on their own. Will you be setting up new hosting for them? Would they like to hire you for future updates? Who’s going to make the new design? You? Or would you outsource a graphic designer? They would need to be paid so that would have to be factored into your overall price. Maybe you’d just use a pre-built theme instead. Would it be a free one or a premium one? If so that needs to be included in your pricing.
I think step number one is to sit down and hash out as much of the project details as possible. See if there’s a budget, see what you’ll need to do the project (CMS, themes, outsourcing, setup, etc), get as much hammered down as possible.
BTW, there’s nothing wrong with not charging for your first few projects (especially if it’s for a friend), you’re still learning the ropes after all. This projects is going to have ups and downs (they all do) and you’re going to learn a lot from it, and that experience is valuable in itself.
If you want I can break down my process a little more for freelancing, but I think at this point, just getting overall project scope is an excellent place to start.