You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Matt 193cfa49d3
10 months ago
app Update impress 4 years ago
doc/design_overview Bundle/Component overview 9 years ago
test Code cleanup. ServiceCollection. 10 years ago
ui-tests selenium updates 10 years ago
.gitignore Revert "Update/editorpanel" 7 years ago
.tern-project Added tern project configuration 9 years ago
Gruntfile.js Remove deprecated grunt-contrib-livereload 4 years ago
LICENSE.txt fixed the project name in the license. 10 years ago Update 2 years ago Removed the commit phase from deploy-pages 9 years ago
package-lock.json update package lock 2 years ago
package.json use the right version of usemin 4 years ago Update 10 months ago
svg-notes-2.txt svg notes 9 years ago
todo.txt Fixed options passed to getBackground 9 years ago

All new development is happening in Strut2

Strut2 is currently private until we further solidify our "open source dividened program."

Open Source Divdened is the idea that contributors to an open source project will earn revenue based on the overall usage of their contribution, relative to other contributors, in paid products.

In Strut's case specifically, we're launching a subscription service based on Strut and would like to pay our open source contributors.

Obviously there is a lot to figure out here, such as how "valuable" a contribution is and how does the "value" get dispersed as other developers make bugfixes and alterations to the original contribution. Given that, Strut2 is private until we figure out these details. Contact me if you'd like to know more.



A GUI / Authoring Tool for ImpressJS and Bespoke.js

Don't know what ImpressJS is? Check out the ImpressJS demo presentation:

Start using Strut!

(works in Firefox, Chrome and Safari with basic support for IE10)

Learn a bit about Strut

Twitter: @StrutPresents

Mailing List


To build your own version of Strut you'll need Grunt v0.4.0 or later.

  1. Install the latest Grunt: npm install -g grunt-cli
  2. Clone Strut: git clone git://
  3. cd Strut
  4. Install Strut's development dependencies: npm install
  5. Run Strut: grunt server (the server runs at localhost:9000)

To make a production build of Strut run grunt build. The resulting build will be located in Strut/dist.


v0.5.3 - Positioning and transformations of components in edit mode now exactly match the positioning and transformations of components in the final presentation.


Strut is composed of several bundles which provide distinct features to Strut. The set of bundles that compose Strut are defined in

This design allows features to be added and removed from Strut just by adding or removing bundles from the list in features.js. E.g., if you wanted a build of Strut without RemoteStorage you can just remove the RemoteStorage bundle from features.js. If you didn't want any slide components for some reason then you can remove strut/slide_components/main from features.js.

Bundles contribute functionality to Strut by registering that functionality with the ServiceRegistry. You can take a look at the RemoteStorage bundle for an example:

If a service is missing Strut continues to run without the functionality provided by that service.

New development that isn't essential to the core of Strut should follow this pattern in order to keep the code modular and allow the removal of features that don't pan out or can only exist in specific environments. For example, RemoteStorage can't be loaded if Strut is being served from a file:// url.

The ServiceRegistry also allows for runtime modularity. I.e., services can be added and removed at runtime and Strut will update to reflect the current set of features & services that are isntalled. Try to keep in mind the fact that services won't necessarily be present or if they are present they might go away. This approach allows the user to add and remove plugins from 3rd parties at runtime.