Basecamp built with Drupal - part II
This is a follow-up post on 'Building your own Basecamp (project management) with Drupal'. As described in the first part, the most difficult challenge will be to figure out what exactly 'a project' should be and how to organize the structure - what kind of architecture will be needed?
In our project management 'app' we would like to have the following functionality, similar to Basecamp/ActiveCollab:
- messages, discussion (like a forum basically)
- writeboards (single documents with more markup options)
- file-sharing, all files in a single place
- multiple to-do lists per project
- milestones/calendar/planning tool
- email integration (a 'dropbox')
- unlimited user profiles
- user access control (and possibility to restrict users from seeing time-tracking for example)
- everything needs to be searchable
- ability to subscribe/notify users about new content through email
- should print well
- would be cool to make it usable through mobile devices
We'll look in detail at each if these later on. Some of these can be custom made content-types and other will have to come from specific modules.
The backbone: Organic groups
We can satisfy a lot of requirements by using organic groups (OG). This module enables users to create collaborative groups. That's exactly what we need. OG is a big solid well-known module with many plug-ins available to extend its functionality, but the core functionality will nicely serve as the backbone for our Basecamp clone.
Just think about a project as a group of people working together, sharing different content-types. OG enables that with a few clicks. Furthermore, OG works together with views and templates to customize your project homepage, handles all access control and integrates with notification modules.
Can't we do it without Organic Groups?
If you would like to build something like this without OG (for any reason), you would need to use something else to 'group' all the users and node(types) to a project. One way would be to use a unique taxonomy term for each project as a 'container'. Taxonomy is built-in with Drupal and this would allow for a scalable solution.
However, we would need to use additional modules to handle things like access control and taxonomy terms are not nodes. In general it would me much harder to manage projects and users. Also, creating a project itself would to be more of a hassle.
Panels and Organic Groups
Just a quick note on Panels which is an excellent module (right up there with CCK and Views). The good news is it might one day replace blocks in Drupal, and I think it would be great if we could use panels to customize our project-pages.
The bad news is that Panels 2.0 is still in an early alpha stage for Drupal 6 which I soon discovered when I started playing around with it for a test-setup. It doesn't seem very stable when using path overrides with arguments and context variables. OG comes with panels support, but you will see a big uppercase warning next to that part of the module: not yet compatible with Drupal 6.
I think it could take a while before OG and Panels work well together in D6. But it's certainly a desired feature.
In the next part I'll complete this recipe with the other (OG) modules needed, after that it's time to put it all together and start building and experimenting!