Life is short, and jobs exist elsewhere. If this one makes you unhappy, change it. If you have a family to support, you obviously have less flexibility, and will probably need to line something up before leaving the current position.
Of course, you may be too inexperienced to recognize the wisdom of some of managements actions and decisions (and we can only see your side of it from where we sit, so maybe we're missing that wisdom as well). Your application may be a small piece of a very large puzzle, and the cost of making other pieces fit what you're developing is far too high and the benefit too low. Humans often consider the things they are familiar with to be far more important in the grand scheme of things than the community as a whole does. Where you see huge glaring problems, management may see something that negatively affects only 5% of their users only once per month, while making the sweeping changes required to implement your vision could potentially effect all users 100% of the time.
Again, I dunno. I can only see what you've shown us of the picture.
As for this:
I also have an annoying passive-aggressive attitude, and because I care about the project more than I care about my job, I think I became the whiner, the bad apple of our project. I hate myself for this, but the morale of the team is really low, and I'm not alone in thinking that every possible bad decision ever was already made, although the others cope with it better.
Of course, I was blamed for affecting the team's morale, since I was so straightforward and sincere about it. I do admit that sometimes my words are not "politicaly correct", but this project is like my child. And since feelings are involved it is really hard to be "politically correct" and say things in a "nice way".
This is a serious flaw on your side of the equation. The words "nice way" should not be in quotes...and since you've put them in quotes, you make it clear you hold them in the same disdain you hold "politically correct" (which most folks do have a bit of scorn for, these days). But, basic civility in the workplace is something that isn't optional.
Work on it. You cannot change things in your current state. Victims don't make things better for anyone, including themselves...and though the situation may not be your fault, if you want it to get better you'll have to take some responsibility for making it better. Which could mean accepting that this is not the company for you and moving on to another (maybe starting your own, since we're on a startup-focused forum, and most of us think starting a company is the only way for us to keep our sanity).
I've known several folks who quit their corporate job, and yet continued to work on the same project as a contractor...making four times the money for the same job, and able to come and go as they pleased. But, this requires circumstances that probably don't match yours (project is vital to company, employee is vital to project at least for the short term, and everybody still likes employee when he announces his intention to leave--and he is able to make a strong case that he's doing them a favor by staying on as a part-time contractor for a few months while they transition in new people for the project), and if you've given yourself a reputation for being difficult to work with, you'll probably find they're not so eager to have you back.
In short, you can't change other people. They are out of your control. What you can change: Your approach to working with those people, whether you work with those people at all, and your own approach to the problems you perceive that are making you unhappy.
If you can't change jobs, and you can't make this one a better fit by dealing with people more diplomatically, the best you can do might be to simply view your tasks in smaller, more humble, pieces. Instead of making the whole application beautiful (and thus requiring buy in from every department and uncooperative management)...make your little pieces beautiful...not visually, if visual beauty requires going against management mandates (I think you'd be surprised what you can do within such constraints--embrace the limitations and try again--color scheme, logo at the top of the page, and type is probably all that is really required to keep your bosses happy, but even if many things are dictated by style guides and such, you can still build nicer look apps than the standard by being simple, consistent, standards-compliant, and accessible). Just make your code smaller, more concise, nicely commented, well-tested, and reliable as hell. When you've done that, volunteer on any new projects that come up that touch your code...and do the same. Eventually, everything you have to deal with is wonderful (or as wonderful as you're capable of making it), and at some point you'll hopefully be happy enough to not be a jackass to your co-workers, and they might even begin to appreciate that you know better than they do on some things. You might just find yourself in a project management role and able to make real changes (not likely, but stranger things have happened). I can assure you that picking fights won't do it, though.
This is the kind of advice I searched for. I actually feel like a jackass, but I don't have experience which such conflicts and I let things get out of control. I actually was under the impression that I could change things just by pointing out the flaws. I was wrong of course.
Unfortunately I am the type of developer that's interested in multiple topics, ranging from algorithms (parsers, data-mining, inductive reasoning), to usability. And it sucks because I have opinions about everything.
Life is short, and jobs exist elsewhere. If this one makes you unhappy, change it. If you have a family to support, you obviously have less flexibility, and will probably need to line something up before leaving the current position.
Of course, you may be too inexperienced to recognize the wisdom of some of managements actions and decisions (and we can only see your side of it from where we sit, so maybe we're missing that wisdom as well). Your application may be a small piece of a very large puzzle, and the cost of making other pieces fit what you're developing is far too high and the benefit too low. Humans often consider the things they are familiar with to be far more important in the grand scheme of things than the community as a whole does. Where you see huge glaring problems, management may see something that negatively affects only 5% of their users only once per month, while making the sweeping changes required to implement your vision could potentially effect all users 100% of the time.
Again, I dunno. I can only see what you've shown us of the picture.
As for this:
I also have an annoying passive-aggressive attitude, and because I care about the project more than I care about my job, I think I became the whiner, the bad apple of our project. I hate myself for this, but the morale of the team is really low, and I'm not alone in thinking that every possible bad decision ever was already made, although the others cope with it better.
Of course, I was blamed for affecting the team's morale, since I was so straightforward and sincere about it. I do admit that sometimes my words are not "politicaly correct", but this project is like my child. And since feelings are involved it is really hard to be "politically correct" and say things in a "nice way".
This is a serious flaw on your side of the equation. The words "nice way" should not be in quotes...and since you've put them in quotes, you make it clear you hold them in the same disdain you hold "politically correct" (which most folks do have a bit of scorn for, these days). But, basic civility in the workplace is something that isn't optional.
Work on it. You cannot change things in your current state. Victims don't make things better for anyone, including themselves...and though the situation may not be your fault, if you want it to get better you'll have to take some responsibility for making it better. Which could mean accepting that this is not the company for you and moving on to another (maybe starting your own, since we're on a startup-focused forum, and most of us think starting a company is the only way for us to keep our sanity).
I've known several folks who quit their corporate job, and yet continued to work on the same project as a contractor...making four times the money for the same job, and able to come and go as they pleased. But, this requires circumstances that probably don't match yours (project is vital to company, employee is vital to project at least for the short term, and everybody still likes employee when he announces his intention to leave--and he is able to make a strong case that he's doing them a favor by staying on as a part-time contractor for a few months while they transition in new people for the project), and if you've given yourself a reputation for being difficult to work with, you'll probably find they're not so eager to have you back.
In short, you can't change other people. They are out of your control. What you can change: Your approach to working with those people, whether you work with those people at all, and your own approach to the problems you perceive that are making you unhappy.
If you can't change jobs, and you can't make this one a better fit by dealing with people more diplomatically, the best you can do might be to simply view your tasks in smaller, more humble, pieces. Instead of making the whole application beautiful (and thus requiring buy in from every department and uncooperative management)...make your little pieces beautiful...not visually, if visual beauty requires going against management mandates (I think you'd be surprised what you can do within such constraints--embrace the limitations and try again--color scheme, logo at the top of the page, and type is probably all that is really required to keep your bosses happy, but even if many things are dictated by style guides and such, you can still build nicer look apps than the standard by being simple, consistent, standards-compliant, and accessible). Just make your code smaller, more concise, nicely commented, well-tested, and reliable as hell. When you've done that, volunteer on any new projects that come up that touch your code...and do the same. Eventually, everything you have to deal with is wonderful (or as wonderful as you're capable of making it), and at some point you'll hopefully be happy enough to not be a jackass to your co-workers, and they might even begin to appreciate that you know better than they do on some things. You might just find yourself in a project management role and able to make real changes (not likely, but stranger things have happened). I can assure you that picking fights won't do it, though.