2016-04-28 22:07:16 +02:00
# Mainflux
2015-10-02 14:15:46 +00:00
2017-09-23 02:27:49 +02:00
[![build][ci-badge]][ci-url]
[![go report card][grc-badge]][grc-url]
2018-04-08 22:57:56 +02:00
[![coverage][cov-badge]][cov-url]
2017-09-23 02:27:49 +02:00
[![license][license]](LICENSE)
[![chat][gitter-badge]][gitter]
2015-07-06 23:43:19 +02:00
2017-09-23 02:27:49 +02:00
![banner][banner]
2015-07-06 23:43:19 +02:00
2019-10-29 03:22:41 -06:00
Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go.
2015-10-02 16:18:35 +02:00
2019-04-20 14:09:11 +02:00
It accepts user and thing connections over various network protocols (i.e. HTTP,
2017-09-23 13:43:23 +02:00
MQTT, WebSocket, CoAP), thus making a seamless bridge between them. It is used as the IoT middleware
for building complex IoT solutions.
2016-11-12 19:49:23 +01:00
2017-09-23 02:27:49 +02:00
For more details, check out the [official documentation][docs].
2015-10-02 16:18:35 +02:00
2018-12-09 20:06:20 +01:00
Mainflux is member of the [Linux Foundation][lf] and an active contributor
2019-10-29 03:22:41 -06:00
to the [EdgeX Foundry][edgex] project. It has been made with :heart: by [Mainflux Labs][company],
2018-12-09 20:06:20 +01:00
which maintains the project and offers professional services around it.
2016-11-24 02:19:06 +01:00
2018-12-09 20:06:20 +01:00
## Features
2019-10-29 03:22:41 -06:00
2019-07-25 19:20:11 +02:00
- Multi-protocol connectivity and bridging (HTTP, MQTT, WebSocket and CoAP)
- Device management and provisioning (Zero Touch provisioning)
- Mutual TLS Authentication (mTLS) using X.509 Certificates
2017-09-23 13:43:23 +02:00
- Fine-grained access control
2019-07-25 19:20:11 +02:00
- Message persistence (Cassandra, InfluxDB, MongoDB and PostgresSQL)
- Platform logging and instrumentation support (Grafana, Prometheus and OpenTracing)
2018-12-09 20:06:20 +01:00
- Event sourcing
- Container-based deployment using [Docker][docker] and [Kubernetes][kubernetes]
- [LoRaWAN][lora] network integration
- SDK
- CLI
- Small memory footprint and fast execution
- Domain-driven design architecture, high-quality code and test coverage
2019-10-29 03:22:41 -06:00
## Prerequisites
The following are needed to run Mainflux:
- [Docker ](https://docs.docker.com/install/ ) (version 18.09)
- [Docker compose ](https://docs.docker.com/compose/install/ ) (version 1.24.1)
2017-09-18 21:38:06 +02:00
2019-10-29 03:22:41 -06:00
Developing Mainflux will also require:
- [Go ](https://golang.org/doc/install ) (version 1.13.3)
- [Protobuf ](https://github.com/protocolbuffers/protobuf#protocol-compiler-installation ) (version 3.6.1)
## Install
2017-09-25 12:00:28 +02:00
2019-10-29 03:22:41 -06:00
Once the prerequisites are installed, execute the following commands from the project's root:
2016-04-28 22:07:16 +02:00
2018-03-11 18:06:01 +01:00
```bash
2020-03-05 13:34:07 +01:00
docker-compose -f docker/docker-compose.yml up
2017-09-25 12:00:28 +02:00
```
2017-09-18 21:38:06 +02:00
2019-10-29 03:22:41 -06:00
This will bring up the Mainflux docker services and interconnect them. This command can also be executed using the project's included Makefile:
2018-12-09 20:06:20 +01:00
2019-10-29 03:22:41 -06:00
```bash
make run
2018-12-09 20:06:20 +01:00
```
2019-10-29 03:22:41 -06:00
## Usage
The quickest way to start using Mainflux is via the CLI. The latest version can be downloaded from the [official releases page][rel].
It can also be built and used from the project's root directory:
```bash
2018-12-09 20:06:20 +01:00
make cli
./build/mainflux-cli version
```
2019-10-29 03:22:41 -06:00
Additional details on using the CLI can be found in the [CLI documentation ](https://mainflux.readthedocs.io/en/latest/cli/ ).
2018-12-09 20:06:20 +01:00
## Documentation
2020-01-17 14:44:13 +01:00
Official documentation is hosted at [Mainflux Read The Docs page][docs]. Documentation is auto-generated, checkout the instructions on [official docs repository ](https://github.com/mainflux/docs ):
2019-10-29 03:22:41 -06:00
If you spot an error or a need for corrections, please let us know - or even better: send us a PR.
2017-09-23 13:43:23 +02:00
2018-12-09 20:06:20 +01:00
Additional practical information, news and tutorials can be found on the [Mainflux blog][blog].
## Authors
2019-10-29 03:22:41 -06:00
2018-12-09 20:06:20 +01:00
Main architect and BDFL of Mainflux project is [@drasko ][drasko].
Additionally, [@nmarcetic ][nikola] and [@janko -isidorovic][janko] assured
2019-02-02 22:21:33 +01:00
overall architecture and design, while [@manuio ][manu] and [@darkodraskovic ][darko]
2019-10-17 22:15:45 +02:00
helped with crafting initial implementation and continuously worked on the project evolutions.
2018-12-09 20:06:20 +01:00
Besides them, Mainflux is constantly improved and actively
developed by [@anovakovic01 ][alex], [@dusanb94 ][dusan], [@srados ][sava],
2019-07-25 19:20:11 +02:00
[@gsaleh ][george], [@blokovi ][iva], [@chombium ][kole], [@mteodor ][mirko] and a large set of contributors.
2018-12-09 20:06:20 +01:00
Maintainers are listed in [MAINTAINERS ](MAINTAINERS ) file.
2019-10-29 03:22:41 -06:00
The Mainflux team would like to give special thanks to [@mijicd ][dejan] for his monumental work
on designing and implementing a highly improved and optimized version of the platform,
and [@malidukica ][dusanm] for his effort on implementing the initial user interface.
2019-02-02 22:21:33 +01:00
2018-12-09 20:06:20 +01:00
## Contributing
2017-09-23 13:43:23 +02:00
2019-10-29 03:22:41 -06:00
Thank you for your interest in Mainflux and the desire to contribute!
1. Take a look at our [open issues ](https://github.com/mainflux/mainflux/issues ). The [good-first-issue ](https://github.com/mainflux/mainflux/labels/good-first-issue ) label is specifically for issues that are great for getting started.
2018-12-09 20:06:20 +01:00
2. Checkout the [contribution guide ](CONTRIBUTING.md ) to learn more about our style and conventions.
2017-09-23 13:43:23 +02:00
3. Make your changes compatible to our workflow.
2018-12-09 20:06:20 +01:00
### We're Hiring
2019-10-29 03:22:41 -06:00
2018-12-09 20:06:20 +01:00
If you are interested in working professionally on Mainflux,
please head to company's [careers page][careers] or shoot us an e-mail at < careers @mainflux .com > .
2019-10-29 03:22:41 -06:00
>The best way to grab our attention is by sending PRs :sunglasses:.
2017-09-23 02:27:49 +02:00
2018-12-09 20:06:20 +01:00
## Community
2019-10-29 03:22:41 -06:00
2017-09-23 02:27:49 +02:00
- [Google group][forum]
- [Gitter][gitter]
- [Twitter][twitter]
2018-12-09 20:06:20 +01:00
## License
2019-10-29 03:22:41 -06:00
2018-12-09 20:06:20 +01:00
[Apache-2.0 ](LICENSE )
2019-12-04 13:31:23 +01:00
[banner]: https://github.com/mainflux/docs/blob/master/docs/img/gopherBanner.jpg
2017-09-23 17:41:08 +02:00
[ci-badge]: https://semaphoreci.com/api/v1/mainflux/mainflux/branches/master/badge.svg
[ci-url]: https://semaphoreci.com/mainflux/mainflux
2017-09-23 02:27:49 +02:00
[docs]: http://mainflux.readthedocs.io
[docker]: https://www.docker.com
[forum]: https://groups.google.com/forum/#!forum/mainflux
[gitter]: https://gitter.im/mainflux/mainflux?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge& utm_content=badge
[gitter-badge]: https://badges.gitter.im/Join%20Chat.svg
[grc-badge]: https://goreportcard.com/badge/github.com/mainflux/mainflux
[grc-url]: https://goreportcard.com/report/github.com/mainflux/mainflux
2018-04-08 22:57:56 +02:00
[cov-badge]: https://codecov.io/gh/mainflux/mainflux/branch/master/graph/badge.svg
[cov-url]: https://codecov.io/gh/mainflux/mainflux
2017-09-23 02:27:49 +02:00
[license]: https://img.shields.io/badge/license-Apache%20v2.0-blue.svg
[twitter]: https://twitter.com/mainflux
2018-12-09 20:06:20 +01:00
[lora]: https://lora-alliance.org/
[kubernetes]: https://kubernetes.io/
[rel]: https://github.com/mainflux/mainflux/releases
[careers]: https://www.mainflux.com/careers.html
[lf]: https://www.linuxfoundation.org/
[edgex]: https://www.edgexfoundry.org/
[company]: https://www.mainflux.com/
[blog]: https://medium.com/mainflux-iot-platform
[drasko]: https://github.com/drasko
[nikola]: https://github.com/nmarcetic
[dejan]: https://github.com/mijicd
[manu]: https://github.com/manuIO
[darko]: https://github.com/darkodraskovic
[janko]: https://github.com/janko-isidorovic
[alex]: https://github.com/anovakovic01
[dusan]: https://github.com/dusanb94
[sava]: https://github.com/srados
[george]: https://github.com/gesaleh
[iva]: https://github.com/blokovi
[kole]: https://github.com/chombium
2019-02-03 09:12:40 +01:00
[dusanm]: https://github.com/malidukica
2019-07-25 19:20:11 +02:00
[mirko]: https://github.com/mteodor