Skip to content
/ biodm Public

Proof of concept for an extended purpose biology data management API

License

Notifications You must be signed in to change notification settings

bag-cnag/biodm

Repository files navigation

BioDM: A fast and RESTful Data Management framework

logo


Introduction Presentation: https://www.overleaf.com/read/wxpdnptnkpsy

Source Code: https://github.com/bag-cnag/biodm

Documentation: https://bag-cnag.github.io/biodm/


BioDM is a fast, modular, stateless and asynchronous REST API framework with the following core features:

  • Provide standard HTTP REST-to-CRUD endpoints from developper provided entity definitions:

  • Inter-operate services ecosystem:

    • Permissions leveraging Keycloak
    • Storage leveraging S3 protocol
    • Jobs & Visualization leveraging Kubernetes cluster
  • Also sets up essentials:

    • Liveness endpoint
    • Login and token retrieval system
    • OpenAPI schema generation through apispec

It sits on the Findability and Accessibility part of the F.A.I.R principles, while remaining flexible for the remainder to be implemented.

Quickstart

Install

pip3 install git+https://github.com/bag-cnag/biodm

To run an API instance you will also need an ASGI server, e.g. uvicorn+uvloop:

pip3 install uvicorn uvloop

Run Example project

Provided within this repository.

Note: Prior to this step, it is recommended to create and activate a new python3 (>=3.11) virtual environment.

pip3 install -r src/requirements/dev.txt
pip3 install .

you may use the following in order to deploy the development stack:

docker compose -f compose.yml up --build -d

It is recommended to give them hostnames. In particular keycloak does hard checks and login shall fail without this step.

sudo cat >> /etc/hosts <<EOF
# biodm-dev
10.10.0.2       postgres.local
10.10.0.3       keycloak.local host.minikube.internal
10.10.0.4       s3bucket.local
EOF

Then you may run example:

cd src/example/
python3 src/example/app.py

This stack comes with an interactive swagger-ui visitable at http://localhost:9080/ once the server is running.

To use kubernetes functionalities or tweak default configuration you should visit getting started section of the documentation.

About

Developed at CNAG

Contributing

No contributing policy yet. However, issues and pull requests are welcome.

Licence

GNU/AGPLv3

About

Proof of concept for an extended purpose biology data management API

Resources

License

Stars

Watchers

Forks

Packages

No packages published