On a side-project I'm working with someone else on at the moment, we're using Asana.
I'm the tech/coding part, whereas he has the domain knowledge, so we have a Workspace setup for the project, then have seperate projects within that - ie, at the moment we have a Front-End project, a Back-End project, a Phase 2 project and a Future project.
If it's a bug or something we want for launch it goes into Front or Back-End, for sometime after launch it's Phase 2 and a nice-to-have goes into Future - tasks get assigned to me when there's an action needed, once done I assign it back and once we're both happy then it's completed - we use the Comments to put notes down regarding ideas for how it should work/look etc. against the tasks.
One thing I like that Asana has recently got is sub-tasks, so you can break a task down into component tasks without cluttering your main Task list up.
Works for us, may not for anyone else though :)