2020-02-26 10:19:43 +01:00
# Fab-manager
2015-05-05 03:10:25 +02:00
2020-02-26 10:19:43 +01:00
Fab-manager is the Fab Lab management solution. It provides a comprehensive, web-based, open-source tool to simplify your administrative tasks and your marker's projects.
2015-05-05 03:10:25 +02:00
2019-08-30 18:43:05 +02:00
[![Coverage Status ](https://coveralls.io/repos/github/sleede/fab-manager/badge.svg )](https://coveralls.io/github/sleede/fab-manager)
2018-12-18 10:55:28 +01:00
[![Docker pulls ](https://img.shields.io/docker/pulls/sleede/fab-manager.svg )](https://hub.docker.com/r/sleede/fab-manager/)
[![Docker Build Status ](https://img.shields.io/docker/build/sleede/fab-manager.svg )](https://hub.docker.com/r/sleede/fab-manager/builds)
2019-12-16 16:54:40 +01:00
[![Crowdin ](https://badges.crowdin.net/fab-manager/localized.svg )](https://crowdin.com/project/fab-manager)
2015-05-05 03:10:25 +02:00
2017-02-15 15:41:25 +01:00
##### Table of Contents
2016-03-23 18:39:41 +01:00
1. [Software stack ](#software-stack )
2. [Contributing ](#contributing )
2016-09-01 18:06:18 +02:00
3. [Setup a production environment ](#setup-a-production-environment )
2019-12-03 17:15:32 +01:00
4. [Setup a development environment ](#setup-a-development-environment )
5. [Internationalization (i18n) ](#i18n )
6. [Open Projects ](#open-projects )
7. [Plugins ](#plugins )
8. [Single Sign-On ](#sso )
9. [Known issues ](#known-issues )
10. [Related Documentation ](#related-documentation )
2015-05-05 03:10:25 +02:00
2016-03-23 18:39:41 +01:00
< a name = "software-stack" > < / a >
## Software stack
2015-05-05 03:10:25 +02:00
2020-02-26 10:19:43 +01:00
Fab-manager is a Ruby on Rails / AngularJS web application that runs on the following software:
2015-05-05 03:10:25 +02:00
2016-09-01 18:06:18 +02:00
- Ubuntu LTS 14.04+ / Debian 8+
2016-03-31 11:56:58 +02:00
- Ruby 2.3
2016-03-23 18:39:41 +01:00
- Redis 2.8.4+
- Sidekiq 3.3.4+
2018-04-09 16:37:21 +02:00
- Elasticsearch 5.6
2019-10-09 09:52:58 +02:00
- PostgreSQL 9.6
2015-05-05 03:10:25 +02:00
2016-03-23 18:39:41 +01:00
< a name = "contributing" > < / a >
## Contributing
2015-05-05 03:10:25 +02:00
2016-03-23 18:39:41 +01:00
Contributions are welcome. Please read [the contribution guidelines ](CONTRIBUTING.md ) for more information about the contribution process.
2015-05-05 03:10:25 +02:00
2016-04-11 20:24:09 +02:00
< a name = "setup-a-production-environment" > < / a >
2016-09-01 18:06:18 +02:00
## Setup a production environment
2016-04-11 20:24:09 +02:00
2020-03-24 11:23:56 +01:00
To run Fab-manager as a production application, you must follow the procedure described in the [production readme ](doc/production_readme.md ).
This procedure is using [Docker-compose ](https://docs.docker.com/compose/overview/ ) to manage the application and its dependencies.
2016-04-11 20:24:09 +02:00
2016-03-23 18:39:41 +01:00
< a name = "setup-a-development-environment" > < / a >
## Setup a development environment
2015-05-05 03:10:25 +02:00
2020-02-26 10:19:43 +01:00
In you intend to run Fab-manager on your local machine to contribute to the project development, you can set it up by following the [development readme ](doc/development_readme.md ).
2020-03-24 11:23:56 +01:00
This procedure relies on [Docker-compose ](https://docs.docker.com/compose/overview/ ) to set-up the dependencies.
2019-09-03 06:51:00 +02:00
2020-03-24 11:23:56 +01:00
Optionally, you can use a virtual development environment that relies on Vagrant and Virtual Box by following the [virtual machine instructions ](doc/virtual-machine.md ).
2016-03-23 18:39:41 +01:00
< a name = "i18n" > < / a >
## Internationalization (i18n)
2020-02-26 10:19:43 +01:00
The Fab-manager application can only run in a single language but this language can easily be changed.
2016-03-23 18:39:41 +01:00
2019-12-03 17:15:32 +01:00
Please refer to the [translation readme ](doc/translation_readme.md ) for instructions about configuring the language or to contribute to the translation.
2016-03-23 18:39:41 +01:00
2016-05-03 11:27:01 +02:00
< a name = "open-projects" > < / a >
## Open Projects
**This configuration is optional.**
2020-02-26 10:19:43 +01:00
You can configure your Fab-manager to synchronize every project with the [Open Projects platform ](https://github.com/sleede/openlab-projects ).
It's very simple and straightforward and in return, your users will be able to search over projects from all Fab-manager instances from within your platform.
2018-07-04 16:30:19 +02:00
The deal is fair, you share your projects and as reward you benefits from projects of the whole community.
2016-05-03 11:29:14 +02:00
2020-02-26 10:19:43 +01:00
If you want to try it, you can visit [this Fab-manager ](https://fablab.lacasemate.fr/#!/projects ) and see projects from different Fab-managers.
2016-05-03 11:27:01 +02:00
To start using this awesome feature, there are a few steps:
2020-02-26 10:19:43 +01:00
- send a mail to **contact@fab-manager.com** asking for your Open Projects client's credentials and giving them the name of your Fab-manager, they will give you an `OPENLAB_APP_ID` and an `OPENLAB_APP_SECRET`
2019-01-02 13:48:47 +01:00
- fill in the value of the keys in your environment file
2020-02-26 10:19:43 +01:00
- start your Fab-manager app
- export your projects to open-projects (if you already have projects created on your Fab-manager, unless you can skip that part) executing this command: `bundle exec rake fablab:openlab:bulk_export`
2016-05-03 11:27:01 +02:00
2016-06-13 11:34:11 +02:00
**IMPORTANT: please run your server in production mode.**
2016-05-03 11:29:38 +02:00
Go to your projects gallery and enjoy seeing your projects available from everywhere ! That's all.
2016-03-23 18:39:41 +01:00
2016-06-16 18:01:45 +02:00
< a name = "plugins" > < / a >
## Plugins
2016-06-16 18:08:20 +02:00
Fab-manager has a system of plugins mainly inspired by [Discourse ](https://github.com/discourse/discourse ) architecture.
2016-06-16 18:01:45 +02:00
It enables you to write plugins which can:
- have its proper models and database tables
- have its proper assets (js & css)
- override existing behaviours of Fab-manager
- add features by adding views, controllers, ect...
To install a plugin, you just have to copy the plugin folder which contains its code into the folder `plugins` of Fab-manager.
2019-03-26 14:04:45 +01:00
You can see an example on the [repo of navinum gamification plugin ](https://github.com/sleede/navinum-gamification )
2016-06-16 18:01:45 +02:00
2016-09-12 17:29:44 +02:00
< a name = "sso" > < / a >
## Single Sign-On
Fab-manager can be connected to a [Single Sign-On ](https://en.wikipedia.org/wiki/Single_sign-on ) server which will provide its own authentication for the platform's users.
Currently OAuth 2 is the only supported protocol for SSO authentication.
For an example of how to use configure a SSO in Fab-manager, please read [sso_with_github.md ](doc/sso_with_github.md ).
2016-10-07 11:11:58 +02:00
Developers may find information on how to implement their own authentication protocol in [sso_authentication.md ](doc/sso_authentication.md ).
2016-09-12 17:29:44 +02:00
2016-03-23 18:39:41 +01:00
< a name = "known-issues" > < / a >
## Known issues
2019-12-03 17:32:27 +01:00
Before reporting an issue, please check if your issue is not listed in the [know issues ](doc/known-issues.md ) with its solution.
2016-06-13 08:30:43 +02:00
2016-03-23 18:39:41 +01:00
< a name = "related-documentation" > < / a >
## Related Documentation
2016-01-18 15:40:30 +01:00
2016-04-11 20:24:09 +02:00
- [Ruby 2.3.0 ](http://ruby-doc.org/core-2.3.0/ )
2016-03-23 18:39:41 +01:00
- [Ruby on Rails ](http://api.rubyonrails.org )
- [AngularJS ](https://docs.angularjs.org/api )
- [Angular-Bootstrap ](http://angular-ui.github.io/bootstrap/ )
2018-04-09 16:37:21 +02:00
- [ElasticSearch 5.6 ](https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html )