beap

Welcome to beap

the Browser Enabled Application Platform

Project Status

    {
        "BeapStatus"  : 102,
        "StatusDescr" : "closed beta",
        "Result"      : "vers 1.3.4 - 13.03.2013",
        "Contact"     : "mail@beap-code.de"
    }

What's inside?

A complete beap installation consists of three main parts:
  • the beap backEnd server
  • the webserver (Hiawatha as default)
  • the beap frontEnd framework
and a few additions:
  • the beap browser
  • a svn client
  • a PDF and image converter
Not part of the standard installation is BeapDB, a javascript/node.js-based application database.

Getting started

After installing beap you will find a link to the 'beap browser' on your desktop, which will automatically connect to the local server. Alternatively you can enter the following URL in your browser: http://localhost:9999/ The opening [ Main Page ] is this README file in html. On top of the page you will find the links to the standard application and the beap test page. The standard application of the beap beta installation is its documentation. After starting the 'beap browser', the standard application defined in the index.html file is loaded; in this case the documentation alongside with the template app. For further details on this pages, see the [ Documentation ] section below.

What is it?

The basic idea behind beap is to create a platform for desktop applications using the flexibility of HTML and CSS for the user interface in combination with the strength and speed of compiled libraries and native system ressources. Particular attention is paid to allow consistent, OS-independant system access while ensuring security.
The beap backEnd server comes with a set of options to restrict and manage secure access to the underlying OS, as well as providing a mechanism to integrate the communication between "number crunching", compiled libraries to the web frontend. The beap server is designed for a minimum footprint on system resources. Thus it may operate as single user application backend on a workstation or notebook with low impact to system performance. The same objective, as well as its high security standards led to the choice of Hiawatha as the sandard webserver. Using the beap backEnd server on a dedicated machine as "blackbox" application server for multiple users in an intranet environement is onother option. In this case we recommend using a different setup requiring additional configurations and installations: Apache httpd webserver, user-based permissions, additional network security measures. Such setup was tested but would exceed the boundaries of this beta release.
The beap frontEnd framework provides a full set of libraries for building HTML/javascript-based user interfaces with extended functionalities taking advantage from the event-based, asynchrounous execution possibilities of a web-based frontend. It has no dependencies on any other javascript library. The main goal of beap is to create business-grade desktop applications. Therefore a standard set of scriptable common UI-elements and controls (views, menues, context-menues, message- and progress-boxes, login, file viewer ...) is integrated in the framework. To display or submit deeply nested structured data, input masks and forms can be generated at runtime from structure definitions. Usage of the frontEnd framework is not mandatory. You may choose to implement the user interface in basic HTML/CSS/JS, you may also use your favourite javascript library. Anyway we do not recommend using the beap frontEnd framework alongside with another javascript library like jQuery.
The beap browser is a QT/Webkit based viewer. This browser is as minimalistic as it can be - for security considerations. It has no address bar, no menues etc., so it is quite unlikely that it can be 'abused' by end users. It is also important to note that the beap-browser has no vendor-specific keyboard shortcuts or non-cancelable context menues. Especially in an business environment the beap browser will be the best choice to implement a full-fledged Desktp application with a common look and feel upon starting its main window. Also, you may of course use any other browser to connect to the beap application. Whilst any standards compliant brower should work, the following have been qualified of being compatible with the beap frontEnd framework:
  • WebKit based browsers [ Chrome, Safari ]
  • Gecko based browsers [ Firefox ]
  • Presto base browsers [ Opera - still some glitches ]
  • any IE with Chrome Frame AddOn [ no pure IE, sorry ]
Using the beap frontEnd framework with mobile devices is functional but highly depends on the processing capabilities of the device, its browser and the requirements of the beap application. Additional Note for Internet Explorer: As Microsofts JScript engine is way behind the javascript enginges of other browser vendors, and the beap frontEnd framework highliy depends on this enhanced features, it will not run in pure IE. Installing the Chrome Frame AddOn requires no elevated privileges for the users, it meets the javscript requirements and produces better rendering results for the beap UI elements. Anyway, using plain HTML/CSS/JS with a javascript library supporting IE is fine.
The standard beap installation comes with two additonal utilities:
  • the svn CLI-client is used for remotely updating the "soft" parts of the software (mainly wwwroot).
    If you are interested in this option and need more details, please feel free to contact us.
  • the PDF & IMG clients wkhtmltopdf and wkhtmltoimage provide an opportunity for PDF and image export.
    For more details, see the print folder in {beap}\UserData or contact us.

What is it not?

beap's intention is not to re-invent yet another all-purpose, "we-can-handle-it-all" beast of server software. each beap installation and configuration should respect its production environment and dedicated set of applications. Also, the beap frontEnd framework does not try to be "better" than any of the well-known and proven javasript libraries. Its main design goal is to build and maintain reliable desktop applications, where complex data structues and deeply nested input and form dependencies are key. If your application needs a shiny web-look and your data handling is reasonable, there is nothing wrong in loading only the basic beap modules for server communication, using your favourite javascript library and following the best practices of web design.

Installation

At the point of this beta-release, only a Windows installer package is available. Versions for Mac OS X and Unix/Linux are functional/under active development but no installation packages so far. We apologize for this inconvenience and ask for your patience. The installation package will install all required components to get You started. You may want to read the evaluation license file before installing beap beta. A online version of the license can be found [ here ] alongside with a text version of this [ README ] file. Executing the package requires administration privileges. Important: The current version of beap is not compatible with File System Virtualization as used by versions of Windows since Windows XP. To prevent compatibility issues, the default installation path {beap} is currently set to C:\beap. You may choose to select another path or disk, except the windows programs folder. We apologize for this inconvenience. Upon uninstallation, it will be necessary to manually remove this folder. This is because whilst the setup program runs with elevated privileges the uninstaller does not. Elevated privileges are required because the installer adds the following registry entries:
[HKLM\Software\Beap] [...]
this is where beap stores its settings. for more details, see below
[HKLM\Software\Microsoft\Windows\CurrentVersion\Run]
to ensure beap starts with Windows

What is what, where is what?

File System

Under the installation folder {beap} you will find all relevant files and folders. For a full list, see the text version of this file, located at {beap}/README.txt.

Windows Registry

[HKEY_LOCAL_MACHINE\SOFTWARE\Beap]
reg key
example values description
BeapBasePath
C:\beap Base Installation path
BeapBackendServer
C:\beap\bin\beapsrv.exe Path to the backend server module itself
BeapWebServer
C:\beap\hiawatha\bin\hiawatha.exe Web Server to use (if any)
WebServerConfig
C:\beap\hiawatha\config\hiawatha.conf Configuration file (hiawatha only)
wwwroot
C:\beap\wwwroot Web Server Root
BeapUserDataPath
C:\beap\UserData Path were any User Data is to be stored
BeapDBServer
http://localhost:9980/ How to contact the DB Server (if any)
[HKEY_LOCAL_MACHINE\SOFTWARE\Beap\Permissions]
The permission entries should be self-explanatory.
Multiple entries to be separated by semicolon, entries are case-sensitive
AllowRead
C:\beap\UserData
AllowWrite
C:\beap\UserData
AllowShellOps
C:\beap\UserData
AllowCmd
ping.exe;C:\beap\UserData\utilities\HTMLtoPDF.bat;C:\beap\userData\utilities\TXTtoPDF.bat
AllowDownload
http://www.beap-code.de;http://www.example.com
DenyDownload
http://www.example.com/misc/
AllowedIPs
127.0.0.1
[HKEY_LOCAL_MACHINE\SOFTWARE\Beap\{Module}] for each beap module. Please note that the Registry path for Windows 64 installations is under: [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Beap].

Documentation

The live documentation consists of three main parts:
  • the frontEnd documentation
  • the backEnd documentation
  • the HelloWorld primer
The frontEnd documentation can be loaded via the [FrontEnd Doc] link on the main page. It is a full beap app using most of its own functionality. Use the [Beap Doc] main menu at the top left to browse it:
  • Use [load beap Doc] to see the full framework's javascript namespace
    containing most of its available properties and methods.
    Although this minmal documentation lacks any futher details at the moment,
    it should give you an overview and a quick reference to its functionality.
  • [load TaskBar] reveals the full structure of the currently loaded window content.
  • [load App Doc] shows the structure of the doc application for inspection.
  • [load App Doc] shows the structure of the template application for inspection.
    This template app represents the minimum requirements/structure of an beap application
    containing one mainView and one mainMenu
  • Please note, that all contents from the above menu options are generated live in the browser
    reflecting the actual state of the application at runtime by by inspecting itself and building
    a structured representation of itself.
    However, this "inspector" documentation mode is not updating in realtime, you need to reload it
    to notice any changes in its state.
  • [Beap Controls] shows a quick reference for all available frontEnd controls and their usage.
    This "cheat sheet" is in german only at this point, but will likely change in the near future.
To see the template app in action, use the taskBar menu at the top right and switch between loaded apps in [Running apps]. In the taskBar menu you can also find options for the logging window and a basic File viewer. Please note the @/ - path representing a dedicated shortcut to the predefined {beap}\UserData folder.
The backEnd documentation can be reached by using the link [BackEnd Test]. It contains the "standard test cases" to check the features of the beap backEnd server:
Ping
a basic test to see if the backend server is up and running.
This will basically yield a server identifier as JSON response, e.g.:
{	
	"beapStatus"  : 200, 
	"StatusDescr" : "OK", 
	"ServerInfo"  : "beap Backend Server/1.0/1.0 (Microsoft \
		Windows 7 Professional Service Pack 1 (build 7601), 64-bit) \
		1094A90281F1C1FFE11903D6F0934EDE thrift-0.8.0 libcURL-7.21.7"
}
File Operations
General file related operations
File I/O
File Input/Output
Shell Operations
Make beap your "Explorer".
Run Command
Start/execute processes and receive their output
Notify
Display notifications as "Message Balloons" in the task tray (windows only atm)
SVN
Update your wwwroot folder via SVN (windows only atm, installation of the add-on required)
Each of this features comes with its parameters, some optional. You may also note some menu items/parameters that seem erroneous. These items are for testing purposes to check how invalid input is processed. The [BackEnd Test]-page consists of a set of <form>'s, a single <div> for the results, styles and javascript are inline. Although this seems to disregard any www best practices, it is by purpose. Mainly to demonstrate in compact form the minimum requirements for a successfull communication with the beap backEnd server. You may develop a beap based application without using the fronEnd framework, only using basic HTML, CSS, javascript. In this case this test-page gives a minimum set of code snippets to do so.
The Hello World primer will introduce you to the basic of communicating with the beap backEnd server. You can find it under: /starter/index.html.

Final remarks

At this state of development, many features and caveats are not fully documented and still under active development. The backEnd server is single threaded at the moment. Although accepting further requests, the server executes them one after another; this will change soon. In case you are proficient in javascript and take the effort to browse through the beap frontEnd framework, please be lenient with us above the numerous /* ToDo */ and /* provisional */ comments, still a lot of way to go ;-) If you need further, more detailed information or find any bugs please feel free to contact us. Any suggestions for improvement are highly appreciated.

Links

Copyright & Contact

copyright: 2012, the beap team
  • Siggi Gross
  • Jürgen Kraus
contact: mail@beap-code.de