diff --git a/.github/assets/.gitkeep b/.github/assets/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/.github/assets/software/day01/software_mvc.png b/.github/assets/software/day01/software_mvc.png
new file mode 100644
index 0000000..8e4d7c7
Binary files /dev/null and b/.github/assets/software/day01/software_mvc.png differ
diff --git a/.github/assets/software/day02/ORM/software_bdd_part2.png b/.github/assets/software/day02/ORM/software_bdd_part2.png
new file mode 100644
index 0000000..24caa99
Binary files /dev/null and b/.github/assets/software/day02/ORM/software_bdd_part2.png differ
diff --git a/.github/assets/software/day02/ORM/software_bdd_relational_type.png b/.github/assets/software/day02/ORM/software_bdd_relational_type.png
new file mode 100644
index 0000000..daa9862
Binary files /dev/null and b/.github/assets/software/day02/ORM/software_bdd_relational_type.png differ
diff --git a/.github/assets/software/day02/SQL/software_bdd.png b/.github/assets/software/day02/SQL/software_bdd.png
new file mode 100644
index 0000000..6748687
Binary files /dev/null and b/.github/assets/software/day02/SQL/software_bdd.png differ
diff --git a/.github/assets/software/day02/SQL/software_postgresql_result.png b/.github/assets/software/day02/SQL/software_postgresql_result.png
new file mode 100644
index 0000000..351598a
Binary files /dev/null and b/.github/assets/software/day02/SQL/software_postgresql_result.png differ
diff --git a/.github/assets/software/day02/SQL/software_postresql_connection.png b/.github/assets/software/day02/SQL/software_postresql_connection.png
new file mode 100644
index 0000000..22fb168
Binary files /dev/null and b/.github/assets/software/day02/SQL/software_postresql_connection.png differ
diff --git a/.github/assets/software/day02/SQL/software_sql_online.png b/.github/assets/software/day02/SQL/software_sql_online.png
new file mode 100644
index 0000000..7d544a6
Binary files /dev/null and b/.github/assets/software/day02/SQL/software_sql_online.png differ
diff --git a/.github/assets/software/day02/noSQL/compass-auth-connection.png b/.github/assets/software/day02/noSQL/compass-auth-connection.png
new file mode 100644
index 0000000..b665ff0
Binary files /dev/null and b/.github/assets/software/day02/noSQL/compass-auth-connection.png differ
diff --git a/.github/assets/software/day02/noSQL/data-grip-terminal.png b/.github/assets/software/day02/noSQL/data-grip-terminal.png
new file mode 100644
index 0000000..3600803
Binary files /dev/null and b/.github/assets/software/day02/noSQL/data-grip-terminal.png differ
diff --git a/.github/assets/software/day02/noSQL/software_bdd.png b/.github/assets/software/day02/noSQL/software_bdd.png
new file mode 100644
index 0000000..22f90d6
Binary files /dev/null and b/.github/assets/software/day02/noSQL/software_bdd.png differ
diff --git a/.github/assets/software/day02/noSQL/software_bdd_compass.png b/.github/assets/software/day02/noSQL/software_bdd_compass.png
new file mode 100644
index 0000000..3fe1525
Binary files /dev/null and b/.github/assets/software/day02/noSQL/software_bdd_compass.png differ
diff --git a/.github/assets/software/day02/noSQL/software_mongo_connection.png b/.github/assets/software/day02/noSQL/software_mongo_connection.png
new file mode 100644
index 0000000..023d93a
Binary files /dev/null and b/.github/assets/software/day02/noSQL/software_mongo_connection.png differ
diff --git a/.github/assets/software/day02/noSQL/software_mongo_result.png b/.github/assets/software/day02/noSQL/software_mongo_result.png
new file mode 100644
index 0000000..318e97d
Binary files /dev/null and b/.github/assets/software/day02/noSQL/software_mongo_result.png differ
diff --git a/.github/assets/software/day05/angular/first-component.png b/.github/assets/software/day05/angular/first-component.png
new file mode 100644
index 0000000..f7ff61b
Binary files /dev/null and b/.github/assets/software/day05/angular/first-component.png differ
diff --git a/.github/assets/software/day05/angular/router.png b/.github/assets/software/day05/angular/router.png
new file mode 100644
index 0000000..22c85f6
Binary files /dev/null and b/.github/assets/software/day05/angular/router.png differ
diff --git a/.github/assets/software/day05/flutter/first_page.png b/.github/assets/software/day05/flutter/first_page.png
new file mode 100644
index 0000000..c1955a5
Binary files /dev/null and b/.github/assets/software/day05/flutter/first_page.png differ
diff --git a/.github/assets/software/day05/flutter/login_page.png b/.github/assets/software/day05/flutter/login_page.png
new file mode 100644
index 0000000..8919e04
Binary files /dev/null and b/.github/assets/software/day05/flutter/login_page.png differ
diff --git a/.github/assets/software/day05/flutter/register_page.png b/.github/assets/software/day05/flutter/register_page.png
new file mode 100644
index 0000000..c52805c
Binary files /dev/null and b/.github/assets/software/day05/flutter/register_page.png differ
diff --git a/.github/assets/software/day05/flutter/shortcut_stl.png b/.github/assets/software/day05/flutter/shortcut_stl.png
new file mode 100644
index 0000000..5cb97b6
Binary files /dev/null and b/.github/assets/software/day05/flutter/shortcut_stl.png differ
diff --git a/.github/assets/software/day05/react/react-architecture-example.png b/.github/assets/software/day05/react/react-architecture-example.png
new file mode 100644
index 0000000..0949a3c
Binary files /dev/null and b/.github/assets/software/day05/react/react-architecture-example.png differ
diff --git a/LICENSE b/LICENSE
index 35c9b21..f099953 100644
--- a/LICENSE
+++ b/LICENSE
@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright [2023] [PoC Innovation]
+ Copyright [2024] [PoC Innovation]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/README.md b/README.md
index 45ef07b..b6fd91e 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@ Every year, we organize innovation weeks in a "pool" format to introduce people
Here are our fields:
- ๐ธ๏ธ [Peer-To-Peer](./P2P/)
+- ๐ป [Software](./software/)
We put all our heart to work, we hope you will enjoy it and that it will be useful to you.
diff --git a/Software/README.md b/Software/README.md
new file mode 100644
index 0000000..c22bdd5
--- /dev/null
+++ b/Software/README.md
@@ -0,0 +1,117 @@
+# ๐ Welcome to the PoC Software Pool 2024!
+
+During one week, you will be able to discover the different facets of software development: from database management to devops, through a tour of existing technologies.
+
+At the end of this pool, you will have the keys to start any software project.
+
+The pool is divided in 2 parts: a training and an application of knowledge.
+
+The training takes place in 5 days, each day will focus on a software theme and will be supervised by students with extensive knowledge in these areas.
+
+External speakers will also come to bring their experience in the field and explain the main axes of software development in a company. They will also give you important tips.
+
+## ๐ Day 1 - Language Initiation
+
+You will choose a language: Typescript or Go and learn the basics of it by creating an interactive application in your terminal.
+
+This choice will organize your week. You will learn something new in the chosen language each of the following days.
+
+- [Typescript](./day01/Typescript/)
+- [Go](./day01/Go/)
+
+
+## โน๏ธ Day 2 - Database
+
+You will discover the relational databases through the management of a PostgreSQL database in two ways: by hand with SQL queries and with an Object Relational Database (ORM).
+There is an optional part about noSQL databases in the morning for those who finished the SQL before the afternoon starts. We will dive into mongosh (MongoDB shell) and what is a document data base.
+
+- [SQL](./day02/1%20-%20SQL/)
+- [noSQL](./day02/3%20-%20noSQL/)
+
+ORM:
+- [Typescript](./day02/2%20-%20ORM/Typescript/)
+- [Go](./day02/2%20-%20ORM/Go/)
+
+
+## ๐ป: Day 3 - API REST
+
+You will discover core concepts of the web and the basics of HTTP servers by building a REST API.
+
+- [Typescript](./day03/Typescript/)
+- [Go](./day03/Go/)
+
+**Talk:**
+- API REST and security. A crucial combination for robust systems.
- [Bastien SANDER](https://www.linkedin.com/in/bastien-sander-%F0%9F%8C%8D-35098354/)
+
+
+## ๐ฎโโ๏ธ Day 4 - Docker & Deployment
+
+This day will be dedicated to DevOps.
+
+The advancement of cloud and distributed infrastructures has exploded in the last few years, thanks to containerization systems such as docker. You will learn how to use docker, containerize your previous work and its best practices.
+
+In the second part, you'll discover how to deploy a project in production and setup a Continuous Integration and Continuous Deployment.
+
+- [Docker](./day04/1%20-%20Docker/)
+- [Deployment](./day04/2%20-%20Deployment)
+
+**Talk:**
+- Cloud providers: What's going on behind the scenes? - [Maxime CORBIN](https://www.linkedin.com/in/maxime-corbin)
+
+
+## ๐น Day 5 - User Interface
+
+During 4 days, you've worked on the `backend` part of an application. This day you will learn how to build the `frontend` part: the User Interface. You're free to choose React for web applications, or Flutter for mobile applications.
+
+If you've already used React and Flutter, you can even choose Angular to dive further in web UIs!
+
+- [React](./day05/React/)
+- [Flutter](./day05/Flutter/)
+- [Angular](./day05/Angular/)
+- [Svelte](./day05/Svelte/)
+
+**Talk:**
+- Monitoring and data analytics. Do users use your website as expected?
- [Nils Cambreleng](https://www.linkedin.com/in/nilscam/)
+
+
+## โฐ Rush
+
+By groups of 3 to 5, you will have to create a clone of Airbnb, Deezer, Linkedin, Instagram, ...
+
+
+## Authors
+
+
+
+| [
Mohammed JBILOU](https://github.com/Molaryy)
+| :---: |
+
+| [
Adam DEZIRI](https://github.com/adamdeziri) | [
Sรฉphorah ANIAMBOSSOU](https://github.com/sephorah) | [
Ylan GARNIER](https://github.com/YlanGarnier)
+| :---: | :---: | :---: |
+
+
+Organization
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> ๐ Don't hesitate to follow us on our different networks, and put a star ๐ on `PoC's` repositories.
diff --git a/Software/day01/Go/README.md b/Software/day01/Go/README.md
new file mode 100644
index 0000000..d46c30e
--- /dev/null
+++ b/Software/day01/Go/README.md
@@ -0,0 +1,896 @@
+# PoC Software Pool 2024 - Day 01 - Go
+
+Welcome to the Software pool 2024! ๐
+
+During this week, you will learn the base of the modern web programming, core
+concept of frontend, backend, data storage... with a piece of devops.
+
+**Day purposes**
+
+โ๏ธ Setup a Go project.
+
+โ๏ธ Learn basics of Go.
+
+โ๏ธ Discover software development good practices.
+
+โ๏ธ Introduce you to design pattern, especially MVC.
+
+โ๏ธ Create an interactive application using your terminal.
+
+## Introduction
+
+### Requirements
+
+Go is a powerful language with many features and capabilities, you can
+manage any Go project from its [complete CLI](https://go.dev/doc/install).
+
+With it, you can build a go binary, download dependencies, format your code...
+If you are curious, you can [look at the CLI documentation](https://pkg.go.dev/cmd/go) ๐
+
+Start by [installing the CLI](https://go.dev/doc/install), you can verify that
+everything works using the command below:
+```shell
+# Version must be at least 1.16
+go version
+# go version go1.19.4 linux/amd64
+```
+
+> If you have any issue don't hesitate to ask the staff for help ๐
+
+### Why Go?
+
+Go is an open source programming language created and maintained by Google.
+It solves several problems of the modern software world thanks to its simplicity
+and incredible standard library. It's also really strong to build
+[microservices](https://www.encora.com/insights/building-microservices-with-golang-and-go-kit)
+and [software that required high level of performance](https://www.willowtreeapps.com/craft/the-pros-and-cons-of-programming-in-go).
+
+Go has many usage, you can write powerful cloud & networks, CLI,
+API or DevOps tools.
+Because it's a compiled language, it's really fast, much faster than [Javascript for instance](https://qvault.io/golang/node-js-vs-go/) ๐
+
+Here's an exhaustive list of Go killer features:
+- Easily solve complex concurrency issues with [go routine](https://gobyexample.com/goroutines).
+- Strongly statically typed
+- Amazing dependency management with [go module](https://medium.com/@adiach3nko/package-management-with-go-modules-the-pragmatic-guide-c831b4eaaf31)
+- Multi-paradigm from [OOP](https://www.toptal.com/go/golang-oop-tutorial) to [functional](https://medium.com/@geisonfgfg/functional-go-bc116f4c96a4)
+
+### Warp up
+
+Let's begin this pool with a simple warm up: [The Go Tour](https://go.dev/tour/welcome/1)
+This tour is a set of exercise to learn Go basics.
+
+You can also try the [Go Playground](https://go.dev/play/), a useful tool to test or share pieces of codes.
+
+You will also need a good IDE, we recommend [Visual Studio Code](https://code.visualstudio.com)
+or [GoLand](https://www.jetbrains.com/fr-fr/go/).
+
+In summary, here's a bunch of links that will be very useful during the pool:
+- [Go Docs](https://go.dev/doc/)
+- [Go Playground](https://go.dev/play/)
+- [Go Tour](https://go.dev/tour/list)
+- [Visual Studio Code Go plugin](https://code.visualstudio.com/docs/languages/go)
+- [GoLand](https://www.jetbrains.com/fr-fr/go/)
+- [Standard Library](https://pkg.go.dev/std)
+
+## Step 0 - Setup
+### ๐ Description:
+As usual, every exercise must be pushed to a git repository.
+
+To make it easier, we will use a GitHub classroom! Follow this [link](https://classroom.github.com/a/DoR-K1PO) to create your git repository.
+
+### ๐ Tasks:
+Then, you can clone your repository.
+
+```shell
+git clone git@github.com:PoC-Community/software-pool-days-{YOUR-GITHUB-USERNAME}.git
+```
+
+For each day, we will create a new folder. Start with the `day01`.
+
+```shell
+mkdir -p day01
+```
+
+Inside it, let's initialize a Go project
+
+```shell
+go mod init SoftwareGoDay1
+> go: creating new go.mod: module SoftwareGoDay1
+```
+
+You should see a [`go.mod`](https://faun.pub/understanding-go-mod-and-go-sum-5fd7ec9bcc34?gi=7a3186a145d6) file appear in your directory.
+
+You can now create your first go file: `main.go` ๐
+
+```go
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("You are ready to start the 2024 PoC software pool!")
+}
+```
+
+### ๐ Documentation:
+> ๐ก If you are curious about this, check the [fmt package documentation](https://pkg.go.dev/fmt)
+
+### โ๏ธ Validation:
+Let's execute it:
+```shell
+# Use `go run` to execute your program without building the binary
+go run SoftwareGoDay1 # Or go run ./main.go
+
+# You can also build and run it in separate command
+go build SoftwareGoDay1
+./SoftwareGoDay1
+
+# You should have the following output
+> You are ready to start the 2024 PoC software pool!
+```
+
+Before going further, do the [Go Tour](https://go.dev/tour/basics/1) and read
+the [package documentation](https://medium.com/rungo/everything-you-need-to-know-about-packages-in-go-b8bac62b74cc), those core concepts are important to understand the rest of the pool ๐ฏ
+
+## Step 1 - Hello World
+### ๐ Description:
+It's time to start coding! We will start with a simple `helloWorld` package.
+
+### ๐ Tasks:
+Let's create a folder `helloWorld` with a file `helloWorld.go` in it.
+
+```shell
+mkdir -p helloWorld
+```
+
+You will implement a function `HelloWorld` that will display `Hello World!`
+in your terminal.
+
+> Don't forget to add the correct package name at the top of `helloWorld.go` ๐
+
+Update the file `main.go` to call `HelloWorld`.
+### ๐ Documentation:
+> ๐ก Here's a couple of slides about [what is a good naming in Go](https://go.dev/talks/2014/names.slide#1).
+
+### โ๏ธ Validation:
+```shell
+go run SoftwareGoDay1
+
+# You should have the following output
+> Hello world!
+```
+
+## Step 2 - Loops, conditions, array and unit tests
+### ๐ Description:
+The purpose of this step is to use what you have learned during the [Go Tour](https://go.dev/tour/welcome/1) ๐
+
+Let's create a function to sort numbers, so we can cover useful concepts such as loops, conditions, arrays and tests ๐ฅณ
+
+### ๐ Tasks:
+Your function must:
+1. Sort a list in ascending order
+2. Remove odd numbers
+3. Format the result to return
+
+### Sort like a pro
+
+Create a new package `getEvenNumbers` with a file `getEvenNumbers.go`.
+
+```shell
+mkdir -p getEvenNumbers
+```
+
+Create a function `GetEvenNumbers` that will take an array of int.
+It must sort the array in ascending order and return a string that
+contains only pairs number in ascending order, split by a `-`.
+
+Update `main.go` to call `GetEvenNumbers` and display the result:
+```go
+array := []int{
+ 1,
+ 0,
+ 19,
+ 17,
+ 16,
+ 8,
+ 13,
+ 24,
+ }
+
+fmt.PrintLn(getEvenNumbers.GetEvenNumbers(array))
+```
+
+### โ๏ธ Validation:
+You should have the following result:
+```shell
+0 - 8 - 16 - 24
+```
+
+### Test like a pro ๐งช
+### ๐ Description:
+It's really important to correctly test your code, a code not tested can lead
+ to unpredictable bugs and the time lost to debug it could be avoided by creating some tests.
+
+
+### ๐ Documentation:
+To do so, Go provides a [built-in test package](https://pkg.go.dev/testing),
+with a [clean way to organize your tests](https://dave.cheney.net/2019/05/07/prefer-table-driven-tests) ๐ฅ
+
+Let's create a test file named `getEvenNumbers_test.go`.
+
+### ๐ Tasks:
+To make sure your `getSortedEvenNumbers` works as intended, you can write a test for each of these cases:
+- Only positive numbers
+- Only negative numbers
+- Mixed numbers
+
+### โ๏ธ Validation:
+You can then execute them with `go test`, which should produce a result similar to this one:
+```
+go test ./getEvenNumbers -v
+
+=== RUN TestGetEvenNumbersCasePositive
+--- PASS: TestGetEvenNumbersCasePositive (0.00s)
+=== RUN TestGetEvenNumbersCaseNegative
+--- PASS: TestGetEvenNumbersCaseNegative (0.00s)
+=== RUN TestGetEvenNumbersCasePositiveAndNegative
+--- PASS: TestGetEvenNumbersCasePositiveAndNegative (0.00s)
+PASS
+ok SoftwareGoDay1/getEvenNumbers 0.001s
+```
+
+## Step 3 - My name is ...
+### ๐ Description:
+Now it's time to learn how to read input from the terminal ๐คฉ
+
+### ๐ Tasks:
+Create a new package `whatIsYourName` with a file `whatIsYourName.go` and a function `WhatIsYourName` inside it.
+```shell
+mkdir -p whatIsYourName
+```
+
+This function must display a prompt in the terminal to ask a user
+to fill his name and retrieve it.
+
+### ๐ Documentation:
+To do so, you can use the [bufio](https://pkg.go.dev/bufio) and [os](https://pkg.go.dev/os) packages ๐
+
+### โ๏ธ Validation:
+You should end up with the following behavior:
+```shell
+What is your name ?
+# User fill input
+> Slim Shady
+
+# Display input
+Your name is Slim Shady
+```
+
+Don't forget to call it from `main.go` and [correctly manage errors](https://medium.com/gett-engineering/error-handling-in-go-53b8a7112d04).
+
+> ๐ก Display your errors using the [log package](https://pkg.go.dev/log)
+and [`fmt.Errorf`](https://pkg.go.dev/fmt#Errorf).
+
+### Testing time
+### ๐ Description:
+It's really hard to test I/O with unit test, but that's why functional tests exist!
+
+### ๐ Documentation:
+[Download them from GitHub](./resources/testWhatIsYourName.zip)
+and extract sources in your directory ๐
+
+### ๐ Tasks:
+Then, create a binary of your project using `go build`.
+
+### โ๏ธ Validation:
+You can now simply execute `testWhatIsYourName` to launch the tests of your function:
+```shell
+OK - TEST 1 PASSED
+OK - TEST 2 PASSED
+OK - TEST 3 PASSED
+```
+
+> Don't hesitate to add more tests and modify your program to make sure all of them pass ๐งช
+
+## Step 4 - Make it the cutest code that I have ever seen
+### ๐ Description:
+As we said in the introduction, Go come with great built-ins to help you
+during your development.
+
+### ๐ Documentation:
+One of these tools is [gofmt](https://pkg.go.dev/cmd/gofmt), a powerful formatting tool that will help you have standard coding style rules in your code.
+> Its really helpful on the format, but having a [clean code architecture](https://en.wikipedia.org/wiki/SOLID) is up to you ๐
+
+### ๐ Tasks:
+To use [gofmt](https://pkg.go.dev/cmd/gofmt), just launch `go fmt .` at the
+root of your module ๐
+
+You can also configure [VSCode](https://code.visualstudio.com/docs/languages/go#_formatting)
+or [GoLand](https://www.jetbrains.com/help/go/integration-with-go-tools.html#gofmt)
+to format your code on save.
+
+## Step 5 - Artists Book v1.0
+### ๐ Documentation:
+You are ready for a complex exercise. Let's create our first application!
+
+It will be a program that help you manage your favorite artists from your terminal.
+
+We will not code everything in one step, that would be too huge for this moment.
+
+โ ๏ธ Read the **whole** step before coding, it will help you understand
+what to do and how to do it
+
+### ๐ Tasks:
+Let's start with a simple implementation. The goal is to have a CLI similar to this one:
+```text
+Welcome into your Artists Book!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Leave
+
+# User tip input
+> 3
+
+Tip 1 or 2.
+
+# User tip input
+> 1
+
+Here's your favorite artists:
+-- 1 -- B2O
+-- 2 -- SCH
+-- 3 -- Laylow
+-- 4 -- Billie Eilish
+
+What do you want to do?
+1 - List my favorite artists
+2 - Leave
+
+# User tip input
+> 2
+
+See you!
+```
+
+### ๐ Documentation:
+To do this, we must build a program that follows a strong architecture.
+We will use one of the most popular: [MVC](https://www.calhoun.io/using-mvc-to-structure-go-web-applications/).
+
+MVC stands for **Model - View - Controller**. It's an architecture where your
+code logic is split into smaller parts to easily maintain and scale a project.
+
+We will now adapt MVC to our need, don't worry if we do not strictly follow the architecture.
+
+Here's a schema of your architecture:
+![Artists Book architecture](../../../.github/assets/software/day01/software_mvc.png)
+
+
+### ๐ Tasks:
+Let's code step by step ๐
+
+### Router
+
+Router corresponds to the entrypoint of your program and the main loop.
+It has different roles:
+- Display actions to user.
+- Catch the user input.
+- Call `controllers` to execute the action asked by the user.
+
+A good architecture also requires a good folder management in your code.
+Each _resource_ must be in its own package and with the `router` making the link
+between them.
+
+- Create a package `artistsBook` with a file `router.go` in it.
+- Create a function `Router` that will do the loop described in the example.
+> You are big boy/girl now, you got the keys to do it by yourself ๐ช
+- Update `main.go` to call `Router`.
+
+### Controllers
+
+A controller is in charge of the business logic that manages your resources.
+
+Its only purpose is to create the link between the function that manage your
+data storage (for now it will be a simple `JSON` file) and functions exposed
+to the user.
+
+- Create a package `controllers` in `artistsBook` folder.
+- Create a sub-package `artists` in it.
+- Create a file `display.go`
+- Write the function `DisplayAll` that controls the display of the user's favorite artists
+
+### Repositories
+
+A repository is responsible for all interactions with the data storage.
+
+- Create a package `repositories` in the `artistsBook` folder.
+- Create a sub-package `artists` in it.
+- Create a file `get.go`
+- Write the function `GetAll` that retrieves user's favorite artists
+
+### ๐ Documentation:
+> You will need the [os](https://pkg.go.dev/os) and [json](https://pkg.go.dev/encoding/json) packages to read a file (see more information below).
+
+### Views
+
+A view expose a list of functions to the user to make it interact with a resource.
+
+- Create a package `views` in `artistsBook` folder.
+- Create a sub-package `artists` in it.
+- Create a file `display.go`
+- Write the function `DisplayAll` that display the user's favorite artists in the terminal.
+
+### Models
+
+A model defines the type of the stored data.
+
+- Create a package `models` in `artistsBook` folder.
+- Create a sub-package `artist`
+- Create a file `artist.go` in it
+- Export a [struct](https://www.geeksforgeeks.org/structures-in-golang/)
+`Artist` that contains a field `name` of type `string`
+
+### Data
+
+Data defines your storage, it can be a database, an Excel file or whatever that
+can store data. Here, it will be a simple `JSON` file.
+
+### ๐ Documentation:
+> [JSON](https://en.wikipedia.org/wiki/JSON) stands for JavaScript Object Notation.
+> It's a standard like `CSV`, `XML` or `YAML` used to define a structured data.
+
+> We'll discover real databases tomorrow ๐
+
+- Create a directory `data` in the `artistsBook` folder.
+- Create the file `artists.json` with the following content :
+
+```json
+[
+ {
+ "name": "B2O"
+ },
+ {
+ "name": "SCH"
+ },
+ {
+ "name": "Laylow"
+ },
+ {
+ "name": "Billie Eilish"
+ }
+]
+```
+
+
+### โ๏ธ Validation:
+### Summary
+
+Finally, you should have the following architecture:
+
+```text
+artistsBook/
+ router.go
+ controllers/
+ artists/
+ display.go
+ repositories/
+ artists/
+ get.go
+ views/
+ artists/
+ display.go
+ models/
+ artist.go
+ data/
+ artists.json
+```
+
+This exercise may seems hard but if you write your code step by step, it will
+be a piece of cake ๐ฐ!
+
+## Step 6 - Artists Book v2.0
+### ๐ Description:
+You've built the base of your MVC architecture, it's time to improve it ๐
+
+For now, you can only read data, let's add operations to create, update or delete it.
+
+Those four primitive operations are mandatory to manage a resource in a data storage.
+
+### ๐ Documentation:
+They are usually called [CRUD](https://en.wikipedia.org/wiki/Create,_read,_update_and_delete),
+which stands for **CREATE - READ - UPDATE - DELETE**.
+
+### ๐ Tasks:
+Let's add the missing ones ๐
+
+### CREATE
+
+Update your codebase to allow a user to **add** a new artist to his list.
+
+#### Repository
+
+Add a file `create.go` in your artists repository that will contain
+the function `Create` to add an artist to the database.
+
+> โ ๏ธ You will need to write the whole `artists.json` file
+> Take care to not **lose data** when you rewrite the file.
+
+#### View
+
+- Create the file `ask.go` in the `views/artists` directory.
+- Write the function `AskName` that retrieve an artist's name from the terminal.
+
+> ๐ก You can copy code from the precedent step to win time
+
+#### Controller
+
+- Create the file `create.go` in `controllers/artists` directory.
+- Write the function `Create` that controls the artist addition.
+
+#### Routing
+
+Add the possibility to create an artist in `router.go`.
+
+#### Result
+
+You can code other functions to make your code works. For example, a function to
+display the artist name if it has been correctly added to the list.
+This function should be in the views, in `display.go` for example.
+
+
+### โ๏ธ Validation:
+
+You should have the following result:
+
+```text
+Welcome into your Artists Book!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Leave
+
+# User tip input
+> 2
+
+What's the artist's name?
+
+# User tip input
+> Bob Marley
+
+Bob Marley has been added to your favorite artists!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Leave
+
+# User tip input
+> 1
+
+Here's your favorite artists:
+-- 1 -- B2O
+-- 2 -- SCH
+-- 3 -- Laylow
+-- 4 -- Billie Eilish
+-- 5 -- Bob Marley
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Leave
+
+# User tip input
+> 2
+
+What's the artist's name?
+
+# User tip input
+> Bob Marley
+
+Bob Marley already exists!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Leave
+
+# User tip input
+> 3
+
+See you!
+```
+
+### UPDATE
+
+Update your application to allow the user to **update** an artist in his list.
+
+#### Repository
+
+Create the file `update.go` in your `repository/artists` folder.
+
+Add the function `Update` to modify an artist in the data storage.
+
+#### View
+
+Add the function `AskNewName` in your `views/artists` directory.
+
+> I'm sure you have understood the logic ๐ง
+
+#### Result
+
+Don't forget to update your `controller`, the `router` and add anything
+required to correctly update an artist.
+
+
+### โ๏ธ Validation:
+
+You should have a result similar to this one:
+
+```text
+Welcome into your Artists Book!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Leave
+
+# User tip input
+> 2
+
+What's the artist's name?
+
+# User tip input
+> Bob Marley
+
+Bob Marley has been added to your favorite artists!
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Update an artist in my favorite
+4 - Leave
+
+# User tip input
+> 3
+
+What's the name of the artist you want to update?
+
+# User tip input
+> unknown
+
+What will be the new name of unknown?
+
+# User tip input
+> Mac Miller
+
+unknown is not in your favorite list.
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Update an artist in my favorite
+4 - Leave
+
+# User tip input
+> 3
+
+What's the name of the artist you want to update?
+
+# User tip input
+> B20
+
+What will be the new name of unknown?
+
+# User tip input
+> Booba
+
+B2O has been successfully updated.
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Update an artist in my favorite
+4 - Leave
+
+# User tip input
+> 1
+
+Here's your favorite artists:
+-- 1 -- Booba
+-- 2 -- SCH
+-- 3 -- Laylow
+-- 4 -- Billie Eilish
+-- 5 -- Bob Marley
+
+What do you want to do?
+1 - List my favorite artists
+2 - Add an artist to my favorite
+3 - Update an artist in my favorite
+4 - Leave
+
+# User tip input
+> 4
+
+See you!
+```
+
+### DELETE
+
+Update your codebase to allow user to **remove** an artist from his list.
+
+It's up to you to find the best way to do it ๐
+
+## Step 7 - Artists Book v3.0
+### ๐ Description:
+You have implemented a complete MVC architecture, that's excellent ๐
+
+Only one thing is missing, our data is too basic, it only has a name.
+
+### ๐ Tasks:
+Let's add some fields by updating the `Artist` structure:
+- `id`: A [unique identifier](https://pkg.go.dev/github.com/aidarkhanov/nanoid) of type `string`
+- `top`: Best song, as a `string`
+- `fans`: `number` of fans
+- `listenedTime`: the amount of time you listened to this artist. It must be stored as a [`Time`](https://pkg.go.dev/time)
+
+>๐ก It's common to put a unique identifier when you store data, this way, you can easily distinguish them.
+
+You'll have to update all your codebase to support those new fields.
+
+> Don't worry, it's not that hard because you have build a strong architecture!
+> And if you struggle, remember that the staff is here to help you out ๐
+
+## Step 8 - Interface
+### ๐ Description:
+It's time to learn another important concept in Go: [interfaces](https://go.dev/tour/methods/9).
+
+To do so, we will do a simple example with geometric shapes ๐ฅ
+
+### ๐ Tasks:
+Let's create a package `geometricShape`.
+```shell
+mkdir -p geometricShape
+```
+
+### Definition
+
+Inside it, create an interface `GeometricShape` with a method `CalcPerimeter`.
+This method must have the following prototype:
+```go
+CalcPerimeter() float64
+```
+
+Create a function `CalcPerimeter` that will take this time an interface
+`GeometricShape` **as parameter** and return the result of the function
+`CalcPerimeter` called from the interface.
+
+Here's a prototype to help you:
+```go
+func CalcPerimeter(shape GeometricShape) float64
+```
+
+### Shapes
+
+Create the struct `Circle` with a field `Radius`.
+Create the struct `Rectangle` with a field `X` and `Y`.
+Create the struct `Triangle` with a field `X`, `Y` and `Z`.
+
+For each shape, implement the method `CalcPerimeter` that will return
+the parameter of the shape.
+
+Here's an example of prototype for a `Square`:
+```go
+func (square Square) CalcPerimeter() float64 {}
+```
+
+> ๐ก As you may have noticed, you can write a Go function in this order too (parameters before the function name)
+
+### Upgrade
+
+Update the file `main.go` to create 3 shapes:
+- A `Circle` with `radius`: `12.0`
+- A `Rectangle` with `X`: `2.0` and `Y`: `3.0`
+- A `Triangle` with `X`: `5.0`, `Y`: `2.0` and `Z`: `1.0`
+
+For each shape, display their perimeter using `CalcPerimeter` from the package `geometricShape`.
+
+Here's an example of output:
+```shell
+&{12} has a perimeter of 75.398224
+&{2 3} has a perimeter of 10.000000
+&{5 2 1} has a perimeter of 8.000000
+```
+
+As you can see, it's not clear... Let's use the power of interfaces to
+fix that ๐
+
+### ๐ Documentation:
+The package `fmt` call the method [`String`](https://go.dev/tour/methods/17) of given the given argument to display it properly.
+
+> So if our structures implement the method `String`, you can control the
+way it's displayed by `fmt` ๐
+
+Update your structures to print it correctly, here's an example of prototype
+with `Square`:
+```go
+func (square Square) String() string {}
+```
+
+Thanks to interfaces, you do not have to change anything in `main.go`,
+just rerun the program and appreciate the moment ๐
+
+### โ๏ธ Validation:
+```shell
+# You can configure `String()` to display this
+Circle: { radius = 12 } has a perimeter of 75.398224
+Rectangle: { X = 2, Y = 3 } has a perimeter of 10.000000
+Triangle: { X = 5, Y = 2, Z = 1 } has a perimeter of 8.000000
+```
+
+## Step 9 - Artists Book v4.0
+### ๐ Description:
+Since you now know interfaces why not use it in your MVC?
+
+### ๐ Tasks:
+The purpose is to update `Artist` to correctly display it with `fmt` package.
+
+In your `artist` model, implement the method `String`.
+
+You can also update `DisplayAll` from your `views` to use a simple `fmt.Printf`
+to display `Artist`.
+
+## Bonus
+
+First, congratulation! You've survived day 1 ๐
+
+Your MVC currently manages only one resource: `Artist`.
+
+You can create a new resources named `Music` containing the following data:
+- `id`: Resource unique identifier
+- `artist`: Owner of the music
+- `name`: Music's title
+- `listened`: Number of listening
+- `link`: A link to the music (E.g: `spotify`, `youtube`...)
+
+You're free to add any features to your application.
+
+You can maybe start by adding the **CRUD** for your new `Music` resource.
+
+### ๐ Documentation:
+## Additional resources
+
+- [Clean code in Go](https://github.com/Pungyeon/clean-go-article#Clean-Go)
+- [Go benchmark](https://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go)
+- [Go amazing project](https://github.com/avelino/awesome-go)
+- [Generics](https://go.dev/doc/tutorial/generics)
+- [Go routines](https://medium.com/technofunnel/understanding-golang-and-goroutines-72ac3c9a014d)
+- [Courses](https://www.calhoun.io)
+
+
+Organization
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> ๐ Don't hesitate to follow us on our different networks, and put a star ๐ on `PoC's` repositories.
diff --git a/Software/day01/Go/resources/testWhatIsYourName b/Software/day01/Go/resources/testWhatIsYourName
new file mode 100755
index 0000000..a8425c9
--- /dev/null
+++ b/Software/day01/Go/resources/testWhatIsYourName
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+# TEST FUNCTION
+
+testWhatIsYourName () {
+ if [ "$1" == "$2" ]
+ then
+ echo "OK - TEST $3 PASSED"
+ else
+ echo "KO - TEST $3 FAILED"
+ exit
+ fi
+}
+
+# TEST 1 - CASE "toto"
+
+output=$(echo toto | ./SoftwareGoDay1)
+
+answer="What is your name ?
+>
+Your name is toto"
+
+testWhatIsYourName "$output" "$answer" 1
+
+# TEST 2 - CASE "Slim Shady"
+
+output=$(echo Slim Shady | ./SoftwareGoDay1)
+
+answer="What is your name ?
+>
+Your name is Slim Shady"
+
+testWhatIsYourName "$output" "$answer" 2
+
+# TEST 3 - CASE no value
+
+output=$(echo | ./SoftwareGoDay1)
+
+answer="What is your name ?
+>
+Your name is "
+
+testWhatIsYourName "$output" "$answer" 3
diff --git a/Software/day01/Go/resources/testWhatIsYourName.zip b/Software/day01/Go/resources/testWhatIsYourName.zip
new file mode 100644
index 0000000..da8a2af
Binary files /dev/null and b/Software/day01/Go/resources/testWhatIsYourName.zip differ
diff --git a/Software/day01/Typescript/README.md b/Software/day01/Typescript/README.md
new file mode 100644
index 0000000..e6f16e2
--- /dev/null
+++ b/Software/day01/Typescript/README.md
@@ -0,0 +1,1208 @@
+# PoC Software Pool 2024 - Day 01 - Typescript
+
+Welcome to the Software pool 2024! ๐
+
+During this week, you will learn the base of the modern web programming, core
+concept of frontend, backend, data storage... with a piece of devops.
+
+**Day purposes**
+
+ Setup a NodeJS project.
+
+โ๏ธ Learn the basics of Typescript.
+
+โ๏ธ Discover software development good practices.
+
+โ๏ธ Introduce you to design pattern, especially MVC.
+
+โ๏ธ Create an interactive application using your terminal.
+
+## Introduction
+
+### Requirements
+
+Typescript run using a Javascript runtime called [NodeJS](https://nodejs.org/en/).
+To begin, install NodeJS using [nvm](https://github.com/nvm-sh/nvm).
+
+> It's really complex to manage Node versions manually, `nvm` exists to help you
+> manage it without any complexity.
+
+> If you have any issue don't hesitate to ask the staff for help ๐
+
+You can verify that node is correctly installed using the command below:
+
+```shell
+# Version must be at least >= 14
+node -v
+> v18.12.1
+```
+
+We will also need a package manager!
+Indeed, we don't need to totally start from scratch and reinvent the wheel for some things that are already working well, we will just import it.
+To do so, we will use [npm](https://www.npmjs.com) (which stands for _node package manager_ ๐)
+
+You should already have it installed on your computer if you used `nvm`.
+
+```shell
+# Get npm version
+npm -v
+> 8.19.2
+```
+
+### Why Typescript?
+
+You've probably already heard of [Javascript](https://developer.mozilla.org/en-US/docs/Web/JavaScript),
+which was very popular in the Software world, mostly for web development.
+At the beginning, it was created to make web page interactive, but now you can
+code almost everything in Javascript, even backend and standalone apps thanks to
+NodeJS ๐
+
+> If you can read that page, it's thanks to Javascript that will transform
+> markdown into human-readable text ๐
+
+However, Javascript is not perfect and many cons come with it. His
+weak type system, syntax liberty, `undefined` variables and the lack of rigor
+can lead to disasters.
+
+> An agnostic list of Javascript default is available [here](https://serokell.io/blog/why-typescript#typescript-vs.-javascript).
+
+Typescript solves recurrent problems of Javascript:
+- Typescript has a strong static type system.
+- Auto-completion is much faster and accurate.
+- Codebase are cleaner and better defined.
+- Objet oriented programming is easier in Typescript than Javascript.
+- Frameworks and applications are much more resilient and maintainable.
+
+โ ๏ธ Even if Typescript is better than Javascript, don't forget
+that Typescript is still a superset of Javascript, NodeJS can only
+understand Javascript so the final Typescript code will be transpiled in
+Javascript.
+The benefits of Typescript mostly comes during development.
+
+> If you are looking for a Typescript runtime, take a look at [Deno](https://deno.land).
+
+You've understood it, you'll learn both Typescript and Javascript today!
+
+### Warm up
+
+To begin with Typescript, it's important to understand its core concepts.
+
+Start by reading [Typescript for new programmer](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html).
+
+> You can also take few minute to read [Javascript building blocks](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks).
+
+Take your time to read some documentation during this day, it will help you to understand what
+you are doing when you will code.
+
+It's also recommended to read more about [types](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html),
+[functions](https://www.typescriptlang.org/docs/handbook/2/functions.html) and [objects](https://www.typescriptlang.org/docs/handbook/2/objects.html).
+
+> You can also use the official [Typescript playground](https://www.typescriptlang.org/play)
+to test and share pieces of code ๐
+
+Finally, it's important to use an IDE to help you.
+We recommend you [VSCode](https://code.visualstudio.com) or [WebStorm](https://www.jetbrains.com/webstorm/).
+
+> You can get a free JetBrains license using your [school account](https://console.bocal.org/#/login).
+
+## Step 0 - Setup
+### ๐ Description:
+As usual, every exercises must be pushed to a git repository.
+
+### ๐ Documentation:
+To make it easier, we will use a GitHub classroom! Follow this [link](https://classroom.github.com/a/DoR-K1PO) to create your git repository.
+
+### ๐ Tasks:
+You can then clone your repository.
+
+```shell
+git clone git@github.com:PoC-Community/software-pool-days-{YOUR-GITHUB-USERNAME}.git
+```
+
+For each day, we will create a new folder. Start with the `day01`.
+
+```shell
+mkdir -p day01
+```
+
+## Step 1 - Hello World
+### ๐ Description:
+It's time to start coding! We will start with a simple `Hello World` program.
+
+### Initialization
+
+First, we must create a new NodeJS project and setup Typescript inside it.
+
+### ๐ Tasks:
+To create you project, use this command from npm:
+
+```shell
+# Init your project
+npm init
+```
+
+It will create a file named `package.json`. You can consider it as a `Makefile`.
+It can store commands, but also register dependencies, version and special metadata related to your project.
+
+Now, install Typescript in your project
+
+```shell
+npm install -D typescript ts-node @types/node
+```
+
+If you open your `package.json`, you should see them in `devDependencies`.
+
+A new file named `package-lock.json` should also appear. Don't remove it, it's a
+file that list all dependencies required by your installed dependencies.
+You should also have a `node_modules` directory, it contains all the source files of those dependencies ๐
+
+> We use the `-D` flag to specify that our dependencies are only for development
+> purposes. Remember, our final code will be in Javascript, so we don't need those
+> dependencies in production.
+> Learn more about dependency management [here](https://stackoverflow.com/questions/18875674/whats-the-difference-between-dependencies-devdependencies-and-peerdependencies).
+
+โ ๏ธ Don't forget to create a [`.gitignore`](https://stackoverflow.com/questions/27850222/what-is-gitignore-exactly)
+to avoid pushing the `node_modules` directory.
+
+### Say hello
+
+You can now create a `src` directory and a file `helloWorld.ts` in it.
+
+> ๐ก Typescript files have the `ts` extension while Javascript files have the `js` extension.
+
+In this file, create a function `helloWorld` that will [display](https://nodejs.org/api/console.html)
+`Hello World!` in your terminal.
+
+Don't call it directly in this file, instead [export it](https://www.typescriptlang.org/docs/handbook/modules.html).
+
+### ๐ Documentation:
+### Where's the main?
+
+Now create a file `index.ts`, then import and call you `helloWorld` function inside it ๐
+
+> Typescript and Javascript don't have a concept of entrypoint like `C` or
+> `Go` have with the `main` function.
+> To keep code clean, it's common to create a `index.ts` that will be the
+> entrypoint of your program.
+> You can also use `index.ts` in subdirectories to aggregate imports.
+
+### Start program
+
+OK, now it's time to launch the project ๐ฅ
+
+For this, we will set up a `start` script.
+There is a section called `scripts` in your `package.json`, it's where you
+can define commands to manage your project. For example, you can run the code,
+run your tests, deploy infrastructure or whatever is required to manage your project.
+
+Write a script `start` that will execute the command `ts-node src/index.ts`.
+
+> ๐ก Using [`ts-node`](https://www.npmjs.com/package/ts-node) enables you to directly execute TypeScript on NodeJS without precompiling it
+
+### โ๏ธ Validation:
+You can run a script defined in your `package.json` using `npm run