{"id":13598568,"url":"https://github.com/iguana-project/iguana","last_synced_at":"2025-04-10T09:31:45.130Z","repository":{"id":156206026,"uuid":"89964165","full_name":"iguana-project/iguana","owner":"iguana-project","description":"Iguana is an open source issue management system with a kanban board.","archived":false,"fork":false,"pushed_at":"2024-02-23T15:15:02.000Z","size":18277,"stargazers_count":98,"open_issues_count":0,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-06T23:39:01.588Z","etag":null,"topics":["activity-stream","ansible","django","docker","git-integration","iguana","iguana-project","issue-management","issue-tracker","kanban-board","markdown","olea-bar","one-line-edit-add-bar","project-management","rest-api","slack-integration","sprint-backlog","sprint-planning","time-logging"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iguana-project.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-01T21:23:01.000Z","updated_at":"2024-11-06T15:44:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"f96c4f45-5e0f-482a-9b89-c30f380ee657","html_url":"https://github.com/iguana-project/iguana","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iguana-project%2Figuana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iguana-project%2Figuana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iguana-project%2Figuana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iguana-project%2Figuana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iguana-project","download_url":"https://codeload.github.com/iguana-project/iguana/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248191745,"owners_count":21062560,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["activity-stream","ansible","django","docker","git-integration","iguana","iguana-project","issue-management","issue-tracker","kanban-board","markdown","olea-bar","one-line-edit-add-bar","project-management","rest-api","slack-integration","sprint-backlog","sprint-planning","time-logging"],"created_at":"2024-08-01T17:00:53.779Z","updated_at":"2025-04-10T09:31:40.118Z","avatar_url":"https://github.com/iguana-project.png","language":"Python","funding_links":[],"categories":["Python","Software"],"sub_categories":["Ticketing"],"readme":"# Iguana\n[![Coverage Status](https://img.shields.io/coveralls/github/iguana-project/iguana/master.svg)](https://coveralls.io/github/iguana-project/iguana?branch=master)\n[![Test \u0026 Build](https://github.com/iguana-project/iguana/actions/workflows/test_and_build.yml/badge.svg)](https://github.com/iguana-project/iguana/actions/workflows/test_and_build.yml)\n![Django 2.2 support](https://img.shields.io/badge/django-v2.2-blue)\n![Python \u003e=3.8 required](https://img.shields.io/badge/python-v3.8|3.9|3.10-blue)\n\n## Description\nIguana is a mixture of a ticket system, an issue tracker and an issue management system, heavily based on basic functions being easy to use. So Iguana can help you to plan the next schedule and to always have a nice overview about your current tasks depending on your needs, especially for working in groups. There is a kanban board to keep an eye on the progress until the end of the next planning stage and also a backlog to have the ability for scheduling of long-term tasks. In combination with a mechanism to log time spent on different tasks individually those are the essential functionalities.\n\nFor more detailed documentation including a list of features see our github documentation page at https://iguana-project.github.io.\n\n### Features\n* [Sprintboard](https://iguana-project.github.io/index.html#sprintboard)\u003cbr /\u003e\n\tProvides possibility for short-term scheduling.\n* [Backlog](https://iguana-project.github.io/index.html#backlog)\u003cbr /\u003e\n\tProvides possibility for long-term scheduling.\n* [Olea-bar](https://iguana-project.github.io/#olea-bar)\u003cbr /\u003e\n\tA command line tool to create and edit existing issues.\n* [Time-logging](https://iguana-project.github.io/#time-logging)\u003cbr /\u003e\n\tFor both issues and projects, where the value for the later one is simply the sum of relative issue-time-logs.\n* Activity charts\u003cbr /\u003e\n\tTo keep an eye on the progress of a specific project in both aspects, for time management and amount of activities (e.g. commits). There is an [activity overview](https://iguana-project.github.io/demonstration/activity.html#demo-activity_overview) for a project and a [different chart](https://iguana-project.github.io/demonstration/time_logging.html#demo-chart) for the proportion of issues on a single project.\n* [Notifications](https://iguana-project.github.io/demonstration/activity.html#navigation)\u003cbr /\u003e\n\tPresent multiple ways to notify you for different events. In the future it will be customizable which notifications shall be shown with which feature.\n  * [Activity stream](https://iguana-project.github.io/#activity_stream)\u003cbr /\u003e\n\tshow the latest actions in multiple streams.\n  * [Discussion App](https://iguana-project.github.io/demonstration/activity.html#demo-discussion_app)\u003cbr /\u003e\n\tGet notifications on changes or comments on a specific issue you set a watchpoint for.\n  * [Email notifications](https://iguana-project.github.io/demonstration/activity.html#demo-discussion_app)\u003cbr /\u003e\n\tSends notifications via email.\n* [Search function](https://iguana-project.github.io/demonstration/search_function.html#navigation)\u003cbr /\u003e\n\tSearch any type of a specific data with regex support.\n* [Integrations](https://iguana-project.github.io/index.html#integrations)\u003cbr /\u003e\n\tTo simplify your workflow\n  * Git\n  * Slack\n* [REST-API](https://iguana-project.github.io/#rest-api)\u003cbr /\u003e\n\tTo extend your possibilities on how to use iguana.\n* [Markdown support](https://iguana-project.github.io/#markdown_support)\u003cbr /\u003e\n\tFor nicer formatting of comments and descriptions.\n* [Ansible](#using-ansible-for-deployment)\u003cbr /\u003e\n\tEasy and fast start due to the usage of ansible\n* [Docker](#docker)\u003cbr /\u003e\n\tAlternatively an even easier and faster start with Docker\n\n\n\n## Installation\n### Manual\n\n#### Preparation\n\nIf you want to manually install Iguana, there are some dependencies and actions that must be installed and done before:\n\n##### Dependencies\n**TODO**: more dependencies required\n\nWe generally try to avoid any non-python dependencies but this doesn't always work well. The test cases need the *Exempi* library so for the [development environment](README.md#Development) this is required and can be installed like [this](https://python-xmp-toolkit.readthedocs.io/en/latest/installation.html#exempi):\n\n```bash\napt-get install libexempi3  # Ubuntu/Debian\npacman -S exempi\t\t    # Arch Linux\nbrew install exempi         # OS X\n```\n\n##### Setup Python Version\n\nIguana is currently tested against **Python 3.8**.\u003c/br\u003e\nIt may be also run on higher versions. But if you run into any problems, please test first if they also occur with Python 3.8.\n\nTo install Python 3.8 locally (independent from your current system version), you can use [pyenv](https://github.com/pyenv/pyenv). For installation and setting up *pyenv* please stick to their documentation: https://github.com/pyenv/pyenv/wiki\n\nOnce you've got *pyenv* running execute the following command in the main iguana directory:\n\n```bash\npyenv install -v $(cat .python-version)\n```\n\nIf everything is correctly setup and if you simply run `python` in your command shell, the python interpreter with the version specified in the `.python-version` file should be started. If you already created a virtualenv previously you should delete it and recreate it with the specified python version.\n\n\n**Common problems using *pyenv*:** Since *pyenv* is compiling every python version other than your system one directly on your PC, it can happen that after some time this version won't work any more. Often there are errors of missing shared libraries, when you try to start Iguana or the Python interpreter installed by *pyenv*. This can happen e.g. after a system update/upgrade. To solve this issue simply reinstall the Python version with the above *pyenv* command.\n\n#### Production\nTo setup Iguana in a production environment you simply have to call:\n\n```bash\nmake production\n```\n\nThis command runs the following Makefile targets:\n\n  * `setup-virtualenv`\n  * `django makemigrations`\n  * `django migrate`\n  * `css`\n\n#### Staging\nTo setup Iguana in a staging environment you simply have to call:\n\n```bash\nmake staging\n```\n\nThis does the same as the production target but it creates the staging virtual environment.\n\n#### Development\nTo setup Iguana in a development you simply have to call:\n\n```bash\nmake development ++webdriver [\u003cwebdriver\u003e]\n```\n\nThe `\u003cwebdriver\u003e` option the driver for the `setup-webriver` target can be specified (\"chrome\" is used as default). Beside that the following targets are executed:\n\n* `production`\n* `setup-webdriver \u003cwebdriver\u003e`\n\n#### Starting Iguana\nCurrently Iguana supports only [Nginx](https://nginx.org/en/) as web server backend. For configuring Nginx and using [Gunicorn](http://gunicorn.org/) together with Django please stick to the official documentation: https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/gunicorn/\n\n#### Starting the local Iguana instance\nTo start the local Django web server simply run:\n\n```bash\nmake run\n```\n\n\n### Docker\n#### Build images\nThree images can be built with the Dockerfile:\n\n* **development** (default)\n\n  `docker build -f Dockerfile .`\n* **staging/production**\n\n  `docker build -f Dockerfile . --build-arg VARIANT=[staging|production] [--build-arg USE_NGINX=[false|true]]`\n\n  The `USE_NGINX` variable indicates if a (basic) Nginx server should be included in the image. The default value is `false`!\n\n#### Start a container\nEach Iguana docker image can be started with the following command:\n```bash\ndocker run -d \\\n\t-p 80:8000 \\\n\t-v \u003cdata_directory\u003e:/files \\\n\t-e TZ=\u003ctime zone\u003e \\\n\t-e PUID=\u003cuser ID\u003e \\\n\t-e PGID=\u003cgroup ID\u003e \\\n\t\u003cIguana image ID\u003e\n```\n\n| Environment variable | Default value | Description |\n|-|-|-|\n| TZ | UTC | Set the time zone for the container, e.g. Europe/Berlin |\n| PUID | 1000 | The ID of the user running Iguana in the container |\n| PGID | 1000 | The group ID of the above user |\n\nBut in staging/production environment more configuration should be done by the user! Therefore a [settings.json](files/settings.json) file is placed in the Docker volume after the first run. You can edit this file to your needs (see [Configuration section -\u003e settings.json](README.md#settingsjson)). To apply the changes simply restart the container. Please look especially at the `SECRET_KEY` and `HOST/ALLOWED_HOSTS` settings!\n\nIf a Nginx server was included in the image (with `USE_NGINX=true`), the `nginx.conf` file can also be found on the Docker volume. But for real production environments, a separate Nginx container is recommended!\n\nAll files uploaded to Iguana are placed in the `media` directory on the Docker volume.\n\n**TODO**: add DockerHub badges and links\n\n\n### Using Ansible for deployment\n**TODO:** write Ansible instructions\n\n\n### Integrations\n* **TODO:** write instructions for git integration\n* **TODO:** write instructions for slack integration\n\n\n\n## Makefile targets\nThese targets can be run with:\n\n```bash\nmake \u003ctarget\u003e [++option]\n```\n\n**Note** that options have to begin with `+` or `++` instead of `-` or `--`. This is due to a bug that prevents passing options to make targets.\n\n### Main:\n* **help**\u003cbr /\u003e\nPrints a short description for each Makefile target.\n\n* **production**\u003cbr /\u003e\nSee subsection [Production](README.md#Production).\n\n* **staging**\u003cbr /\u003e\nSee subsection [Staging](README.md#Staging).\n\n* **development** `[+w \u003cwebdriver\u003e]`\u003cbr /\u003e\nSee subsection [Development](README.md#Development).\n\n### Django management:\n* **django** `\u003ccommand\u003e [\u003cargs\u003e]`\u003cbr /\u003e\nAny command and its arguments gets directly passed to Django's `manage.py` script. Please have a look at the official Django documentation for a list of supported commands: https://docs.djangoproject.com/en/dev/ref/django-admin/\n\n* **test** `[+a \u003cappname\u003e|+f|+c] [+i]`\u003cbr /\u003e\nRun the Django unit tests. If an application name is provided with `+a`, only that app is tested. To run the functional tests use the `+f` option. If all tests should be run, use option `+c`. With the option `+i` the warnings and errors from imported packages get suppressed.\n\n* **run**\u003cbr /\u003e\nRun the default django server.\n\n### Source code management:\n* **setup-virtualenv**\u003cbr /\u003e\nThis target prepares the virtual python environment in which this project is executed. The packages for the virtual environment are defined in the file [production.req](requirements/production.req) or [development.req](requirements/development.req). This depends on which main target you have chosen before.\n\n* **css**\u003cbr /\u003e\nSee section [Styling](README.md#Styling).\n\n* **set-webdriver** `\u003cwebdriver\u003e`\u003cbr /\u003e\nThis target configures the webdriver for the functional tests. You can replace `\u003cwebdriver\u003e` with `chrome`, `firefox` or `safari`.\n\n* **requirements**\n    * **install**\u003cbr /\u003e\n    Reinstall all packages in the virtual environment. Which packages are installed depend on what main target you have run in the initialization process.\n    * **check**\u003cbr /\u003e\n    Check whether the used requirements are up to date or not.\n\n* **coverage** `[+a \u003cappname\u003e|+f|+c] {report,html,xml,erase}`\u003cbr /\u003e\nRun the coverage tool on the Django tests. With argument `+a` an app for which the coverage should be measured can be specified. `+f` measures the coverage for all functional tests and `+c` performs a measurement across all tests. To get a better output you can run one of the following commands:\n    * **report**\u003cbr /\u003e\n    Get the coverage in text form.\n    * **html**\u003cbr /\u003e\n    Get the coverage as a html website.\n    * **xml**\u003cbr /\u003e\n    Get the coverage as a xml file.\n    * **erase**\u003cbr /\u003e\n    Delete the last coverage report.\n\n* **list**\n    * **bugs**\u003cbr /\u003e\n    List all occurrence of the tag `TODO BUG`.\n    * **missing_testcases**\u003cbr /\u003e\n    List all occurrence of the tag `TODO TESTCASE`.\n\n* **add-license**\u003cbr /\u003e\nInsert the license header into all source files.\n\n* **new-release**\u003cbr /\u003e\nTag the current commit as a production release.\n\n\n### Styling\nCurrently the style is stored in [src/common/scss/iguana/iguana.scss](src/common/scss/iguana/iguana.scss). To build it run\n`make css`. For Selenium tests use `StaticLiveServerTestcase` instead of\n`LiveServerTestcase` to make sure static files (like css) are served.\n\nDocumentation on Sass and SCSS: [sass-lang guide](https://sass-lang.com/guide)\n\nI propose we use SCSS, as it is a superset of CSS and the default Sass syntax.\nIf we change our mind, there are tools to convert between the two syntaxes.\n\n### Translation\nPlease use translation hooks in templates (see [\\_base.html](src/common/templates/_base.html) for an example)\nand code (`ugettext` as `_`).\n\nYou can create/update the `*.po` in the locale directory by running `make django makemessages +l \u003clang-code\u003e`. The default language is English (code: en). This file is where the actual translations go. It should be checked\nin after updating. This uses the GNU gettext toolset.\n\nFor new translations to be usable by django, run `make django compilemessages`.\n\nTo see a page in a different language, open it with a different language prefix\nin the url. For example `/de/login` instead of `/en/login`.\n\n\n## Configuration\nIguana has a lot of settings that can be changed by the user. The settings files are stored in the [src/common/settings](src/common/settings) package. The package structure is:\n\n```bash\ncommon/settings\n          |- __init__.py\n          |- common.py\n          |- global_conf.py\n          |- local_conf.py\n```\n\n\n#### \\_\\_init\\_\\_.py\nA default init-file gets created by the Makefile target **initialize-settings** (see section [Makefile targets](README.md#Makefile-targets)).\u003cbr /\u003e\nFor the development process this file can contain additional settings that should not be published in the repository. Mainly the Django-`SECRET_KEY = '...'` setting is defined here, when the project is in the development environment.\u003cbr /\u003e\n**Important:** The file must start with the line:\n\n```python\nfrom \u003csite_config\u003e import *\n```\n\nYou can replace `\u003csite_config\u003e` with (don't forget the '**.**'):\n* `.local_conf`: the development settings are loaded\n* `.global_conf`: the production and staging settings are loaded\n\n#### common.py\nThis file contains the basic settings that are the same for the other two configuration files.\u003cbr /\u003e\n**This file should not be changed by the user!** It contains basic settings for the Django framework. Changing these settings without knowing what you do could lead to unexpected behaviour.\n\n#### global_conf.py\nBasically this file contains all settings that are required to run Iguana in an staging or production environment.\u003cbr /\u003e\nBut the settings that should be changed by the user are loaded from the file [settings.json](files/settings.json). See section [settings.json](README.md#settingsjson).\n\n#### local_conf.py\nThis file contains all settings that are required to run Iguana in a development environment.\u003cbr /\u003e\nNormally there's no need to change these settings.\n\n#### settings.json\n**TODO**: describe settings.json\n\n\n## Plan of the future\nFor short and long term plans see the [official documentation](https://iguana-project.github.io/#plans).\n\n## Question and answers\nFor questions and answers please also stick to the [official documentation](https://iguana-project.github.io/#q_and_a). In case you have any other questions don't hesitate to hit us up.\n\n## License\nIguana was mainly developed with the Django framework (https://www.djangoproject.com).\n\n\n### Main license\n**Iguana is licensed under the BSD-2-Clause license**\n\u003cbr /\u003eThis work is licensed under a \u003ca rel=\"license\" href=\"https://opensource.org/licenses/BSD-2-Clause\"\u003eBSD-2-Clause License\u003c/a\u003e. Previous versions of this software used to be licensed under CC-BY-SA 4.0, which is not that suitable for source code.\n\n\u003c!-- Header for all source files --\u003e\n\u003c!-- Iguana (c) by Marc Ammon, Moritz Fickenscher, Lukas Fridolin,\nMichael Gunselmann, Katrin Raab, Christian Strate\n\nIguana is licensed under BSD-2-Clause license.\n\nYou should have received a copy of the license along with this\nwork. If not, see \u003chttps://opensource.org/licenses/BSD-2-Clause\u003e. --\u003e\n\n\n### Plug-in licenses\nBesides the following plug-ins were used:\n\n| Plug-in / Software | License |\n| ------------------ | ------- |\n| [bleach](https://github.com/mozilla/bleach) | [Apache License 2.0](https://github.com/mozilla/bleach/blob/master/LICENSE) |\n| [celery](http://docs.celeryproject.org/en/latest/) | [BSD License](http://docs.celeryproject.org/en/latest/) |\n| [chromedriver](https://github.com/enkidulan/chromedriver) | Apache License 2.0 |\n| [coverage](https://coverage.readthedocs.io) | [Apache License 2.0](https://github.com/nedbat/coveragepy/blob/master/LICENSE.txt) |\n| [Django](https://www.djangoproject.com) | [BSD License](https://github.com/django/django/blob/master/LICENSE) |\n| [django-activity-stream](https://django-activity-stream.readthedocs.io) | [BSD License](https://github.com/justquick/django-activity-stream/blob/master/LICENSE.txt) |\n| [django-autocomplete-light](https://django-autocomplete-light.readthedocs.io) | [MIT License](https://github.com/yourlabs/django-autocomplete-light/blob/master/LICENSE) |\n| [django-bootstrap3](https://django-bootstrap3.readthedocs.io) | [Apache License 2.0](https://github.com/dyve/django-bootstrap3/blob/master/LICENSE) |\n| [django-cuser](https://github.com/Alir3z4/django-cuser) | [BSD License](https://github.com/Alir3z4/django-cuser/blob/master/LICENSE) |\n| [django-bootstrap-datepicker-plus](https://github.com/monim67/django-bootstrap-datepicker-plus) | [Apache License 2.0](https://github.com/monim67/django-bootstrap-datepicker-plus/blob/master/LICENSE) |\n| [django-extensions](https://github.com/django-extensions/django-extensions) | [MIT License](https://github.com/django-extensions/django-extensions/blob/master/LICENSE)\n| [django-filter](https://github.com/carltongibson/django-filter) | [BSD License](https://github.com/carltongibson/django-filter/blob/develop/LICENSE) |\n| [django-pagedown](https://github.com/timmyomahony/django-pagedown) | [BSD License](https://github.com/timmyomahony/django-pagedown/blob/master/LICENSE.txt) |\n| [django-redis](https://github.com/niwinz/django-redis) | [BSD License](https://github.com/niwinz/django-redis/blob/master/LICENSE) |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | [BSD License](https://github.com/encode/django-rest-framework/blob/master/LICENSE.md) |\n| [djangorestframework-simplejwt](https://github.com/davesque/django-rest-framework-simplejwt) | [MIT License](https://github.com/davesque/django-rest-framework-simplejwt/blob/master/LICENSE.txt) |\n| [django-sendfile](https://github.com/johnsensible/django-sendfile) | [BSD License](https://github.com/johnsensible/django-sendfile/blob/master/LICENSE) |\n| [django-simple-captcha](https://github.com/mbi/django-simple-captcha) | [MIT License](https://github.com/mbi/django-simple-captcha/blob/master/LICENSE) |\n| [django-test-without-migrations](https://github.com/henriquebastos/django-test-without-migrations/) | [MIT License](https://github.com/henriquebastos/django-test-without-migrations/blob/master/LICENSE) |\n| [GitPython](https://gitpython.readthedocs.io) | [BSD License](https://github.com/gitpython-developers/GitPython/blob/master/LICENSE) |\n| [gunicorn](https://gunicorn.org) | [MIT License](https://github.com/benoitc/gunicorn/blob/master/LICENSE) |\n| [markdown](https://pythonhosted.org/Markdown/) | [BSD License](https://github.com/waylan/Python-Markdown/blob/master/LICENSE.md) |\n| [markdown-urlize](https://github.com/r0wb0t/markdown-urlize) | [BSD License](https://github.com/r0wb0t/markdown-urlize/blob/master/LICENSE) |\n| [model-mommy](https://model-mommy.readthedocs.org) | [Apache License 2.0](https://github.com/vandersonmota/model_mommy/blob/master/LICENSE) |\n| [Pillow](https://python-pillow.org) | [PIL Software License](https://github.com/python-pillow/Pillow/blob/master/LICENSE) |\n| [piprot](https://github.com/sesh/piprot) | [MIT License](https://github.com/sesh/piprot/blob/master/LICENCE.txt) |\n| [Piexif](https://github.com/hMatoba/Piexif) | [MIT License](https://github.com/hMatoba/Piexif/blob/master/LICENSE.txt) |\n| [ply](http://www.dabeaz.com/ply/) | BSD License |\n| [psycopg2](http://initd.org/psycopg/) | [GNU LGPL v3.0](https://github.com/psycopg/psycopg2/blob/master/LICENSE) |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | [Expat License](https://github.com/PyCQA/pycodestyle/blob/master/LICENSE) |\n| [python-dateutil](https://github.com/dateutil/dateutil/) | [BSD License](https://github.com/dateutil/dateutil/blob/master/LICENSE) |\n| [python-magic](https://github.com/ahupp/python-magic) | [MIT license](https://github.com/dateutil/dateutil/blob/master/LICENSE) |\n| [python-xmp-toolkit](https://github.com/python-xmp-toolkit/python-xmp-toolkit) | [ESA/ESO and CRS4 license](https://github.com/python-xmp-toolkit/python-xmp-toolkit/blob/master/LICENSE) |\n| [pytz](https://github.com/stub42/pytz) | [MIT license](http://pythonhosted.org/pytz/#license) |\n| [redis](https://github.com/antirez/redis) | [BSD License](https://github.com/antirez/redis/blob/unstable/COPYING) |\n| [requests](http://docs.python-requests.org) | [Apache License 2.0](https://github.com/kennethreitz/requests/blob/master/LICENSE) |\n| [selenium](http://www.seleniumhq.org) | [Apache License 2.0](https://github.com/SeleniumHQ/selenium/blob/master/LICENSE)\n| [sendgrid-django](https://github.com/elbuo8/sendgrid-django) | [MIT License](https://github.com/elbuo8/sendgrid-django/blob/master/LICENSE) |\n| [slackclient](https://github.com/slackapi/python-slackclient) | [MIT License](https://github.com/slackapi/python-slackclient/blob/master/LICENSE) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figuana-project%2Figuana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figuana-project%2Figuana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figuana-project%2Figuana/lists"}