A lot of people like to organize their workflow around projects, mostly via Bozhidar Batsov’s excellent projectile package. Some of those people go further and use a package like perspective to provide each project with its own workspace. I don’t organize my workflow that way but it’s an attractive option that I occasionally consider adopting.
Another group of people swear by packages like neotree that provide a file tree off to the side of their Emacs windows. I definitely don’t want to sacrifice screen real estate for that but there’s a large population of users who disagree.
Calum MacRae is in both camps and has neotree set up to track his current perspective. That works well most of the time but when he switches between two existing perspectives, neotree does not update to the new perspective. Of course, it’s Emacs so MacRae wrote a bit of Elisp to fix the problem. If you like the perspective idea and want a file tree rooted at the top directory of each project, you should definitely take a look at MacRae’s post and grab his code.