Metadata-Version: 2.1
Name: django-mds
Version: 0.7.4
Summary: MDS Agency implementation
Home-page: http://github.com/Polyconseil/django-mds
Author: Polyconseil
Author-email: opensource+django-mds@polyconseil.fr
License: MIT
Keywords: Mobility City MDS MaaS Django
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Other Audience
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Environment :: Web Environment
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Other/Nonlisted Topic
Classifier: Framework :: Django
Description-Content-Type: text/markdown
Requires-Dist: coreapi
Requires-Dist: cryptography
Requires-Dist: django (<3.0)
Requires-Dist: django-filter
Requires-Dist: django-cors-headers
Requires-Dist: django-oauth-toolkit
Requires-Dist: djangorestframework (==3.9.3)
Requires-Dist: drf-yasg (==1.16.0)
Requires-Dist: getconf
Requires-Dist: psycopg2
Requires-Dist: pyjwt
Requires-Dist: pyyaml
Requires-Dist: requests-oauthlib
Requires-Dist: retrying
Requires-Dist: semantic-version
Provides-Extra: dev
Requires-Dist: black ; extra == 'dev'
Requires-Dist: factory-boy ; extra == 'dev'
Requires-Dist: flake8 ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: pytest-django ; extra == 'dev'
Requires-Dist: requests-mock ; extra == 'dev'
Requires-Dist: zest.releaser[recommended] ; extra == 'dev'
Requires-Dist: polydev.github ; extra == 'dev'

# Contact informations

You are a city, a mobility provider or you simply want to know more about our MDS tools: send us a mail at contact@bluesystems.fr

# django-mds - MDS compliant mobility data service

[![Build Status](https://travis-ci.org/Polyconseil/django-mds.svg?branch=master)](https://travis-ci.org/Polyconseil/django-mds)

A [City of LA MDS Specification](https://github.com/CityOfLosAngeles/mobility-data-specification) (Mobility Data Specification) compliant implementation of the Agency API for Python/Django

## Goals & non-goals

### Goals

* Ultimately MDS compliance
* A way to test MDS ideas on a real implementation as we believe
  it is hard to specify a quality API without a reference implementation alongside
* Developer-friendly to be able for all stakeholders to contribute

### Non-goals

* High-performance: we favor developer-friendliness over performance (this software being stateless, scaling is trivial anyway. Just the database needs to be correctly dimensioned)
* Full-featured UI: we provide an UI with required features, but this remains an API-first software
* Data-analysis: analysis should be done by other apps consuming the consumer API of this app (the API must be designed to allow data consumption by third-party software)

## Tech & requirements

* Python 3 with [Django](https://www.djangoproject.com/) and [GeoDjango](https://docs.djangoproject.com/en/2.1/ref/contrib/gis/)
* Postgresql with [PostGIS](https://postgis.net/)
* Swagger for interactive API documentation (available on /schema)

## How to run

### Test project

* Install and configure requirements (see above)
* Run `pip install .[dev]` to install dependencies
* You need the following env variables: `MDS_DB_NAME`, `MDS_DB_USER` and `MDS_DB_PASSWORD`
* To initialize the database, run `python manage.py migrate`
* To start the project locally, run `MDS_DEV_DEBUG=1 python manage.py runserver`

A sample environment configuration is provided in `.env.example`

#### Authentication

Request authentication is done through JWT bearer token as specified in [MDS](https://github.com/CityOfLosAngeles/mobility-data-specification/tree/dev/agency#authorization)
JWT secret key or public key should be given through environment configuration `MDS_AUTH_SECRET_KEY` or `MDS_AUTH_PUBLIC_KEY`

### Frontend

See dedicated README in [front/README.md](https://github.com/Polyconseil/django-mds/blob/master/front/README.md)

## Release

We use [semantic versioning](https://semver.org/) and zest.releaser for the actual release:

    fullrelease

Just follow the steps and hit Enter to answer Yes.


