Skip to content

starter/boilerplate flask application with celery, mongoengine, signals, shell commands, swagger api docs and sphinx docs integration

Notifications You must be signed in to change notification settings

gofynd/flask-full

Repository files navigation

Flask-Full

Travis

Flask-Full is a boilerplate framework on top of flask for developing large api backend applications using flask. It has in built support for creating shell commands, celery, websocket, eventlet, mongoengine orm, swagger-ui api docs and sphinx docs.

Usage

Flask-Full requires minimum python 3.5.

Pre-required Setup:

  • MacOS/Linux/Windows
  • git
  • Python3 / pip3 /
  • MongoDB
git clone https@github.com:fynd/flask-full.git
cd flask-full (rename repository directory to required value)
pip3 install -r requirements.txt

To start server hit

python3 manage.py run -p 8080

Server will start on port 8080. Hitting http://localhost:8080/ping/ on web browser should return {"message": "pong"}.

API Docs are powered by swagger ui and can be viewed by hitting http://localhost:8080/apidocs/ .

To start celery hit

python3 manage.py celery

To start beat hit

python3 manage.py beat

For available commands and options hit

python manage.py

Structure

├── CHANGES                     Change logs
├── README.rst
├── manage.py                   Management commands file
├── meta.conf                   App meta conf
├── requirements.txt            3rd party libraries libraries
├── requirements_test.txt       Testing 3rd libraries
├── temp                        Temp directory for storing logs
├── app
   ├── __init__.py              App starting point
   ├── app.py                   Main blueprint with before and after request handler
   ├── api_info.py              API level constants
   ├── choices.py               CHOICES constant dictionary
   ├── crons.py                 Crons dictionary file
   ├── exceptions.py            Custom exceptions
   ├── stats.py                 API stats
   ├── wsgi.py                  wsgi app
   ├── wsgi_aux.py              wsgi auxilary app
   ├── utils                    Utils
   │   ├── __init__.py
   │   ├── api_caller.py        Wrapper over requests which handles emits blinker signal over call
   │   ├── common_util.py       common utils
   │   ├── json_util.py         contains custom flask encodes
   │   ├── slack_util.py
   └── api
       └── v1
           └── ├── urls.py url routes
               ├──demo_api  container one demo api

You can also use docker-compose. Hit below command to start server on port 8080.

docker-compose build
docker-compose up