Alpha Version

An alpha version is available. Alpha Versions are likely to still be buggy, but should offer part of the feature as it would otherwise be expected.

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

The PAD File format was defined by the Association of Software Professionals. Only that format has many limitations making it pretty much unusable with software that has a very broad or non Microsoft Windows oriented type of software. For that reason, we also include our own Snap format called SNSD (Snap Software Description). Both formats make use of XML, only the SNSD format includes a REST API allowing applications to easily navigate a large number of software offering without having to search an entire website to find a few SNSD Files.

Implementation Status

At this time we have all ...

Quite often, the system has to present some data to the end user.

This data is generally saved in a form that is common to anyone in the world: a number saved as an integer, a date saved as a Unix timestamp, a currency saved as a floating point, etc.

To display that information to the end user, the default format may not be adequat. For example a date may be writen in any one of the following formats:

26.11.2014  Europe
11.26.2014  US
2014.11.26  Japan

Similarly, the separator of digits in a number may be a comma, a period, a space...

(123) 555-1212       US Phone number
US ...


A standalone tool runs in the background of all your computers in a Snap! cluster, automatically started by snapinit as a backend. This tool gathers data to report about the current and past health of each server. Contrary to a backend, this tool is expected to run on ALL servers so we can have a better idea of how they run.

At this time the data gathered will include:

  • Network connectivity
    • Connectivity of various expected services and computers
    • Connectivity of local servers not directly related to Snap! Websites (i.e. SSH, SMTP, etc.)
  • ...

Cloning Data

A page of content (and remember that pretty much everything in Snap! is a page) can be cloned.

Pages are defined using a URI such as:


Cloning allows you to create a duplicate of that page. Maybe you wanted to copy it to:


Having a copy would allow you to not lose the previous version and new edits on either one do not affect the other. This could also be used when writing a book and a page is quite similar (i.e. the copyright page.)

The clone process copies all the data in the pages, data ...

Links Management

The URLs found in a page are added to the links table (a specific content type) so we can manage all the links.

  • With this table the computer can test to find out whether a link breaks (i.e. you cannot follow the link to an existing website anymore.)
    • Note that links on pages that are not currently published should either not be checked, or checked just once. Unpublished means not visible by regular people (i.e. it could be marked as spam rather than just unpublished.)
    • Find out whether we can know when a YouTube video (and others) get removed, ...

Anti-hammering feature

Whenever a user is attempting to read way more data than expected in a really short period of time, one is quickly marked as a hacker and if the behavior lasts a little too long (i.e. the hacker's robot doesn't follow our requests to slow down its requests) then we block one's IP address using snapfirewall.

Our Snap! Websites implementation counts HTML pages and all the various attachments (images, JS, CSS, etc.) as two separate groups. Each access is logged using Cassandra using the HTTP status, date, type, and URI of each hit. This way we can use the count() functions of ...

Firewall feature

Administrators to connect on a different port

Note: This feature may not work well on a multi-site1 installation.

When setting up your website you could have an Apache setting that let your administrators access the site via port 8888 instead of 80 or 443. Then setup the firewall to block all users except those administrators from connecting on port 8888.

Accepting a log in from the administrator(s) only ...

  • 1. Multi-site in the sense multiple websites on the same computer, and also multiple computers that may reply to the requests. In other words, the problem applies to both cases!

We want means to select a layout based on all sorts of criteria such as the domain used to access the website, the device (iPhone, Desktop...), whether the user is logged in or not, depending on the path, the page, the browser in use, etc.

At this point, we have a Page Layout which actually is used to indicate how the contents of the page is to be placed on the screen. That Page Layout can also be a full page layout in which case that page is set (i.e. it has priority over any other selection.)

The layout should be selectable on a per path basis. For example, if you create a set of pages ...

Filter feature [core]

To avoid security problems on websites, you need to have different level of filtering of the data posted by the website users.

This generally comes down to something similar to this:

* The owner of a website can write anything they want on any page, including HTML, JavaScript, IFRAME, etc.

* An editor may be able to add IFRAMEs or OBJECTs, but no JavaScript.

* An author is able to enter anything on a page except IFRAME, OBJECT and JavaScript code.

* A registered user can insert images and format his text (left, right, bold, etc.)

* A simple visitor can only write text.

The filter can do ...

Syndicate content Syndicate content

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

Contact Us Directly