You should leave. But give them time to find a replacement or mend their ways. Moreover you would not want to put the entire blame of a failed(lets hope not) product on you. Also leave only if that is the last resort. Working in startups is a great leaning experience, especially for developers. You being the some developer must be taking care of everything from ideation to execution and deployment. Very few people get to do that. But if you are unhappy with the work, the people are not nice and the product is dodgy its better to call it quits. Its not cowardice, its practical. This is not adding any value to you or them