I'm a new Drupal developer, and I made an initial implementation of a project, but some of the things that I'm doing probably aren't the best solutions, so I was hoping to get some critiques of my design. What the site will do and how I'm doing it is below.
I'm making a volunteer matching service in Drupal 7. Specifically, community representatives from nonprofits can point our service to their issue tracker (ie, GitHub), we'll turn their issues into nodes, they can organize those nodes, and volunteers can sign up to work on some of those issues. Also, those volunteers will belong to an organization with a Corporate Social Responsibility (CSR) representative, and the CSR representative can administer their volunteers (email them, modify the tasks that they signed up for, etc).
Community managers are a user type. I use profiles2 and fields to give them an issue_tracker_url that they can store in their profile. I implement hook_menu to add a link to their profile that they can click to grab issues from the issue tracker based on their specified issue_tracker_url. The function that pulls stuff down from the issue tracker is the callback in hook_menu.
"Issue" is a custom node type that has some fields like the issue's id within the issue tracker so that we don't get duplicate nodes if the nonprofit pulls issues multiple times.
Each community manager can have several projects. Each project can have smaller sub-components. The issues from the issue trackers all belong to a given sub-component. The community manager should be able to manage which issues are in each component, which components are in each project, and which projects are in their organization. Allowing them to create nodes of each type and organize everything in a book would work, but it seems like a kludge. Taxonomies seem like they might be a more elegant solution, but I wasn't sure how to get one set up for what I'm looking for or how to let the community managers manage their own organization's taxonomy.
The volunteers also need to be able to view using this hierarchy. That is, they should be able to see a list of all organizations (all community managers). An organization page should have a list of all projects; a project page should have a list of all sub-components; a sub-component page should have a list of all issues pulled from the issue tracker that were organized into that component. I have tried using a view with filtering, but I haven't found a way to do that so that it will automatically generate pages based on the hierarchy described above.
I haven't yet figured out how to set it up such that the CSR representatives can manage volunteers from their company.
All of this should be easy to setup in case we want to have multiple instances of this service. Thus, the manual setup stuff involved in setting up the views and fields should be automated. Could I use the features module to automate this?
I have tried to do as much of this as possible using existing modules for the sake of maintainability, but if any of the functionality that I'm describing doesn't exist well in an existing module, I'm perfectly comfortable programming it myself.
Thanks for reading through my lengthy description and for your critique!