diff --git a/02_advanced/unterricht/tag19/02_csv-to-html/data/products.csv b/02_advanced/unterricht/tag19/02_csv-to-html/data/products.csv
new file mode 100644
index 0000000..5c138dd
--- /dev/null
+++ b/02_advanced/unterricht/tag19/02_csv-to-html/data/products.csv
@@ -0,0 +1,9 @@
+Code,Short Description,Tagline,Quantity,Price
+MUG0007,coffee mug with LCD level indicator,never again reach for the empty mug,20,49.90
+MUG0013,coffee mug with bluetooth-connected coffee grounds scanner for automatized fortune telling,put the smart into coffee reading,20,99.90
+OFF3145,pen with pre-warmed ink (tested on the South Pole),the pen is mightier than the cold,50,29.90
+COM1001,ambidextrous computer mouse,end the dictate of left and right,10,19.90
+COM0404,Easter egg themed webcam for your monitor,put an Easter egg on hardware too,20,149.90
+COM0001,Vulcan language vi cheatsheet,learn vi and Vulcan at the same time,3,9.90
+COM1536,Klingon language emacs cheatsheet,learn emacs and Klingon at the same time,50,9.90
+MOB0555,smartphone case with built-in screen,never miss a message,20,39.90
diff --git a/02_advanced/unterricht/tag19/02_csv-to-html/index.html b/02_advanced/unterricht/tag19/02_csv-to-html/index.html
new file mode 100644
index 0000000..8d14c6b
--- /dev/null
+++ b/02_advanced/unterricht/tag19/02_csv-to-html/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+ Products
+
+
+
+
+
+
+
+
diff --git a/02_advanced/unterricht/tag19/02_csv-to-html/index.js b/02_advanced/unterricht/tag19/02_csv-to-html/index.js
new file mode 100644
index 0000000..7f4a539
--- /dev/null
+++ b/02_advanced/unterricht/tag19/02_csv-to-html/index.js
@@ -0,0 +1,66 @@
+// const fs = require('node:fs') // commonjs
+import fs from 'node:fs'; // module - esm
+import color from 'chalk';
+
+// VARS ======================
+const STOCK_WARN_AMOUNT = 5;
+
+const data = fs.readFileSync('data/products.csv', 'utf-8');
+
+const products = data.split('\n');
+const headerAr = products.shift().split(/\s*,\s*/); // => [ 'Code', 'Short Description', 'Tagline', 'Quantity', 'Price' ]
+
+// Funktionen ================
+const recordToHtml = (row) => {
+ const [code, shortDescription, tagline, quantity, price] = row.split(/\s*,\s*/); //=> ['MUG0007','coffee mug with LCD level indicator','never again reach for the empty mug','20','49.90']
+
+ const html = `