This small box of pandora (aka small app basis) composed from the following technologies:
- Dgraph as data store with GraphQL support, write operations using REST
- Minio as Amazon S3 compatible storage
- Stow allows using cloud storage provides like Amazon, Google, Azure
- ElasticSearch as search engine. Dgraph data can be automatically replicated in ElasticSeach index
- Kibana to explore ElasticSearch data
- NATS as messaging system with streaming of push notifications (events) via SSE channel
- Celery - distributed task queue
- RabbitMQ - fast message broker for celery tasks
- Redis - result backend for celery tasks and cache service
- Apache Tika - powerful content analysis toolkit
- try FluentD - for centralized logging, not implemented yet :)
Programming languages currently used in the project:
I'd like to have simple, flexible, dynamic, declarative, reactive, realtime information system :)
docker-compose up
runs the following services:
zero
- Dgraph cluster managerdgraph
- Dgraph data manager hosts predicates & indexesratel
- serves the UI to run queries, mutations & altering schemanats
- plays as message buspubsub
- event streaming service based on SSE protocolminio
- Amazon S3 compatible file storeimageproxy
- service with image manipulation ops like resizingelasticsearch
- search and analitycs enginekibana
- Elasticsearch dashboardapp
- application API servicecaddy
- web server as service gateway
To start developing a project, you need to install git:
$ sudo apt-get install git
For the add-apt-repository
to work install package:
$ sudo apt install software-properties-common
software-properties-common - This software provides an abstraction of the used apt repositories. This allows you to easily manage your distribution and independent software vendors.
Install Docker following these instructions
Add repository to install Go:
$ sudo add-apt-repository ppa:longsleep/golang-backports
Install Go:
$ sudo apt-get update
$ sudo apt-get install golang-go
Run docker services:
$ docker-compose up
Run the script initdata.py (fill the database) execute commands:
$ apt install python-pip
$ pip install pipenv
$ pipenv install
$ pipenv shell
Then execute the script itself:
$ python initdata.py
go test -coverprofile cover.out
go tool cover -html cover.out