Mainflux.mainflux/README.md

5.0 KiB

Mainflux

License Join the chat at https://gitter.im/Mainflux/mainflux

NOTE

Mainflux is currently under heavy refactoring, moving to go-kit framework and Cassandra database for v1.0.0 release. Release ETA: end of September

Docker composition will be unusable during this period - use direct install

About

Mainflux is modern massively-scalable and highly-secured open source and patent-free IoT cloud platform written in Go, based on a set of microservices.

It allows device, user and application connections over various network protocols, like HTTP, MQTT, WebSocket and CoAP, making a seamless bridge between them. It is used as the IoT middleware for building complex IoT solutions.

gophersBanner

Mainflux is built with <3 by Mainflux company and community contributors.

Architecture

Mainflux IoT cloud is composed of several components, i.e. microservices:

Link Description
http-adapter HTTP message API server
manager Service for managing platform resources, including auth
message-writer Worker behind NATS that writes messages into Cassandra DB
mqtt-adapter MQTT PUB/SUB Broker (with WebSocket support)
mainflux-coap CoAP Server
mainflux-ui System Dashboard in Angular 2 Material
mainflux-cli Interactive command-line interface
Cassandra System Database
NATS System event bus
NGINX Reverse Proxy with Auth forwarding

arch

Docker composition that constitues Mainflux IoT infrastructure is defined in the docker-compose.yml.

Install/Deploy

  • Clone the repo:
git clone https://github.com/Mainflux/mainflux.git && cd mainflux
  • Start the Docker composition:
docker-compose up

This will automatically download Docker images from Mainflux Docker Hub and deploy the composition of Mianflux microservices.

Features

An extensive (and incomplete) list of features includes:

  • Responsive and scalable architecture based on a set of microservices
  • Set of clean APIs: HTTP RESTful, MQTT, WebSocket and CoAP
  • SDK - set of client libraries for many HW platforms in several programming languages: C/C++, JavaScript, Go and Python
  • Device management and provisioning and OTA FW updates
  • Highly secured connections via TLS and DTLS
  • Enhanced and fine-grained security with Access Control Lists
  • Easy deployment and high system scalability via Docker images
  • Clear project roadmap, extensive development ecosystem and highly skilled developer community
  • And many more

Roadmap

  • Use go-kit microservice framework
  • Switch to Cassandra
  • Use Docker multi-stage builds
  • Enable service discovery (Consul or etcd)
  • Finish Dashflux (Mainflux UI) MVP
  • Release v1.0.0 (ETA: end of September)
  • Deploy public cloud
  • E2E tests and benchmarks
  • Ansible and Terraform deployment scripts
  • Kubernetes deployment procedure

Project task management is done via GitHub issues opened for this repo and properly labeled.

Documentation

Mainflux documentation can be found here.

Community

Mailing list

mainflux Google group

For quick questions and suggestions you can also use GitHub Issues.

IRC

Mainflux Gitter

Twitter

@mainflux

Authors

Main architect and BDFL of Mainflux project is @drasko. Additionaly, initial version of Mainflux was architectured and crafted by @janko-isidorovic, @nmarcetic and @mijicd.

Maintainers are listed in MAINTAINERS file.

Contributors are listed in CONTRIBUTORS file.

License

Apache License, version 2.0