The bill rate for serious end-to-end web application development in a modern language, where the customer provides a loose spec and the outcome is "working, usable application" is somewhere in between 100-200/hr on the very conservative (low) end.

So, take your outside estimate of how much time the project is going to take (you think 40 hours; maybe make it 48), and pick a bill rate in the spectrum of 100-200/hr. Work that into a daily rate.

Provide proposal under the following terms:

* You offer to build the project on a time & materials basis, 6 days at a daily rate of ((100..200)x8).

* Prior to starting the engagement, you will complete a proposal with detailed acceptance criteria (app MUST do this, app MUST NOT do that, app MAY do this, &c). You'll interview your client (gratis, because you're a professional) to work out that acceptance criteria in advance.

* Should any of the requirements or acceptance criteria change once contracts have been signed, you'll accommodate by adding additional billable days to the project (subject to whatever scheduling constraints you may have at the time).

* Should they want to lock in additional billable days in anticipation of changing requirements out from under you, they can buy those billable days on a retainer (use-it-or-lose-it) basis at a small (~10%) discount to your daily rate. This (or some clause like it) allows them to pay you extra (ie, for days they buy but you don't work) to guarantee that if they change their mind about some goofy feature, you'll be available immediately to accommodate, and they don't have to wait 6 months.

* Your contract will specify a class of critical bugs (security, things that potentially lose previously-stored data) and a class of major bugs (things that make the system unusable). For a period of N months (maybe 12) after delivery, you'll commit to fixing critical bugs within N days, for free if they take less than N hours to fix, and at your daily rate otherwise; repeat (but with more favorable terms for you) for major bugs.

* For an annual fee of 20% of the price of the contract, you'll provide maintenance, which (a) continues the critical/major bug fix window past the N months specified above and (b) provides an annual bucket of K billable days with which you will fix non-major bugs; this is provided on a retainer (use-it-or-lose-it) basis.

The idea is simple: you want to:

(a) Give the client something that looks as close as possible to a fixed-price project cost.

(b) Not actually commit to a fixed-price project cost more than you have to.

(c) Turn the downside of long-term bugfix support into an upside of recurring revenue.

This is just a sketch, you'd want to tune these terms. You'll also want to pay a lawyer ~$100-$200 to sanity check the contract. (Your contract will look like a boilerplate consulting contract, ending in a "Statement of Work" that is a series of "Exhibits" [contract-ese for appendix] that spells out most of the details I listed above). Pay special attention to the acceptance criteria.

Remember also that you're liable for self-employment tax, which is due quarterly, not on April 15. You might also consider registering a Delaware LLC (~$100, online) and getting a tax ID, because liability gets sticky with software you deliver to make someone else's business work. You probably do not need to consult a lawyer about LLC formation; most of the trickiness of company formation is with partnership terms and equity, which isn't your problem.