I am looking to build a sports small application, but I would like to build it so other people/organizations could use it as is. These would be separate apps, not one app that caters for all. For example American Football would have the app and Basketball would have their own app, completely separate entities.The application would need to be specific to their data needs and each organisation's app would need to store different data. But they'd all maintain some commonality, like users, logins, forgotten passwords, signups etcI can provide a base application for all common storage items and the website functionality. What are the most proven and flexible ways to allow a person/organisation to cater to their data needs and be able to store/manipulate/retrieve custom data with little custom editing of the server side language?I'm wondering is this a good case for using something like Mongo rather than a traditional RDBMS?To confirm it's not just turning some fields on or off in tables, but the data will for the most part very user-centric if that helps.UpdateAs per Guy's comment, it will be used for coach and player data for each sporting organization. It will all be based around either the coach or player, the full complete differences between sports organizations I wouldn't know at this point, but I know there are differences from people who work in them, for example:For players and coaches there will be standard data to help identify them and note their names, players height, players weight those kind of metrics. Where it gets more complicated is that the sports have completely different models for qualifications, multiple different streams, with various tiers and sub modules. Normally I'd just look to build an active column that could turn the odd field off or on. But It appears that it might be too rudimentary as the models are so different.
CMS with unknown data structure
database design;cms
Premature generalization?Have you ever read about The Rule of Three? I think you are trying to generalize a little too soon. It will all be based around either the coach or player, the full  complete differences between sports organizations I wouldn't know at  this point, but I know there are differences from people who work in  them, for example [...]It is very tempting to try building a generic framework from scratch, but this is risky. You don't know what are your requirements for American Football, nor the one for Basketball; you don't really know what will be generic and what will be fixed.  It is very hard to guess how to build abstraction with a top-down approach. On the other hand, you don't need to build a complete application before understanding what parts need to be made reusable (e.g. logins). I would suggest to build only one application first, and see how it goes. When you have a basic understanding of the rules governing your domain, when your first application have a minimal set of features that you like, try to see how to make a second one.Try to write modular code, decouple as much as possible, and refactor so that you don't repeat yourself. When you have enough informations about the differences and the commonalities between your applications, you will be able to refactor sensibly and provide good abstractions.Custom CMSYou decided to write a custom CMS instead of using one, but you can still look at an existing open-source implementation (Drupal) to see how they manage customizations. See for example the Schema API.I don't have much experience with CMS, nor Mongo. I don't think you risk much by choosing one approach over another like Mongo or RDBMS: pick the one you are the most familiar with, or the one you want to learn ;-) and make version 1.0 of your application.