I’m about to begin a large scale web app project. The premise of this project is it will be a destination website that aggregates content (content is to be collected with a crawler/bot that runs independently and at set intervals to index data provided from partners that have approved our technique) and displays this content to users. Users can tailor what content the platform presents them with by ranking content, in an attempt to give the platform data to determine what content the user is likely to find favorable. (Yes, I know this sounds just like stumbleupon.com)
The creator of this idea is non-technical, and he has previous experience developing websites using wordpress. Because of this, his first instinct was to call for a CMS in creating this project. My instinct as a developer that has extensive web development experience building web apps with PHP/Codeigniter, is that a CMS was never intended to be used to create such a purpose-specific tailor-made app like this — and attempting to use one would create a lot of unnecessary overhead/clutter in the project.
I’m thinking it might be better to build a back-end interface to view/add/edit/remove content that the spider collects, since I imagine this is the only type of access/control that non-technical partners will need in this project. (possible also ban users, remove inappropriate comments on content, etc)
But what do you guys think, is there some sort of value that a CMS could provide to a project like this? Are there situations where it’s a generally accepted rule that a CMS is good/bad? I’m coming from years of PHP app building using frameworks like codeigniter, and recently I’ve had to do work on a wordpress site — which to me seemed like a disgusting mess of global variables, endless ‘hooks’ to get code to execute when/where you need it to, etc.
—- EDIT —-
I should add that an intended feature to add to all of this is users will be able to add their own content to our collection of aggregated content. Just another feature that makes me think this app is too ‘unique’ to be properly developed on top of a CMS.
—- EDIT —-
Another thing to add is scalability is a big concern. We want to build this to be able to handle anywhere from 200,000 – 2,000,000 – 20,000,000 unique visitors per month. That means using everything at our disposal, load balancing, memcached-caching, worker processes/servers, high-availability mysql and mongodb databases (for different purposes in our web app), content-delivery-networks, hosting asset files independently of application server, etc. I’m uneasy about giving up direct control over all of the code because in the past I’ve used my ability to touch everything to fine-tune any performance issues/bottlenecks.
Well, most CMS out there are not only CMSs but also comprehensive PHP frameworks providing basic functionality. Having said that CMS are suitable more for websites that are content base like websites having a lot of articles. It is much easier to update and manage such sites by the users who aren’t technical users. But when it comes to webApps they require much more interactions, e.g. a in a CRM application the inserts, reads, updates happen very frequently.
Others points that should be kept in mind are
1) would it be scale able if I use CMS for my app, If you think your app will grow in future, and you start building it from scratch, by the time your own piece of code would be transformed in a Framework for your app. Things will be much easy to update, adding some new functionality etc.
2) Flexibility, if you go with CMS you will have to constrained yourself in the CMS environment, What if you need a certain functionality in your website but you find nothing tailor made for that. In that case you will have to develop it your self which could take a long time than it would take otherwise.
3) Performance, CMS should be used for the purpose they are built for, a CMS will load everything it needs to function properly whereas much of these stuff you won’t need for your app at all.
I would say to go with some Framework that is built to help the development process, like CakePHP, CodeIgniter, Yii etc.