# Locomotive
[](https://travis-ci.org/locomotivecms/engine) [](https://codeclimate.com/github/locomotivecms/engine) [](https://gemnasium.com/locomotivecms/engine) [](https://coveralls.io/r/locomotivecms/engine?branch=master) [](https://gitter.im/locomotivecms/engine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

Locomotive is an open source platform to create, publish and edit sites. It is designed to save your time and help you focus on what matters: front-end technology, standard development process and no learning time for your client.
Locomotive relies on a **very original workflow**.
- Sites are coded locally using our open source tool: [Wagon](https://github.com/locomotivecms/wagon). A desktop version (not open source) is also available [here](http://www.wagonapp.com).
- Sites are deployed to the platform (engine) thanks to our internal API.
- A back-office for the end-users is automatically generated based on the custom models and editable regions described by the developers.
Visit the Locomotive official website [here](http://www.locomotivecms.com) for more information.
## Development Status ##
As you can see from the commit logs, we are intensively working on the new V3 version. We kept all the features from our stable [v2 version](https://github.com/locomotivecms/engine/tree/v2.5.x), we just replace the UI, upgrade the gems and refactor our code.
**[UPDATES]** Finally, we've been doing much more than we planned at first. We extracted the rendering functionality from the Engine and make it a gem named [Steam](https://github.com/locomotivecms/steam). This gem is also now used by [Wagon](https://github.com/locomotivecms/wagon) (version 2.0 in progress) which makes sure you get the same result between Wagon and Engine when you preview a page.
And last but not least, we added a Ruby API client for Locomotive that we called [Coal](https://github.com/locomotivecms/coal). That client consumes the API from Engine which embeds now GrapeAPI. [Nic Boie](https://github.com/boie0025) is in charge of it. Kudos to him!
**TRELLO** [here](https://trello.com/b/kRiy1dZu/locomotive-v3)
## Getting Started ##
If you can not wait for playing with our new version, you still can use the current one (v2.5.x). Check out our [installation guide](http://doc.locomotivecms.com/get-started).
## Features ##
- Multi-sites natively supported
- Uses Liquid, a simple and clean templating language
- Easy to add custom content types, no SQL needed
- Beautiful and intuitive editing interface
- Can fully localize all the content and pages
- Embed a Restful API to manage every site
- Develop and preview sites locally with your favorite tools **(Wagon)**
- Support for SASS, LESS, HAML and Coffee Script **(Wagon)**
## Technologies ##
Here is a list of the main gems used to power the Locomotive platform:
- Rails 4.2 - *web framework*
- Bootstrap - *UI framework*
- Mongoid 4.0 - *Object-Document-Mapper for MongoDB*
- Devise 3.4 - *Authentication*
- Carrierwave - *Upload*
- Pundit - *Permissions*
## Community ##
- [Gitter](https://gitter.im/locomotivecms/engine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) for technical discussions.
- Get help or discuss Locomotive at the [Locomotive Google group](https://groups.google.com/forum/?fromgroups#!forum/locomotivecms)
- [Follow us on twitter](http://twitter.com/locomotivecms)
## Translating the back-office ##
By default, the Locomotive back-office is fully translated in English. But adding a new language is pretty straightforward since we now manage all our I18n translation keys in [Transifex](https://www.transifex.com), a platform dedicated to this kind of task.
Here is our Transifex portal page: [https://www.transifex.com/locomotive/locomotive-engine](https://www.transifex.com/locomotive/locomotive-engine). Feel free to sign up and translate!
## Contributing to Locomotive ##
Locomotive is an open source project, we encourage contributions. If you have found a bug and want to contribute a fix, or have a new feature you would like to add, follow the steps below to get your patch into the project:
- Install ruby, mongoDB and phantomjs
- Clone the project git clone git@github.com:locomotivecms/engine.git
- Setup a virtual host entry for test.example.com
to point to localhost
- Start mongodb if it is not already running
- Run the tests bundle exec rake
- Write your failing tests
- Make the tests pass
- [Create a GitHub pull request](http://help.github.com/send-pull-requests)
For new features (especially large ones) it is best to create a topic on the [Google group](https://groups.google.com/forum/?fromgroups#!forum/locomotivecms) first to make sure it fits into the goals of the project.
## Contact ##
Feel free to contact me at did at locomotivecms dot com.
Copyright (c) 2015 NoCoffee, released under the MIT license