1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00
2017-09-11 10:15:22 +02:00
2017-02-01 22:56:06 +01:00
2017-03-28 01:16:33 +02:00
2016-12-04 19:36:28 +01:00
2017-06-05 21:55:07 +02:00
2017-09-02 22:22:00 +02:00
2015-10-09 23:35:23 +02:00
2016-10-29 20:15:38 +02:00
2017-09-11 10:15:22 +02:00

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 through GitHub issues of this repo, and presented on project's scrum board on Waffle: https://waffle.io/mainflux/mainflux

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

Languages
Go 98.6%
Shell 0.7%
Makefile 0.4%
JavaScript 0.2%