Skip to content

Small box of pandora to prototype your app with ready for use backend

License

Notifications You must be signed in to change notification settings

stepan-anokhin/pandora

 
 

Repository files navigation

PANDORA

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:

Basic Idea

I'd like to have simple, flexible, dynamic, declarative, reactive, realtime information system :)

How to run

docker-compose up runs the following services:

  1. zero - Dgraph cluster manager
  2. dgraph - Dgraph data manager hosts predicates & indexes
  3. ratel - serves the UI to run queries, mutations & altering schema
  4. nats - plays as message bus
  5. pubsub - event streaming service based on SSE protocol
  6. minio - Amazon S3 compatible file store
  7. imageproxy - service with image manipulation ops like resizing
  8. elasticsearch - search and analitycs engine
  9. kibana - Elasticsearch dashboard
  10. app - application API service
  11. caddy - web server as service gateway

How to build

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

How to run tests

  • go test -coverprofile cover.out
  • go tool cover -html cover.out

About

Small box of pandora to prototype your app with ready for use backend

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 35.2%
  • Python 29.5%
  • JavaScript 24.8%
  • Kotlin 4.5%
  • Shell 3.5%
  • Dockerfile 2.4%
  • HTML 0.1%