Beta Version

This version is still in development, but it already passed the alpha stage meaning that it is expected to work, although it is not unlikely to include a few more bugs that we're ironing out or an additional feature to be complete that is still missing.

See a complete list of features sorted by Snap! Websites Development Status

List feature [core]

In order to allow for lists to be created, we need to have a plugin that generates indexes of all the data the user wants to list (but no more than what the user wants to avoid wasting time updating useless indexes.)

As the system moves forward, it can add new indexes dynamically, so we don't have to offer one specific list from the start. This being said, we want lists of all the pages (since pages are users, that includes users too.)

The lists can then be used to display pages as in a blog (i.e. newest to oldest, display title & teaser, etc.) It can be used to show the latest 3 ...

Online Forms

Online forms are required for many different aspect of a website.

Forms are used to allow users to search, for log in screens, for entering a quantity, to ask for credit card information for a payment, to write a comment, etc.

The forms are created and POSTs are parsed using the CppCMS library which takes care of that aspect of things (TBD).

The ability to create a form is a simple concept, however, the ability to generate the correct HTML code to get the expected result is not. We hope that the CppCMS library will take care of that so we do not have to on our end. The only thing we want to ...

Users, Sessions, Duration...

The website must be capable of supporting users. For this purpose we'll use the content type "users". Users are defined in that content type and therefore benefit from all the capabilities offered by the content type (revisions, signatures, pictures, extra fields to enhance the default profile of a user with things like an address, phone number, etc.)

There are two main categories of users: anonymous users and registered users.

Registered users are viewed as anonymous users until logged in, although we can make use of several level/degree ...

More about groups, actions, and permissions is defined here:
Content Object in Cassandra (Content Tree)


It is to be noted that in regard to terminology, the terms used in the many document are somewhat confusing. It will get fixed with time. In the software, however, the terminology we are trying to be correct. There are 4 terms that are important defined as:

  • Permissions: Includes all the information that pertain to whether a user can act on a piece of data or not.
  • Rights: rights are assigned to users and content; users can act on the content only when they ...

Layout feature [core]

The layout feature offers a very easy way for our end users to select a layout for their website (global, generally called theme) or on a per page basis (local).

The layout may be one wide column on the left and a smaller one on the right. It could be 4 boxes, 2 at the top and 2 at the bottom of the same size, or with the top-left smaller than the top-right, etc.

Some of the content of the boxes can be predefined as the user edits a page (i.e. marking this top-left box content as the default for top-left boxes.) Moving the data from one box to another should be easy.

Technically, layouts ...

Page feature [core]

Support means to add pages to the website.

This does not automatically translate into "Post Content" since a page may just be a set of references to other pages, list of things, etc.

Creating a page requires:

1. Adding a title

2. Selecting a layout, Selecting a favicon1

  • 1. At times, I create a page that references a different project. For example, I have the SSWF project on my company's website. This project has its own favicon, but unfortunately on that page it shows the company's website icon. This feature would simply declare a shortcut icon meta tag with the correct ...

Syndicate content Syndicate content

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly