Article Exploratory Data Analysis Within My Own Jupyterhub preview

jupyterhub.rottigni.tech

I’m excited to introduce one of my latest projects - jupyterhub.rottigni.tech. This dynamic JupyterHub environment is seamlessly integrated within the rottigni.tech web ecosystem. It operates within Docker and, thanks to docker-swarm, spawns child containers for every user who logs in.

One of the key features is the use of docker-volumes. Through this, I’m able to sync the files created or edited by users with a unique container named backup_job. This container specifically volumizes only my personal user “Lorenzo” child Docker container.

The backup_job container operates a super lightweight git alpine container, triggered by a crontab command, executing a bash script to synchronize the changes with the storage.jupyterhub.rottigni.tech GitLab repository.

But that’s not all. The notebooks housed on storage.jupyterhub.rottigni.tech are synchronized with my portfolio database. This integration is facilitated by a Docker container in my portfolio that hosts a cronjob seeder Node.js script. This script, like clockwork, refreshes my portfolio’s DB every midnight, drawing from various sources including the storage.jupyterhub.rottigni.tech GitLab repository, leveraging the GitLab REST API.

In a nutshell, the notebooks and markdown files I create within my JupyterHub instance are automatically synchronized with the documents page of my portfolio at https://portfolio.rottigni.tech/docs. Thanks to special JS parsers, I’ve managed to convert the raw file content into HTML code, seamlessly displayed within the notebook show routes of my portfolio at https://portfolio.rottigni.tech/docs/<file-path.(ipynb|md)>.

This remarkable integration, with https://jupyterhub.rottigni.tech, https://gitlab.com/LorenzoRottigni/storage.jupyterhub.rottigni.tech, and https://portfolio.rottigni.tech as its main characters, has allowed me to sync my exploratory data analysis and data science lessons within my personal web portfolio. Making it open-source and available for other interested web users.

Explore, learn, and share - that’s the essence of this project. Feel free to reach out if you’d like to know more about the technical intricacies or if you have any questions!