I have a website that provides a searchable directory of churches, schools, organizations. All this data is nicely populated in our database. Now, we need to provided a system that allows users to attach documents, images, articles, reviews, and events -- to each one of these churches, schools, etc.
I think I would store all these datas in own database-tables. Organization with Organization-Datas, and the tables for documents, images, articles, events and so on with foreign-keys to the organization-table.
Then ,I think ,I would create only one modx-page for each type Organization-Data, documents, image-galleries, articles, events and so on.
ON each of these pages on the top or an js-popup one snippet for your searching and filtering. Store the filtering in a session-var.
then in the content on each of these pages you can place a snippet which lists all needed datas for the filtered school/church. Perhaps, if one admin of the actual filtered school is logged in, can edit and add datas directly on these pages.
I used allways my snippet xett for these sort of things. At my last project I was using the next generation of xett. It is still in development and is named blox in combination with our ajax-frontend-editor xedit, but works allready very well on my last project. (Complete Organization of an rowing-regatta).
It can list each type of data which can be stored in nested arrays. you can create different projects with different tasks for each project. Each task can have its own templates (chunks) and so on.
Perhaps it is worth to try it and develop it further for your project.
cheers
Bruno