This feature is considered complete at this point. The feature may still have a flag or two missing and is expected to still be tested to find out whether it still has some bugs. Other than that, it is nearly ready for a full release.

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

The inter-process signalling system is a server that can be communicated with via TCP/IP streams and UDP packets. This is very similar to an RPC system, only extremely specialized for Snap!

When starting Snap! you run snapinit. That process creates the snapcommunicator process which is the signalling server. Once the server is up and running, the other processes are started.

The snapcommunicator process is a server that accepts four types of connections:

  • Quick UDP signals, in most cases those are used to ping a process so it immediately starts a task in the background.
  • ...

Editor: Hidden Widget

The Hidden widget is used to include data in a form that has to be hidden. The concept is pretty simple, it allows us to have a session identifier in forms without having to show that identifier to the end users. The form session identifier is necessary to allow the saving of the data in the form. Otherwise we assum that a hacker is trying to send spam to the server.

In standard HTML forms, one can use an input typed "hidden". Many people make use of those to carry data on the client side instead of the server side. We strongly suggest that you instead make use of the user session ...

When sending the user to your website, it is possible to request the website to add or remove items to the e-Commerce cart. This is done using links build as a set of commands as defined here.

The cart understands the special query string named "cart". The string is built with a set of letters and parameters. The letter 'p' stands for product and it is the activator, meaning that all the parameters prior apply to this 'p', then the parameters get reset. For this reason, you generally want the 'p' command last.

Note that the query string is interpreted ...

The following is a list of HTML meta tags and links we want to support in Core. More will be added with time and some will be removed as their corresponding reference disappear.

Many of the links are defined by RFC 5988. Some are specific to a feature (icon, hub) and others are defined in Core (top, up, next, previous...)

Note that the Dublin Core meta tags were introduced with "dc." before. They now use "dcterm." instead.


We heavily use AJAX to allow immediate editing of all the page content. Pages do not require JavaScript to be read, but any work on a page requires full JavaScript functionality. The code sends POST and at times GET messages to the server to maintain the page as expected and keep the server synchronized.

For example, you are able to log in a page using AJAX so the page doesn't need to be fully refreshed. Similarly, editing the title of a page just requires a click on that title.

We have to think about several side effects of using AJAX:

  • All AJAX code should ...


Having a pop-up instead of any other type of message box will allow use to (1) have the box be stationary (z-index of 1 or more, fixed position, etc.); and (2) have ONE message box for ALL websites, which means a lot of time saved since you won't have to recreate a different box for each theme. Also, when not an error/warning message, we want to have a countdown and auto-close feature.

All the themes need to be capable of showing messages, preferably near the top, but it could also be a popup box like the default CSS offers. (Especially for long forms, we may ...

Syndicate content Syndicate content

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

Contact Us Directly