Latest news:

Welcome to the Atlas toolkit web site

About the Atlas toolkit

Main features

The Atlas toolkit is the easiest way to add a graphical user interface (GUI) to your programs, regardless of the language used. And it requires only basic knowledge of widespread and easy-to-learn web technologies (no JavaScript required, unless you use Node.js).

Albeit relying on web technologies, the Atlas toolkit is not for building web applications, nor desktop applications. With the Atlas toolkit, you obtain hybrid programs. Like desktop applications, the same code can handle both front and back ends, and, like web applications, the programs will be reachable from all over the internet.

Programs based on the Atlas toolkit, when launched on any computer which has access to internet (no need to be accessible from internet), can be used through a modern web browser on every device with an access to internet. You have nothing to configure, or to upload on a remote server. Simply launch your program on a computer connected to internet, and it will be accessible from everywhere on internet.

Even a program which was originally designed to have only a command line interface (CLI) or a text-based user interface (TUI) can easily be modified to have a GUI, thanks to Atlas toolkit. The GUI can then cohabit with the other interface, giving the user the choice of the interface s/he wants to use.

The Atlas toolkit is very lightweight, so it can be used on devices such a Raspberry Pi (even the Zero model), opening new horizons to electronics or robotics enthusiasts. The Atlas toolkit can also be used on Android devices, by using Termux.

The Atlas toolkit is currently available for Java, Node.js, Perl, PHP, Python and Ruby. Works are in progress for the toolkit to be available for other languages, and if you wish to discuss about those perspectives, you are welcome to do so in this forum.

A list of articles about the Atlas toolkit can be found here.

Modern programming exercises

Nowadays, almost all young people have a smartphone, so they are used to graphical interfaces. They rarely, if ever, had to deal with a text console. Writing programs with a textual interface, they may (falsely) find this outdated and therefore not very motivating.

An exercise consists, for the students, in writing a program to perform a given task. To check that the program is working properly, they will have to modify its parameters. This is usually done by modifying these parameters directly in the source code, or by entering their value at runtime with the help of instructions such as input(…) (if using Python), or also by handling this parameters as command-line arguments.

With a web interface, they will have a real graphical interface to enter the values of the different parameters. This is much more convenient, and also much closer to what they are used to with their smartphones. By using the Atlas toolkit, they can even use an online IDE such as, so they don't have to set up a development environment to make the exercises.

The Atlas toolkit also allows programs to be easily accessible from devices like smartphones. By simply scanning a QR code, students can access their own programs on their smartphone, and share this access with others simply by sending them an URL.

Here are some examples of exercises made with the Atlas toolkit. They are based on Python, but other language can be used:

A list of articles about using the Atlas toolkit to make programming exercises can be found here.

Raspberry Pi

The Raspberry Pi is a nanocomputer which was developed to provide an affordable device with which you can learn programming. And with the GPIO ports available on the Raspberry Pi, one can write programs to control electronic circuits and even robots.

The Atlas toolkit makes things even more fun. With the Atlas toolkit, you can easily modify your programs to add a GUI, with which you and control your circuits and robots directly from your smartphone.

There are some programs which were developed especially for the Raspberry Pi and other similar devices (like ODROIDs), and you will find more about them on this page.

Web application prototypes

The development of a web application is something which requires special computing skills and plenty of time, and therefore costs a lot of money. Before launching such a development, you better have a very good idea of what the result should be, and be sure that the developers exactly know what you want.

As the Atlas toolkit is available for the most popular languages and requires only basic programming skills, it's an affordable and fast way to develop a prototype of your web application, which can easily be shown to discuss about, and used to test the functionalities and refine them.

Once the prototype is validated, it can be used as a model for the development of the final application. You will so be sure that this application will be exactly what you want. And you can use the prototype to easily test and validate new functionalities before including them in the final application.


Before diving into source code, you can take a look on the live demonstration of the 15-puzzle game made with the Atlas toolkit here (more about live demonstrations).

The TodoMVC application

For comparison, the application from the TodoMVC project has been developed using the Atlas toolkit. This is what it looks like:

Hello, World! - a simple example

Here is a preview of the famous "Hello, World!" program made with the Atlas toolkit:

Hello World! preview

Click on above animation to get an overview of the global structure of a program using the Atlas toolkit, with the source code of the Hello, World! program for all languages in which the Atlas toolkit is available.

Live demonstrations

The purpose of the live demonstrations is to test the Atlas toolkit simply by using a web browser, with nothing to install, thanks to, an online IDE. You can even modify the source files or create your own projects. Live demonstrations are currently available for the Node.js, Perl and Python versions of the Atlas toolkit.

To launch a live demonstration (you will find a list of available demonstrations below):

  • click on the green run button,
  • open, in a web browser, the URL displayed in the black console (above the ^^…^^ line); this can usually be done by double/triple-clicking/tapping the URL, and then selecting the proper entry in the contextual menu (right click on portable/desktop computers, long touch on (some) mobile devices).

You can also, especially if you plan to modify the files, or if nothing is displayed in the console (mostly with the Safari web browser), do following (not available for Perl):

  • click on the fork button, left to the green run button,
  • uncomment one of following lines, depending which version of the demonstration you use:
    • //var REPLit = true; (Node.js; remove heading //),
    • #REPLit = True (Python; remove heading #),
  • click on the green run button,
  • click on (or scan with your device) the then displayed QR code.

On some devices, the label of the buttons are not displayed, as below:

Small buttons on ''' are respectively 'fork', 'run' (in green) and 'share'.

here the corresponding regular buttons:

Regular buttons on ''' are respectively 'fork', 'run' (in green) and 'share'

Complete list

If you are unable to launch a live demo, you can always retrieve the entire repository (see the Installation section), and launch the demonstrations locally…

Nodes.js Perl Python
The 15-puzzle game /
Basic example
"Hello, World!"
Note taking program
Reversi game / /
Hangman game / /
The TodoMVC application /
Basic chat room
SQLite / /

How does it work?

The library

On the launching of the program, or to update broad parts of the interface, the needed HTML code is sent directly to the browser; this is very similar to a CGI based application. Otherwise, only the needed part of the DOM is updated, like a single-page application. With the Atlas toolkit, you have the best of both worlds.

The HTML code can be generated using XSLT, manually, or by using the template engine of your choice.

Here are where you will find the source code of the library, with examples of use:

Remote server

Web applications usually need to be installed on a server which have to be accessible from internet. And, in addition of the application itself, there is also the need of a web server, standalone or embedded in the application, which handles the user's web browser requests.

By using the Atlas toolkit, you only have to launch your program on your computer, and you can give access to your program to whoever is on internet. As you don't have to deploy your program on a remote server, each modification you make to your program is instantly available. That's why the Atlas toolkit is particularly suitable for prototyping.

To achieve this, the Atlas toolkit connects to a free public server, which also handles the connections from the user's web browser. The URL corresponding to your program is displayed in the console from which you launched your program, and by simply giving this URL to someone on internet, you grant this person the access to your program.

The sources of the software on the remote server can be found here:

If you want to deploy this software on your own server, retrieve both above repositories and compile them.

If you are under Windows, use the .vcxproj files. For other systems, launch make in the root of each repository. Then launch <path-to>/xdhwebq-cli/xdhwebq <path-to>/xdhq/xdhqxdh (without the dll/so/dylib… extension).

You also need a web server, in which you install the content of the htdocs directory from the xdhwebq-cli repository. If you want to change or remove the banner, and/or also remove the QR Code, you have to modify the prolog.php file accordingly.

The change/remove the welcome message displayed in the console from where the application is launched, change/remove the Configurations/Configuration/Parameters/DemoNotification entry in the xdhqxdh.cfg file from the xdhq repository.

You have also to modify the needed environment variables accordingly to

Behind the Atlas toolkit

The lead developer behind the Atlas toolkit is Claude SIMON, a software engineer living near Strasbourg, in France.

He developed C++ libraries to handle desktop user interfaces using XULRunner. As XULRunner were discontinued, he switched to the newly standardized HTML5, along with the Chromium Embedded Framework. The libraries were then improved to also handle web user interfaces. Finally, Electron replaced the Chromium Embedded Framework.

As most of the popular languages are interpreted ones, he also specialized in improving the performances of this languages, by developing binding libraries simplifying the use of the more efficient C++ native code with this languages.

About the Atlas toolkit



The Atlas toolkit is free software. The libraries are available under the MIT license, and the remote server is available under the GNU Affero General Public License.