Giter Site home page Giter Site logo

cloudengine's Introduction

CloudEngine

Open source backend stack for mobile.

Overview

CloudEngine is an open source backend stack for building awesome mobile apps. The aim of the project is to help mobile app developers get their apps off the ground as quickly as possible. For this, CloudEngine needs to provide all the basic services required for building rich mobile apps out-of-the-box. Currently there are bare minimum services included. The aim is also to create fully customizable and extensible framework for building backend mobile services. The core services could be tightly coupled.

Requirements

CloudEngine runs only on gunicorn server and hence currently runs only on UNIX environments. For development purposes, you can use django's builtin webserver and run the stack on Windows as well.

  • Python (2.7.5+)
  • Django (1.5.4+)
  • MongoDB (2.4.6+)
  • MySQL (5.5+)

All the python library dependencies are listed in requirements.txt

Installation

Clone the project. Create a virtualenv namespace and activate it.

virtualenv cloudengine-site
cd cloudengine-site
source bin/activate

Install all the required dependencies

pip install -r requirements.txt

Configure database and other necessary settings in cloudengine.settings.py. Create database tables.

manage.py syncdb

Run the gunicorn server with gevent-socketio worker class. Add the project directory to python path

gunicorn -w 1 --pythonpath .  \
--worker-class socketio.sgunicorn.GeventSocketIOWorker  \
cloudengine.wsgi:application

On development environments run the django server,

manage.py runserver

Please note the development server doesn't support SocketIO hence you can't test push notifications locally.

Technical Overview

CloudEngine is a pure Python django stack. Each backend service is plugged in as django app. Each service should be independently pluggable and usable except the core services. Currently some of the services are tightly coupled. CloudEngine currently runs on gunicorn server and hence runs only on UNIX environments. CloudEngine uses the excellent gevent-socketio library for implementing real time communication channels, which are the basis of current push notifications system. gevent-socketio is the python port of the popular socket.io library. For storage we use a combination of relational database (MySQL, PostgreSQL) and a NoSQL db (Currently mongodb). Ideally, we'd like to move completely to a NoSQL db. But we want to leverage a lot of django goodies and there is no elegant way to retain that while migrating to NoSQL. CloudEngine uses django-rest-framework for providing REST interfaces to services.

Client libraries

The aim of the project is also to provide readily available client libraries for as many different platforms as possible to make it easier to consume CloudEngine services on mobile devices. Currently only Android SDK is available at - https://github.com/cloudengine/Android-SDK We plan to add SDKs for more platforms

Documentation & Support

Complete documentation is available at - ?

For discussions, questions and support use the CloudEngine discussion group

or Github issue tracking

You may also want to [follow the authors on twitter] twitter.

License

See the LICENSE file for more info.

cloudengine's People

Contributors

swapnilt avatar cloudengine avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.