Sharpcms is a newly published framework for making content management systems in .NET.
These are the primary goals behind it:
- Separation between the core system and the specific website (for maintaining purpose and bug fixing).
- New functionality made on a website should be easily ported to all the websites running on the platform.
- It should be possible for a beginner to setup layout and new functionality.
- The data model should be defined by the GUI and the settings.
- It should be able to handle many different content elements (coworkerdata, news, paragraphs, wysiwyg, flash etc.) and should also have many different containers (newscontainer, leftcontent, rightcontent etc.).
We use a generic data model which uses XML for persistency and XSLT for the graphical interface (also known aas HTML). Between those two points we have the actual core system, which is based on plugins for handling the different modules (pages, users, files etc), and a huge XML library for working with the XML.
Right now the system handles the following:
- Pages with content containers with data elements
- Multiple templates
- Generic plugin handling (settings, rules, rights and binaries)
- Pure XML, XSLT and C#
- User handling with groups
- Files (upload, download, movefile, makefolder, movefolder etc.)
- Picture handling (resize and crop)
- Settings manager
There are many more things under the hood that we haven't gotten around to document. For example, making a breadcrump is very very easy since its just XSLT and XML.
How to get started
Download the demo project. It has all the files you need to make a website. The core system has been compiled to binary files. Unzip to a folder of your choice, open Visual WebDeveloper Express and choose Open Website. Choose the folder where you unzipped the system, hit run and you are up and running.
When you are in Visual Studio, you will see a Custom folder and a System folder. The Custom folder is where you place the settings, modules and the layout - things that are specific to the website you are working on. The System folder is for the core components. I would recommend that you look into the custom/components/frontend folder. That's where the XSLT and the CSS for the front-end lies. This is a good place to start.
Also, for every page in the system there is a unique XML document created live. This document can be seen by adding a query
event_xml=true like this: http://www.sharpcms.net/?event_xml=true.
This is the XML document that the XSLT document parses to HTML.
We need you to get involved
The API (Core and plugins) has most of the functionality needed to make a good website. Right now we are working on the GUI to make it as intuitive as possible. This is nearly impossible if there is no feedback from people with fresh minds and ideas. Therefore, please give us your feedback about the functionality.
We have opened a Google Groups account - please write to it. We will try to send out the news on it as well.
The whole system is placed in a Subversion repository so it should be possible to make patches to the system.
Although I do take the credit for starting the project, I am definitely not the only one who has worked on it. There are a couple of co-workers working with me to produce the system, and solve some of the technical stuffs. On Sharpcms.net we try to give credits to the people who have helped us - the list is not yet complete. We have also given credits to the articles, samples and other Open Source projects that we have used in our system.