About Riot
Custom web-applications vs. CMS-driven sites
In general, Content Management Systems are well suited if you need to setup a website that is pretty much standard. Just install some plugins, tweak some templates and you are done.
On the other hand, it can become really painful, if you need to add a feature that is not provided out-of-the-box or you have to patch the code in order to meet your requirements. Imagine a website that displays a product catalog. Of course we could create a page for each product and put some texts and pictures on it. But now lets say we want a “product finder”, some sort of wizard with lots of buttons and sliders that asks the user for his preferences in order to filters the catalog and display only the products the user is looking for.
That's where a website starts to turn into an application.
Content needs structure (Part I)
In order to build such an application the catalog data has to be stored in a structured and semantic meaningful way. What you'll want is a simple relational database with some custom tables that can be easily accessed from your application code.
So if you were the developer who had to implement this feature, what would you expect from the CMS and what should the system do to assist you? Well, you'd be really really glad if the CMS would just stay out of your way and let you get your job done quickly!
Not another framework
A Content Management System should not tell you how to retrieve and display your (structured) data. There are numerous excellent tools and frameworks out there that address this issue.
Riot uses Hibernate and Spring internally and we would strongly recommend you to use these tools for your application, too.
The 'M' in CMS
Of course there's one thing a CMS actually should do for your: It should provide way to manage the data, after all that's what the 'M' stands for.
This is a crucial point, as we are talking about an interface that has to enable non-technical users to do a rather technical job. Ideally we'd expect the CMS to provide an intuitive and easy-to-use frontend that unburdens the developer from thinking about the actual user interface design.
To learn how to manage structured data with Riot please read the chapter Managing POJOs.
Content needs structure (Part II)
The ability to manage structured content is surely one of most important features for a modern CMS. On the other hand even highly individual applications usually contain content where structure doesn't matter at all. Some welcome texts, usage hints, content teasers and so on.
Let's look at this again from a developer's point of view. For this kind of content you don't really care where it is stored and surely you don't want to create tables for it manually or write custom code to retrieve the data. However you want to specify what type of content is allowed and how it should look like.
To learn how Riot handles 'dumb content' please read the Project Skeleton Walk-Trough.
As you can see, the requirements strongly depend on the fact whether you are dealing with structured or unstructured data. Fortunately Riot provides seamless management for both types of content.