-
-
-
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/main.js b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/main.js
deleted file mode 100644
index c250261f7..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/main.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import { createApp } from 'vue'
-import { store } from './store'
-import App from './App.vue'
-
-import './assets/main.css'
-
-createApp(App).use(store).mount('#app')
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/services/BookingService.js b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/services/BookingService.js
deleted file mode 100644
index ddc4a8e88..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/services/BookingService.js
+++ /dev/null
@@ -1,27 +0,0 @@
-import axios from "axios";
-
-const DAPR_HOST = import.meta.env.VITE_DAPR_HOST || "http://localhost";
-const DAPR_HTTP_PORT = import.meta.env.VITE_DAPR_HTTP_PORT || "3000";
-
-let axiosConfig = {
- headers: {
- "dapr-app-id": "flightbooker-backend",
- },
-};
-
-export async function getAllSeats() {
- const response = await axios.get(
- `${DAPR_HOST}:${DAPR_HTTP_PORT}/api/seats`,
- axiosConfig
- );
- return response.data;
-}
-
-export async function bookSeat(data) {
- const response = await axios.post(
- `${DAPR_HOST}:${DAPR_HTTP_PORT}/api/seat`,
- data,
- axiosConfig
- );
- return response.data;
-}
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/store/index.js b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/store/index.js
deleted file mode 100644
index 9693eac70..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/src/store/index.js
+++ /dev/null
@@ -1,63 +0,0 @@
-import { bookSeat, getAllSeats } from "@/services/BookingService";
-import { createStore } from "vuex";
-
-// Create a new store instance.
-export const store = createStore({
- state: {
- selected: [],
- selectedCount: 0,
- seatList: [],
- },
- mutations: {
- SET_SEATS(state, seats) {
- state.seatList = seats;
- },
- BOOK_SEATS(state, seats) {
- state.seatList = seats;
- },
- ADD(state, payload) {
- state.selected = payload;
- },
- REMOVE(state, payload) {
- state.selected = payload;
- },
- COUNT(state, payload) {
- state.selectedCount += payload;
- },
- RESET_COUNT(state) {
- state.selectedCount = 0;
- },
- },
- actions: {
- getSeats({ commit }) {
- getAllSeats().then((seats) => {
- commit("SET_SEATS", seats);
- });
- },
- bookSeats({ commit }, payload) {
- bookSeat({ payload }).then((seats) => {
- commit("BOOK_SEATS", seats);
- });
- },
- add(context, payload) {
- const selected = context.state.selected;
- selected.push(payload);
- context.commit("ADD", selected);
- },
- remove(context, payload) {
- const selected = context.state.selected;
- for (var i = 0; i < selected.length; i++) {
- if (selected[i] == payload) {
- selected.splice(i, 1);
- }
- }
- context.commit("REMOVE", selected);
- },
- count(context, payload) {
- context.commit("COUNT", payload);
- },
- resetCount(context) {
- context.commit("RESET_COUNT");
- },
- },
-});
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.ps1 b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.ps1
deleted file mode 100644
index 50c055dca..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.ps1
+++ /dev/null
@@ -1 +0,0 @@
-dapr run --app-port 5173 --app-id flightbooker-frontend --app-protocol http --dapr-http-port 3501 -- npm run dev
\ No newline at end of file
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.sh b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.sh
deleted file mode 100644
index 286f754b6..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/start_frontend.sh
+++ /dev/null
@@ -1 +0,0 @@
-dapr run --app-port 5173 --app-id flightbooker-frontend --app-protocol http --dapr-http-port 3502 -- npm run dev
\ No newline at end of file
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/vite.config.js b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/vite.config.js
deleted file mode 100644
index d16f2761a..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Flightbooker/flightbooker-frontend/vite.config.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import { fileURLToPath, URL } from 'node:url'
-
-import { defineConfig } from 'vite'
-import vue from '@vitejs/plugin-vue'
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [vue()],
- server: {
- port: 5173
- },
- resolve: {
- alias: {
- '@': fileURLToPath(new URL('./src', import.meta.url))
- }
- }
-})
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/Challenge0-Env.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/Challenge0-Env.png
deleted file mode 100644
index a1ee51ffa..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/Challenge0-Env.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/README.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/README.md
deleted file mode 100644
index 8b1378917..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/README.md
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/booking-receipt.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/booking-receipt.png
deleted file mode 100644
index 08aa5c80f..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/booking-receipt.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-disabled.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-disabled.png
deleted file mode 100644
index d2a24e097..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-disabled.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-enabled.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-enabled.png
deleted file mode 100644
index 77400c4b1..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-enabled.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-service-invocation.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-service-invocation.png
deleted file mode 100644
index 525873c2c..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/dapr-service-invocation.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/flightbooker-frontend.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/flightbooker-frontend.png
deleted file mode 100644
index 20296a14a..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/flightbooker-frontend.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-basics.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-basics.png
deleted file mode 100644
index 97bc2c91b..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-basics.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-create.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-create.png
deleted file mode 100644
index e7d48402c..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-create.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-endpoint.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-endpoint.png
deleted file mode 100644
index 2b0a6d919..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-endpoint.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origin.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origin.png
deleted file mode 100644
index 6a4be7c87..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origin.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origingroup.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origingroup.png
deleted file mode 100644
index 21d77e9ef..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-origingroup.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-route.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-route.png
deleted file mode 100644
index 9cbeba1ca..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/frontdoor-route.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/github-actions.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/github-actions.png
deleted file mode 100644
index 30bc873e7..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/github-actions.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/ingress.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/ingress.png
deleted file mode 100644
index 2f97837d5..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/ingress.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/seatarray.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/seatarray.png
deleted file mode 100644
index 7b81efc17..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/seatarray.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architectur-reduced.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architectur-reduced.png
deleted file mode 100644
index 949458fc1..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architectur-reduced.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architecture.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architecture.png
deleted file mode 100644
index 436f429d1..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/serverless-architecture.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/tagged-docker-images.png b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/tagged-docker-images.png
deleted file mode 100644
index 63f8e77cf..000000000
Binary files a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Images/tagged-docker-images.png and /dev/null differ
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/README.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/README.md
deleted file mode 100644
index 67b52f114..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# Build a serverless microservices architecture
-
-## Introduction and context
-
-In this MicroHack we will build a serverless microservices architecture.
-
-Microservices are self-contained modules that handle independent services and can be developed, tested, deployed, scaled, and monitored independently.
-A serverless architecture is a model within cloud computing where the service provider manages the infrastructure, so developers don't have to worry about provisioning servers and can focus on the code itself.
-In summary, serverless microservices are independent modules deployed within a serverless infrastructure and run only when they are needed by the application which minimizes the costs.
-
-## Learning Objectives
-
-In this hack you will learn how to set up a whole microservice architecture in a small scenario in your own environment. Once we deployed the basic application, we will take a look at Azure Frontdoor and gain more insights, on how to monitor and manage your new setup.
-
-## Content and Challenges
-
-- Challenge 0: [Getting started and setting up the environment](./Challenges/00-Getting-started.md)
-- Challenge 1: [Build and push Microservice Images locally](./Challenges/01-Build-and-push-locally.md)
-- Challenge 2: [Deploy Microservices to Azure Container App](./Challenges/02-Azure-Container-Apps.md)
-- Challenge 3: [Deploy Microservices to Azure Container App via GitHub Actions](./Challenges/03-GitHub-Actions.md)
-- Challenge 4: [Integrate Azure Front Door](./Challenges/04-FrontDoor.md)
-
-## Prerequisites
-
-- VS Code
-- Azure Subscription
-- Azure CLI
-- Resource Group with contributor rights
-- GitHub with GitHub Actions
-- Docker [(with WSL2 backend)](https://docs.docker.com/desktop/windows/wsl/)
-
-## Solution Guide
-
-- Challenge 0: [Getting started and setting up the environment](./Solutionguide/00-Getting-started-solution.md)
-- Challenge 1: [Build and push Microservice Images locally](./Solutionguide/01-Build-and-push-locally-solution.md)
-- Challenge 2: [Deploy Microservices to Azure Container App](./Solutionguide/02-Azure-Container-Apps-solution.md)
-- Challenge 3: [Deploy Microservices to Azure Container App via GitHub Actions](./Solutionguide/03-GitHub-Actions-solution.md)
-- Challenge 4: [Integrate Azure Front Door](./Solutionguide/04-FrontDoor-solution.md)
-
-## Contributor
-
-Denis Kurkov
-Leonie Möller
-Maximilian Schaugg
-Rasmus Pranke
-Judith Högerl
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/00-Getting-started-solution.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/00-Getting-started-solution.md
deleted file mode 100644
index e08dbd7f5..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/00-Getting-started-solution.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# Exercise 0: Set up the Environment
-
-**[Home](../README.md)** - [Next Challenge Solution](01-Build-and-push-locally-solution.md)
-
-## Task 1: Set up an Azure Container Registry with admin account
-
-First, you have to create a [Resource Group](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-cli)
-
-The second step is to create a Container Registry. There are multiple options to achieve this, e.g. via the Azure portal or using the Azure CLI. In this challenge will use the Azure CLI:
-
-```
-az acr create `
- --resource-group $RESOURCE_GROUP `
- --name $ACR_NAME `
- --sku Basic `
- --admin-enabled true
-```
-
-The Resource Group and Container Registry names are global variables, you should set them in advance and replace them with the actual names.
-With the
-`--sku Basic`
-you are setting the basic permission concept.
-
-If you'd like to do it with the Azure Portal (or any other way) you can find a tutorial [here](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-get-started-portal?tabs=azure-cli).
-
-## Task 2: Create a Container App environment for multiple container apps in West Europe Region
-
-A Container App Environment like the Container Registry can be setup in several ways. Using the azure CLI it would be:
-
-```
-az containerapp env create `
- --name $ENVIRONMENT `
- --resource-group $RESOURCE_GROUP`
- --location "westeurope"
-```
-
-In this example we used $ACR_NAME=flightbookeracr,$RESOURCE_GROUP=ServerlessMicroservices and $ENVIRONMENT=Flightbooker-env but you are free to choose your own names.
-
-## Next Challenge
-
-Challenge 1: [Build and push Microservice Images locally](../Challenges/01-Build-and-push-locally.md)
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/01-Build-and-push-locally-solution.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/01-Build-and-push-locally-solution.md
deleted file mode 100644
index 63c72a1cb..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/01-Build-and-push-locally-solution.md
+++ /dev/null
@@ -1,180 +0,0 @@
-# Challenge 1: Build and push Microservice Images locally
-
-Duration: 25 minutes
-
-[Previous Challange Solution](./00-Getting-started-solution.md) - **[Home](../README.md)** - [Next Challenge Solution](./02-Azure-Container-Apps-solution.md)
-
-## Task 1: Clone the FlightBooker Folder from this Repository
-
-If you are using VS Code make sure you are connected to your gitHub account.
-Then you can use the terminal or the command palette to clone the repository.
-In order to optimize your workflow for the upcoming challenges create a new gitHub repository in your own account and copy only the ServerlessMicroservices or even only the Flightbooker folder into it. This way you can easily make changes and follow the Challenges.
-
-You can check if the services run locally on you Computer. Therefore, navigate to the frontend folder in your terminal and execute the command `npm install`. In a second terminal navigate to the backend folder and do the same. After that you should be able to run `npm run dev` in the frontend terminal and `npm start` in the backend terminal and open the application on your localhost. If this doesn't work, check if you have installed all dependencies.
-
-## Task 2: Create Docker images of the microservices
-
-The next step would be to add Docker files and build a Docker image for each microservice.
-You can find how to add Docker files and build images [here](https://learn.microsoft.com/en-us/azure/developer/javascript/tutorial/tutorial-vscode-docker-node/tutorial-vscode-docker-node-04) which is applied on our case below:
-
-The general process for the frontend and backend is the same. Make sure you have docker running, for example via Docker Desktop. If you work with VS Code also make sure you have the Docker extension. In VS Code open the Command Palette and type `add docker files to workspace` then select the Docker: Add Docker files to workspace command. In the following chose Node.js as the application platform, the respective package.json file, port 3000 for the backend (5173 for the frontend) and no Docker Compose file.
-This will create a Dockerfile and a .dockerignore. Now that you have the basic Dockerfiles you might have to make some changes so that the image created from them will be able to run. Here's how they could look like:
-
-### Docker image backend
-
-```
-FROM node:lts-alpine
-ENV NODE_ENV=production
-WORKDIR /usr/src/app
-COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
-RUN npm install --production --silent && mv node_modules ../
-COPY . .
-EXPOSE 443
-RUN chown -R node /usr/src/app
-USER node
-CMD ["npm", "start"]
-```
-
-### Docker image frontend
-
-```
-FROM node:lts-alpine
-WORKDIR /app
-ENV PATH /app/node_modules/.bin:$PATH
-COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
-RUN npm install
-COPY . .
-EXPOSE 5173
-CMD ["npm", "run", "dev"]
-```
-
-To build the Docker image again open the Command Palette and run `Docker Images: Build Image` and choose the right Dockerfile to build the image. This will open the Terminal with the `docker build`command. Once that's done you can go to the Docker Explorer and under Images your newly created Docker image will appear.
-
-### include tag
-
-To be able to push the image to the azure registry, you must tag it with the registry name. So open your VS Code's task file at `./vscode/tasks.json` and find the task with the type docker-build. Add the tag property, using your registry name (in this case flightbookeracr) in the `dockerBuild` property.
-
-```
-{
- "type": "docker-build",
- "label": "docker-build-backend",
- "platform": "node",
- "dockerBuild": {
- "dockerfile": "${workspaceFolder}/Dockerfile",
- "context": "${workspaceFolder}",
- "pull": true,
- "tag": "YOUR-REGISTRY-NAME.azurecr.io/flightbookerbackend:latest"
- }
-},
-```
-
-Since we need this for both frontend and backend we need this and all docker tasks twice (or you work in two different VS Code instances alternatively). If you only work with one this is how the tasks.json could look like:
-
-```
-{
- "version": "2.0.0",
- "tasks": [
- {
- "type": "docker-build",
- "label": "docker-build-frontend",
- "platform": "node",
- "dockerBuild": {
- "dockerfile": "${workspaceFolder}/Flightbooker/flightbooker-frontend/Dockerfile",
- "context": "${workspaceFolder}/Flightbooker/flightbooker-frontend",
- "pull": true,
- "tag": "flightbookeracr.azurecr.io/flightbookerfrontend:latest"
- },
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-frontend/package.json"
- }
- },
- {
- "type": "docker-run",
- "label": "docker-run: release",
- "dependsOn": [
- "docker-build-frontend"
- ],
- "platform": "node",
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-frontend/package.json"
- }
- },
- {
- "type": "docker-run",
- "label": "docker-run: debug",
- "dependsOn": [
- "docker-build-frontend"
- ],
- "dockerRun": {
- "env": {
- "DEBUG": "*",
- "NODE_ENV": "development"
- }
- },
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-frontend/package.json",
- "enableDebugging": true
- }
- },
-
- {
- "type": "docker-build",
- "label": "docker-build-backend",
- "platform": "node",
- "dockerBuild": {
- "dockerfile": "${workspaceFolder}/Flightbooker/flightbooker-backend/Dockerfile",
- "context": "${workspaceFolder}/Flightbooker/flightbooker-backend",
- "pull": true,
- "tag": "flightbookeracr.azurecr.io/flightbookerbackend:latest"
- },
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-backend/package.json"
- }
- },
- {
- "type": "docker-run",
- "label": "docker-run: release",
- "dependsOn": [
- "docker-build-backend"
- ],
- "platform": "node",
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-backend/package.json"
- }
- },
- {
- "type": "docker-run",
- "label": "docker-run: debug",
- "dependsOn": [
- "docker-build-backend"
- ],
- "dockerRun": {
- "env": {
- "DEBUG": "*",
- "NODE_ENV": "development"
- }
- },
- "node": {
- "package": "${workspaceFolder}/Flightbooker/flightbooker-backend/package.json",
- "enableDebugging": true
- }
- }
- ]
-}
-```
-
-Now we have to build both our images again. You can do this the same way as described above.
-
-## Task 3: Push images to your ACR
-
-The previous [link](https://learn.microsoft.com/en-us/azure/developer/javascript/tutorial/tutorial-vscode-docker-node/tutorial-vscode-docker-node-04) also includes a tutorial on how to push the image to a registry.
-
-In our Docker explorer there should now be two images with the registry name in front of them like `flightbookeracr.azurecr.io/flightbooker-backend`. If you expand them and right-click latest you can select Push and accept the tag which will push the images to your azure registry that you specified in the image name.
-
-If the output displays "Authentication required" run az acr login --name $REGISTRY_NAME in the terminal.
-
-Now you can check in your Azure portal if the Images got pushed to the registry by going to the registry and from there to Repositories under Services. Alternatively they should also be visible in the Docker extension explorer under the Registries node.
-
-## Next Challenge
-
-Challenge 2: [Deploy Microservices to Azure Container App](../Challenges/02-Azure-Container-Apps.md)
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/02-Azure-Container-Apps-solution.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/02-Azure-Container-Apps-solution.md
deleted file mode 100644
index c1bce2741..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/02-Azure-Container-Apps-solution.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# Challenge 2: Deploy Microservices to Azure Container App
-
-Duration: 20 minutes
-
-[Previous Challenge Solution](01-Build-and-push-locally-solution.md) - **[Home](../README.md)** - [Next Challenge Solution](03-GitHub-Actions-solution.md)
-
-## Task 1: Create Container Apps for each microservice with the images from the ACR
-
-You can create a container app with the Azure portal or with the Azure CLI.
-
-For the backend your CLI code should look something like this:
-
-```
-az containerapp create `
- --name flightbooker-backend `
- --resource-group $RESOURCE_GROUP `
- --environment $CONTAINERAPPS_ENVIRONMENT `
- --registry-server "$ACR_NAME.azurecr.io"`
- --image "$ACR_NAME.azurecr.io/flightbookerbackend:latest"`
- --target-port 3000`
- --ingress 'internal' `
- --query properties.configruation.ingress.fqdn
-```
-
-If you want to check if the backend is working properly you can also for now set the ingress to 'external' and change it later on.
-When the deployment of the backend is finished you will receive an application URL (FQDN) visible on the overview page of your new container app. If ingress is set to external you can open it with '/api/seats' appended and you will see the an array with the seats like this:
-
-
-
-Before you can deploy the frontend you need to take some additional steps since the frontend needs to be able to access the backend. Copy the FQDN of your backend Container App. In VS Code create a .env file in the flightbooker-frontend folder. There you create two environment variables:
-
-```
-VITE_DAPR_HOST='YOUR_BACKEND_FQDN'
-VITE_DAPR_HTTP_PORT='443'
-```
-
-This will connect the variables in the BookingService.js with your environment variables and instead of the localhost the frontend will access the backend container app.
-
-Now you can begin to deploy the frontend:
-
-```
-az containerapp create `
- --name flightbooker-frontend `
- --resource-group $RESOURCE_GROUP`
- --environment $CONTAINERAPPS_ENVIRONMENT`
- --image "$ACR_NAME.azurecr.io/flightbookerfrontend:latest"`
- --registry-server "$ACR_NAME.azurecr.io"`
- --env-vars VITE_DAPR_HOST=https://$(az containerapp show --resource-group $RESOURCE_GROUP --name flightbooker-backend --query properties.configuration.ingress.fqdn -o tsv) VITE_DAPR_HTTP_PORT=443`
- --target-port 5173`
- --ingress 'external' `
- --query properties.configruation.ingress.fqdn
-```
-
-Instead of the query in the VITE_DAPR_HOST you can also again just copy and paste your backend FQDN.
-
-In this case we want to have just one replica available so go to the Scale section und the Application tag in your newly deployed frontend and change the scale to 0-1.
-
-To deploy the apps with the portal, take a look [here](https://learn.microsoft.com/en-us/azure/container-apps/get-started-existing-container-image-portal?pivots=container-apps-private-registry).
-
-For a method using a service principal and key vault, you can find a solution [here](https://learn.microsoft.com/en-us/azure/container-instances/container-instances-using-azure-container-registry).
-
-After deployment you can copy the Application URL (FQDN) of the frontend container app and open it in your browser and you should be able to browse the frontend web app.
-
-## Task 2: Setup basic Security
-
-If you set up the backend ingress to "internal", it won't be reachable from the public internet but only from applications deployed within your Azure Container Environment.
-If you set it to external first you can change it under the Ingress tab in your backend container app to disable external ingress.
-
-
-
-## Task 3: Activate dapr in your Container Apps
-
-So far dapr was not enabled on the Azure Container Apps we provisioned. You can check this in the Portal and it should look something like this:
-
-
-To enable dapr for both Apps, run the following commands:
-
-```
-az containerapp dapr enable --name "flightbooker-backend" `
- --resource-group $RESOURCE_GROUP`
- --dapr-app-id "flightbooker-backend"`
- --dapr-app-port 443
-
-az containerapp dapr enable --name "flightbooker-frontend" `
- --resource-group $RESOURCE_GROUP`
- --dapr-app-id "flightbooker-frontend" `
- --dapr-app-port 5173
-```
-
-Or you can just enable it in the portal:
-
-
-
-For more dapr configurations look [here](https://learn.microsoft.com/en-us/azure/container-apps/dapr-overview?tabs=bicep1%2Cyaml).
-With this you should be able to access the Frontend Web App and call the backend API app using dapr. This is a [Service-to-Service invocation](https://learn.microsoft.com/en-us/azure/container-apps/microservices-dapr-service-invoke?pivots=nodejs).
-
-## Next Challenge
-
-Challenge 3: [Deploy Microservices to Azure Container App via GitHub Actions](../Challenges/03-GitHub-Actions.md)
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/03-GitHub-Actions-solution.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/03-GitHub-Actions-solution.md
deleted file mode 100644
index 97b2ddb75..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/03-GitHub-Actions-solution.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# Challenge 3: Deploy Microservices to Azure Container App via GitHub Actions
-
-Duration: 30 minutes
-
-[Previous Challenge Solution](02-Azure-Container-Apps-solution.md) - **[Home](../README.md)** - [Next Challenge Solution](04-FrontDoor-solution.md)
-
-## Task 1: Connect GitHub Actions to Azure
-
-From the Azure CLI run the following code:
-
-```
-az ad sp create-for-rbac `
- --name "FlightBookerSP"
- --role "contributor"
- --scopes "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP" `
- --sdk-auth
-```
-
-For $SUBSCRIPTION_ID and $RESOURCE_GROUP use your respectable ones.
-Copy the JSON output for the next step.
-
-To create a Service Principal you have to have owner role over the azure subscription you're working in. If you don't have that you will not be able to do the deployment automatically via GitHub actions but the build pipeline should still be possible.
-
-## Task 2: Create credentials for Azure
-
-To use Azure Credentials in GitHub Actions we need to create some secrets. In GitHub go to your repository and select "Settings", then "Secrets" and then "Actions". Create a "New Repository Secret".
-Name it for example "FLIGHTBOOKER_AZURE_CREDENTIALS" and paste the copied JSON.
-
-## Task 3: Create credentials for Azure Container Registry
-
-To be able to build, push and pull images with GitHub actions you will also need a secret for the ACR username and password.
-
-To get the username and password use the following command or look it up in the Azure Portal:
-`az acr credential show -n $ACR-NAME`
-
-
-Now create two more secrets like in Task 2, one named "FLIGHTBOOKER_REGISTRY_USERNAME" and the other "FLIGHTBOOKER_REGISTRY_PASSWORD" where you save the respective values.
-
-## Task 4: Create GitHub Action for Backend
-
-Create a new folder at your project root called ".github/workflows". Then create a .yaml file for your Backend build and deploy GitHub Action. You have to change all of "flightbookeracr" to the name you gave for $ACR_NAME and ServerlessMicroservices to the name you gave to $RESOURCE_GROUP.
-
-```
-name: flightbooker-backend deployment
-
-# When this action will be executed
-on:
- # Automatically trigger it when detected changes in repo
- push:
- branches:
- [ main ]
- paths:
- - 'FlightBooker/flightbooker-backend/**'
- - '.github/workflows/build-deploy-backend.yaml'
-
- # Allow mannually trigger
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout to the branch
- uses: actions/checkout@v2
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Log in to container registry
- uses: docker/login-action@v1
- with:
- registry: flightbooker.azurecr.io
- username: ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }}
- password: ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
-
- - name: Build and push container image to registry
- uses: azure/docker-login@v1
- with:
- login-server: flightbooker-azurecr.io
- username: ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }}
- password: ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
- - run: |
- cd Flightbooker/flightbooker-backend
- docker build . -t flightbookeracr.azurecr.io/flightbookerbackend:latest
- docker push flightbookeracr.azurecr.io/flightbookerbackend:latest
-
- deploy:
- runs-on: ubuntu-latest
- needs: build
-
- steps:
- - name: Azure Login
- uses: azure/actions/login@v1
- with:
- creds: ${{ secrets.FLIGHTBOOKER_AZURE_CREDENTIALS }}
-
-
- - name: Deploy to containerapp
- uses: azure/CLI@v1
- with:
- inlineScript: |
- az config set extension.use_dynamic_install=yes_without_prompt
- az containerapp registry set -n flightbooker-backend -g ServerlessMicroservices --server flightbookeracr.azurecr.io --username ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }} --password ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
- az containerapp update -n flightbooker-backend -g ServerlessMicroservices --image flightbookeracr.azurecr.io/flightbookerbackend:latest
-```
-
-## Task 5: Create GitHub Actions for Frontend
-
-We need to create a similar file for the frontend:
-
-```
-name: flightbooker-frontend deployment
-
-# When this action will be executed
-on:
- # Automatically trigger it when detected changes in repo
- push:
- branches:
- [ main ]
- paths:
- - 'Flightbooker/flightbooker-frontend/**'
- - '.github/workflows/build-deploy-frontend.yaml'
-
- # Allow mannually trigger
- workflow_dispatch:
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout to the branch
- uses: actions/checkout@v2
-
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v1
-
- - name: Log in to container registry
- uses: docker/login-action@v1
- with:
- registry: flightbookeracr.azurecr.io
- username: ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }}
- password: ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
-
- - name: Build and push container image to registry
- uses: azure/docker-login@v1
- with:
- login-server: flightbookeracr.azurecr.io
- username: ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }}
- password: ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
- - run: |
- cd Flightbooker/flightbooker-frontend
- docker build . -t flightbookeracr.azurecr.io/flightbookerfrontend:latest
- docker push flightbookeracr.azurecr.io/flightbookerfrontend:latest
-
-
- deploy:
- runs-on: ubuntu-latest
- needs: build
-
- steps:
- - name: Azure Login
- uses: azure/actions/login@v1
- with:
- creds: ${{ secrets.FLIGHTBOOKER_AZURE_CREDENTIALS }}
-
-
- - name: Deploy to containerapp
- uses: azure/CLI@v1
- with:
- inlineScript: |
- az config set extension.use_dynamic_install=yes_without_prompt
- az containerapp registry set -n flightbooker-frontend -g ServerlessMicroservices --server flightbookeracr.azurecr.io --username ${{ secrets.FLIGHTBOOKER_REGISTRY_USERNAME }} --password ${{ secrets.FLIGHTBOOKER_REGISTRY_PASSWORD }}
- az containerapp update -n flightbooker-frontend -g ServerlessMicroservices --image flightbookeracr.azurecr.io/flightbookerfrontend:latest
-```
-
-What exactly is happening in the build:
-
-- step 1: checks out the branch in our repository
-- step 2: sets up the docker builder so we are able to build the image later
-- step 3: logs in to our azure container registry
-- step 4: navigating to the right folder, then building the docker image and pushing it to the container registry
-
-What exactly is happening in the deploy:
-
-- step 1: logs into azure subscription using the credentials from the Service Principal stored in GitHub action secrets
-- step 2: Uses azure CLI to deploy/update the Azure Container App and deploy a new revision
-
-With this in place, you can commit your work and the GitHub action should be triggered, if all is configured correctly. You should also be able to see the results in the GitHub Actions workflows tab as well and the Azure Container App should be updated which you can see in the logs.
-
-## Next Challenge
-
-Challenge 4: [Integrate Azure Front Door](../Challenges/04-FrontDoor.md)
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/04-FrontDoor-solution.md b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/04-FrontDoor-solution.md
deleted file mode 100644
index 1b819d832..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/Solutionguide/04-FrontDoor-solution.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# Challenge 4: Integrate Azure Front Door
-
-Duration: 15 minutes
-
-[Previous Challenge Solution](03-GitHub-Actions-solution.md) - **[Home](../README.md)**
-
-## Task 1: Add Azure FrontDoor to your platform
-
-A quickstart for setting up Azure Front Door with Azure Portal, CLI, PowerShell or Bicep for your App Service you can find [here](https://learn.microsoft.com/en-us/azure/frontdoor/create-front-door-portal) under the "Create a Front Door for your application" section.
-
-1. Search for Front Door and CDN profiles and select Create. Since we already have an application you can select Custom create and continue.
-
-
-
-2. On the Basics tab enter the following information (or adjust them to your settings) and then select Next:Secrets. In the subscription field choose the subscription you also used to create the Microservices. Same goes for the resource group.
-
-
-
-3. We can skip the secrets step for now but optionally if you have and existing Key Vault in azure that you plan to use to bring your own certificate for a custom domain, then add a certificate but you can also add one in the management experience after creation of the FrontDoor.
-
-4. Go to Next:Endpoint and add an endpoint. You can give it a name you seem fit, it'll automatically create an endpoint hostname for you, then click "add".
-
-
-
-5. Then select Add a route to configure routing to your Web App origin. On the Add a route page, enter the following information:
-
-
-
-You will also want to create a new origin group like this:
-
-
-
-
-
-- Name: A name to identify the mapping between domains and origin group.
-- Domains: A domain name will be autogenerated for you but you can add a custom domain by selecting Add a new domain.
-- Patterns to match: Set the URLs this route will accept. The default is all URL paths.
-- Accepted protocols: Select the protocol the route will accept
-- Redirect: Enable to redirect all HTTP traffic to HTTPS endpoint
-- Origin group: Select Add a new origin group. Select a name and Add an origin. The origin host name is the FQDN of your frontend without "https://".
-- Forwarding protocol: The protocol that will be forwarded to the origin group. Here we will match the incoming requests to origin.
-- Caching: If you want to cache contetns closer to your users globally using Azure Front Door's edge POPs and the Microsoft network
-- Rules: Once deployed you can configure Rules to apply to your route.
-
-6. Select + Add a policy to apply a Web Application Firewall (WAF) policy to your domain.
-7. On the Add security policy page, give your policy a name then select your domain you want to associate it with. If you don't have a policy already just select Create New to create a new policy.
-8. Lastly you can go on Review + Create and then Create to deploy the Azure Front Door profile.
-
-When all steps are completed and the Azure Front Door profile is deployed you can access it and will find the endpoint hostname in the overview section. If you copy and past this into your browser you can now access the frontend through Azure Front Door endpoint.
-
-More information on the Creation of Front Door your can find [here](https://learn.microsoft.com/en-us/azure/frontdoor/create-front-door-portal).
-
-A guide to create Azure Front Door with the Azure CLI is linked [here](https://learn.microsoft.com/en-us/azure/frontdoor/create-front-door-cli).
-
-## Task 2: Monitor your application
-
-### Access Reports
-
-Azure Front Door analytics reports provide a built-in and all-around view of how your Azure Front Door behaves along with associated Web Application Firewall metrics. You can also take advantage of Access Logs to do further troubleshooting and debugging.
-
-Go to your Azure Front Door and in the navigation pane select Reports or Security under Analytics. You can choose between seven diferent dimensions:
-
-- Traffic by domain
-- Usage
-- Traffic by location
-- Cache
-- Top url
-- Top referrer
-- Top user agent
- After choosing the dimension, you can select different filters for a select time range, location, protocol or domains.
- To learn more about what the different dimensions tell you, look [here](https://learn.microsoft.com/en-us/azure/frontdoor/standard-premium/how-to-reports).
-
-### Metrics
-
-Azure Front Door is integrated with Azure Monitor and has 11 metrics to help monitor Azure Front Door in real-time to track, troubleshoot, and debug issues.
-
-From the Azure portal menu select All Resource and then your Front Door profile.
-Under Monitoring select Metrics and choose a metric to add. You can add filters and apply splitting to split data by different dimensions.
-
-[More on metrics](https://learn.microsoft.com/en-us/azure/frontdoor/standard-premium/how-to-monitor-metrics)
-
-### Protocols
-
-Select your Azure Front Door profile. In the profile, go to Monitoring, select Diagnostic Setting and select Add diagnostic setting.
-Enter a name for your Diagnostic setting, then select the log from FrontDoorAccessLog, FrontDoorHealthProbeLog and FrontDoorWebApplicationFirewallLog.
-You can select destination details to "Send to Log Analytics" and save.
-
-For more information about the different logs, go [here](https://learn.microsoft.com/en-us/azure/frontdoor/standard-premium/how-to-logs).
-
-# Finish
-
-Congratulations! You finished the MicroHack Serverless Microservices. We hope you had the chance to learn about Microservices and how to implement them using Azure. If you want to give feedback please dont hesitate to open an Issue on the repository or get in touch with one of us directly.
-
-Thank you for investing the time and see you next time!
diff --git a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/package-lock.json b/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/package-lock.json
deleted file mode 100644
index 360361dc0..000000000
--- a/03-Azure/01-01-App Innovation/03_ServerlessMicroservices/package-lock.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "name": "ServerlessMicroservices",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {}
-}
diff --git a/archive/02_OperationalizeAKSCluster.zip b/archive/02_OperationalizeAKSCluster.zip
new file mode 100644
index 000000000..959b27bb5
Binary files /dev/null and b/archive/02_OperationalizeAKSCluster.zip differ
diff --git a/archive/03_ServerlessMicroservices.zip b/archive/03_ServerlessMicroservices.zip
new file mode 100644
index 000000000..6d83cadb0
Binary files /dev/null and b/archive/03_ServerlessMicroservices.zip differ