# ungleich_screening_task A micro project proposed as a screening task for the [Senior Django Developer](https://ungleich.ch/en-us/cms/jobs-ungleich/) position at [ungleich](https://ungleich.ch/). ## Overview Per requirements, the project behaves differently depending on the version of the [Internet Protocol](https://en.wikipedia.org/wiki/Internet_Protocol) used to navigate it: - Via IPv4, it shows a static page saying "Sorry, only reachable by IPv6" - Via IPv6, it shows a friendly cat picture To determine which version is used, we examine the visitor’s IP address. This is done in a [middleware](require_ipv6) that responds with an error page to non-IPv6 requests. If the request goes through, a simple [application](friendly_cat) can be accesses, with a single index view showing a friendly picture of a cat. ## Demo A live demo of the project is available at: [https://ungleich-screening-task.coox.fr/](https://ungleich-screening-task.coox.fr/). It is served by [Gunicorn](https://gunicorn.org/) through [Caddy](https://caddyserver.com/). ## Usage To install and run the project on your own computer, you must ensure that the following prerequisites are fulfilled: - your operating system [supports IPv6](https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems) - you can run [Python](https://www.python.org/) version 3.6 or above (it is recommended to use a [virtual environment](https://docs.python.org/3/tutorial/venv.html)), with: - [`pip`](https://pip.pypa.io/) - [`setuptools`](https://pypi.org/project/setuptools/) - you can run the [`make`](https://www.gnu.org/software/make/) command Proceed to [cloning](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) this repository, and navigate to its directory. Then, execute the following command to install the project’s required modules: ```sh make install ``` Then, execute the following command to run the project using Django’s built-in web server: ```sh make run ``` You can then navigate the project at [http://localhost:8000/](http://localhost:8000/). ## Hacking See [CONTRIBUTING](CONTRIBUTING.md) for developer documentation.