Let me start off by saying I made a lot of mistakes on my end taking on a project. Now I am in a position where I have a software development project that is a bit of a nightmare and suffering from mission creep.
Can you provide advice on what options I can take and what you think is the best course of action?
Background:
I took on a project to develop a WordPress theme that is a web application for a digital agency. I was to work with another person who I thought was an experienced developer but turned out to only have very limited knowledge of html and css. The verbal agreement was that the other dev (who works for the agency) would do all the html, css and animations (gsap javascript). My mistakes include (but are not limited to); agreeing to an accelerated project timeline (I said 12 weeks but they got me down to 4 weeks), fixed project price, thinking the other developer could do their part, agreeing to a project without making them clearly outline all their needs (animations, webgl integrations, etc).
It's now been 6 weeks and I have implemented the features outlined in the contract (5 templates, audio feature, custom posts, custom field integration).
The Problems:
- The client keeps adding on more todos, he considers them expansions/alterations of the features I agreed to do in the contract but these changes are significant time consuming changes.
- The dev's changes introduce bugs and errors.
- The dev is meant to maintain the project after I am finished but doesn't have the skills or experience to compile to project for deployment. I have needed to train him on how to use git, npm, webpack, vue.js, etc. He currently has a problem where he cannot compile the project in production mode, it's obviously something to do with his npm/node version because it works fine for me on 2 different computers and OS's. But the client and him think it's my project setup. Should I or am I obliged to fix this issue for him? If he can't fix it, the client can't maintain/deploy the project. Fixing it involves me sitting down with him and just debugging the problem and trying to find a solution. The client is under the impression the problem is my code or project setup.
What actions do I have available to me? Should I say no to performing tech support for the dev? Should I agree to do some of the changes the client wants? Should I say no to all of them?
What do I want to do:
At this point I want to leave them with the project as is. It's not nice but I believe I have implemented the features outlined in the contract. I realise I will receive a big reputation loss and possibly legal action. I invoiced the client in 2 installments, so 50% after 2 weeks (client paid this) and another 50% 3 weeks after that (not yet paid). I am happy to lose the last installment and maybe that would provide some legal protection?