Mustached Robot is an open source checkin plateform for coworking spaces. The project started in [Nantes]((http://goo.gl/maps/BNA73) and is currently under development.
- Florent Gosselin - UX designer (@fgosselin)
- Jérémie Pottier - Developer (@dzey)
New developers or designers are welcome to join the project. Just contact us on twitter (@fgosselin, @dzey) if you want to get involved!
The beta version is a completely functional application on its own but a little nerdy to install
- Coworkers can create an account and checkin in the coworking space
- Coworking space managers can access the coworking space datas on a beautiful dashboards: coworkers currently here, coworkers profiles, coworking space statistics
- A Dashboard view with the coworkers profiles and the next events in the coworking space (this view can be used on a large TV screen in the coworking space)
- An API is available so any allowed developer can play with the coworking space datas
- Mobile ready
The V1 is an easy-to-install, easy-to-extend plateform
- Install wizard (database configuration, google calendar credentials, creation of the first admin user)
- Plugin system to allow anyone to develop plugins without needing to change the core files (example: a billing management system through Freshbook, a connection to a specific CRM, etc).
See the install documentation
You want to get involved? See the Developers documentation
An API mini-doc is also available. Once Mustached Robot is installed and configured on a server, developers can use this API to access the coworking space datas.
You can see the project status or report any bug on the Github issues tracker
If you need help or if you want to talk about mustaches, you can do it on twitter or on this Google Group.
-- Plugins are still under development --
You can develop plugins for Mustached Robot. Ouh yeah. A plugin is an independant module which can interact at several strategic places of the application.
With a plugin you can :
- Add anything you want on a few specific views
- Add form elements and trigger actions according to these elements on the application
To create a new plugin, add a module in the "/fuel/app/modules" folder. According to the classes and their methods, you will be able to customize Mustached Robot.
A plugin called "twitter" is shown in the modules folder.
Here are the current classes you can use:
- Form - It allows you to add form elements on some form of the application.
- Trigger - It allows you to do anything you want after a specific action has been done by the user (example: after a user has checked in, I want my plugin to tweet about it and send me a SMS).
All the language strings must be stored in the "language" folder of the plugin, following FuelPHP convention. We use .yml by convention.
You can configure your plugin by creating a "config" folder in your module and a .php file with the same name as your plugin. This config file will automatically generate a settings form for the administrators of the coworking space.
Example of a file location (for a plugin called twitter) : /modules/twitter/config/twitter.php
.
Here is an example of a config file :
'consumerKey' =>
array(
'value' => '',
'type' => 'text',
'label' => 'settings.consumerKey',
),
'consumerSecret' =>
array(
'value' => '',
'type' => 'text',
'label' => 'settings.consumerSecret',
),
In this example, the keys ('consumerKey' and 'consumerSecret') are the settings name, the label is the label that will be displayed to the administrator of the config form. The 'type' is the type of the value, used to display the field type in the form (see FuelPHP form type) The 'value' will be updated when the administrator submits the form (you can add default values there).
If you want to configure the checkin form, create a "Form" class in your module and add the method addElementOnPublicCheckin()
By default, the new element(s) will be added after the last field. You can override this settings by using the two parameters (the first is the name of the element on the current form, the second is the position -- 'before' or after' -- of your new field relatively to the first parameter.
If you want to do something when a user checks in, create a "Trigger" class in your module, and add the method postCheckin()
This method send one argument $options with a 'fieldset' key containing the fields submitted by the user on the checkin form (if you have previously configured the checkin form, the datas added on the form by your plugin will be also available, see the twitter plugin example for reference).