Hammer is an SDK used to build exam questions. It uses HTML as its template language. Hammer extends the browser's default behavior with the use of "packages". Depending on the exam being developed different packages will be used. The exam seed project provides everything needed to get started creating an exam quickly.


Minimum Requirements

You should have some knowledge on how to create web pages using HTML and CSS. You should also feel comfortable enough modifying JSON file and running command lines from a console window. It isn't as bad as it sounds ;)

Advanced Requirements

In order to create custom widgets and really take advantage of all the features offered by Hammer, you should feel comfortable with the following libraries and tools:
  • Knowledge of HTML, JavaScript and CSS
  • AngularJS 1 - AngularJS is a library that extends the behavior of HTML. It is the primary library which Hammer extends. If you plan to create any custom widgets, you should understand how to create a directive in Angular.
  • Hummingbird - Hummingbird is toolset of commonly used functionality used to build web applications. You can think of it as a conglomerate of jQuery, underscore and other common functions used by web developers. Hummingbird has the ability to treeshake, meaning it only includes functions used, rather than the entire library. Here is a list of available modules
  • LESS - Less is a CSS pre-processor, meaning that it extends the CSS language, adding features that allow variables, mixins, functions and many other techniques that allow you to make CSS that is more maintainable, themable and extendable. Less runs inside Node, in the browser and inside Rhino.
  • Grunt - Grunt is a tasks manager built on NodeJS. It is used by Hammer to compile and optimize files during the packaging and build process. You really only need to know how to modify the existing configs.

Optional (Nice To Knows)

Knowing the following can only help...

  • Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.


Hammer can work in the environment of your choosing, but these are the recommended IDEs:


Here are some common terms that are used throughout Hammer.
Term Description
Package A package can be thought of an extension or plugin to the SDK. A package is a compilation of templates, scripts and other resources that can be used to extend the environment. A package can contain any of the following items:
  • HTML pages
  • CSS files
  • JSON files
  • Images
  • 3rd Party Libraries
Slide A slide h:slide represents the view. It is where virtuals area defined and widgets are displayed.
Widget A widget is a visual component that is displayed on the screen. Example: button or a text input.
Virtual A virtual h:virtual defines code in an XML format consisting of (properties, strings, scripts, styles, and functions)
Expression The expression tags <%= > are used to define inline scripts that are evaluated at runtime
Event An subscription model used to send and receive instructions in the environment.
Service Objects Service objects are definitions that span across the exam. Strings, model and interceptors are service objects.
Actions Actions are tasks used in function h:function declarations. They perform a single operation. They can be stacked on top of each other to perform complex routines.