I'm working on a project as a freelance web developer. Apparently I am the fifth dev in 1.5 years to work on this project.
The web app has fairly low complexity. It is an online assessment. User registers, requests & pays for assessment, answers questions, gets results as a PDF.
The code base is pretty treacherous. I have no idea who the previous contributors were, but can identify one fellow as doing good little but excellent work, one distinguished fellow who messed a lot of stuff up, and the other two are indistinguishable.
The software design is extremely inconsistent. Many functions are deprecated or very poorly written. The database has many unnecessary tables and fields. Generally speaking there is a lot of cluttered and redundant code. Some parts literally look like wrong answers to practice questions from PHP 101.
About 70% of desired functionality exists, which makes it seem okay, but it isn't okay. There are a lot of little bugs that she may be used to by now. I can't see this selling like hot cakes any time soon.
I honestly think I could rebuild it from scratch and have it be in better condition in about 30 hours. I have logged 31 hours on it, only 2-3 hours spent making new functionality updates.
The client has been so patient through this time, has spent a lot of money on it, and has $0 in return. It is still not in production and needs a payment system installed before she can do what she wants with it. (Thank heavens I'll be doing that.)
Should I continue to patch the broken material, or suggest to her that we start from scratch? Or is this a flaw in my own skill as a developer that I can not just go in and make it work?
I have been very honest with her through the entire process and I think she trusts me. I would be willing to go as far to say that if after 30 hours she is not satisfied with the progress, the rest of the work is done at half my billing rate.