Once upon a time I was asked at my job to work on company website. There was a choice among existing CMS for the website to be driven by, plus I could think about implemention of something of my own — but you know what? I didn’t feel comfortable to start a CMS from scratch. Now I know why, exactly.
I found this nice article called Homebrew CMS (by Seth Gottlieb), which lists six points of a modern content management system which you as architect should consider before a start:
Versioning — it makes data model much more sophisticated;
Localization — should images be translated, what is your default language, etc;
Preview — the content being previewed must be connected with all the website and not visible to others;
Deployment — dependency management like images which are pasted in the content;
Usability — is probably the most common reason why companies abandon their home grown CMS;
Access control — your system must control not functions only, but also the data.
All in all, an open source free CMS might be the best choice for you too. Spare your energy for something else.
Things you would likely to check in your application. First story is about geo and localization features of your application.
Detect browser languages, find the one your application supports and set it as your application’s current languages. If it’s not set, first auto-detect country (see below) and then use the country’s main language.
Auto-detect country: first by IP (free database of countries IP addresses can be downloaded here), then by browser locale (en-US means it’s a USA user), then by auto-detected language (ru language gonna mean Russia. Yes, the user can be located in Ukraine or Belarus, not in Russia – but let’s face it, it’s much closer than nothing).
On the grounds you’ve detected the country, you can preset the currency for the user.
Save this data in user’s profile when he/she registers in your application. If your application cares about other languages the user can speak, you can parse the rest of browser languages and save them too.
If entities of your application can be located on map, set geo meta tags to tell the search engines about place your entity is at. (success story). Find out more on geotagging at Wikipedia.
List of countries with a set of supported languages and default currency code for each one can be got from GeoNames (countries info dump).