New knowledge 
Tags: opensource
Published: 2022-02-05 04:41:09

This week I have been reading a lot of documentation. I got involved in Docker, Supabase, Renovate bot, Turborepo, Traefik, Nginx, and React-Native.

## Docker
This week I have been learning a lot about Docker. I watched a quick intro into docker. 
{% youtube gAkwW2tuIqE %}
I started to do the small tutorial of docker by following the [get-started](https://docs.docker.com/get-started/) of Docker. 
Docker is a bit hard to learn, but it is just a matter of time. Once I get to use more and practice more, it will eventually become easier. The next step would be to learn Kubernetes.
Some of the issue I'm working that related to Docker
- [Issue - 2745](https://github.com/Seneca-CDOT/telescope/issues/2745) - Done
- [Issue - 2791](https://github.com/Seneca-CDOT/telescope/issues/2791) - Ready
- [Issue - 2799](https://github.com/Seneca-CDOT/telescope/issues/2799) - Ready
- [Issue - 2803](https://github.com/Seneca-CDOT/telescope/issues/2803) - Ready
- [Issue - 2830](https://github.com/Seneca-CDOT/telescope/issues/2830) - Ready

[Issue - 2745](https://github.com/Seneca-CDOT/telescope/issues/2745) was my first issue with Docker stuff. I was looking at some documentation about how to install `pnpm` into the docker containers. I end up with [this](https://pnpm.io/cli/fetch). I tried the solution followed the snippet code, but it wasn't working. Also, it is an experimental command which means it might have some breaking change in the non-major version. So I used the simple and basic solution `RUN npm i -g pnpm`. This would install `pnpm` into the global node_modules package. 
To test if the container was built and working I ran `pnpm services:start`. Later on, working on [Issue - 2803](https://github.com/Seneca-CDOT/telescope/issues/2803) I discovered I could start only 1 microservices instead of all of them by doing `pnpm services:start image` to start image microservice.  

## Supabase
Supabase is an open sources database. It's based on PostgreSQL, and adds more features to it.
We can say it can be an alternative to Firebase. 
[Read more](https://supabase.com/)
I watched a good quick intro about it.
{%youtube WiwfiVdfRIc %}

## Renovate Bot

## Turborepo
Turborepo is a tool to manage repo. This is an amazing tool. It can cache things and only rerun stuff that changed in the code. Which makes the running process fast. It is a super useful and powerful tool for monorepo.
[Read more](https://turborepo.org/docs)
Also here is a good video of what tool on average used for monorepo.
{%youtube 9iU_IE6vnJ8 %}
## Traefik / Nginx
Feb 04 meeting I learned more about Traefik / Nginx. Nginx is a tool to reroute/ load balance, but since it doesn't know about Docker exposed port, we need to use Traefik that communicates with Nginx and Docker.
```
Basically 
User > Nginx > Traefik > Docker
```
Why use Traefik / Nginx, is because we don't want to expose ports into the web, it would be bad for security, everyone in the world would try to hack into the system.
[Issue - 2791] (https://github.com/Seneca-CDOT/telescope/issues/2791) - This issue I think I'm gonna tackle since it would be a good learning touch Traefik / Nginx and also Docker. 

## React-Native
I recently read about a [blog post](https://pagepro.co/blog/publishing-expo-react-native-app-to-ios-and-android/) of how to deploy a react native to IOS and Android. This would be useful for later on when telescope will be needed to be published into Play store and App store.
Based on the blog contains, it seems pretty simple to build and publish React-native app. 
`expo build` is the command to build and `expo upload:{andoid/ios}` to publish.
But before that, we need to config `App.json` which defines our app name, icon, splash, and other configs for different systems. 
[Issue - 2760](https://github.com/Seneca-CDOT/telescope/issues/2760) - I referred to [this documentation](https://docs.expo.dev/guides/app-icons/) to complete this task. 
Finale result what it would looks like:
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bpqq5hxo1jss329bjjxn.png)