diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f797b12..5d80c94 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -224,4 +224,3 @@ deploy:production:
only:
- main
# when: manual
-
diff --git a/api/.gitkeep b/api/.gitkeep
index e69de29..8b13789 100644
--- a/api/.gitkeep
+++ b/api/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/config/.gitkeep b/config/.gitkeep
index e69de29..8b13789 100644
--- a/config/.gitkeep
+++ b/config/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/config/prod/.gitkeep b/config/prod/.gitkeep
index e69de29..8b13789 100644
--- a/config/prod/.gitkeep
+++ b/config/prod/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/config/staging/.gitkeep b/config/staging/.gitkeep
index e69de29..8b13789 100644
--- a/config/staging/.gitkeep
+++ b/config/staging/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/config/stagingdemo.txt b/config/stagingdemo.txt
new file mode 100755
index 0000000..11f1b23
--- /dev/null
+++ b/config/stagingdemo.txt
@@ -0,0 +1 @@
+Demo männ
\ No newline at end of file
diff --git a/debug/.gitkeep b/debug/.gitkeep
index e69de29..8b13789 100644
--- a/debug/.gitkeep
+++ b/debug/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/partials/.gitkeep b/partials/.gitkeep
index e69de29..8b13789 100644
--- a/partials/.gitkeep
+++ b/partials/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/partials/landing/.gitkeep b/partials/landing/.gitkeep
index e69de29..8b13789 100644
--- a/partials/landing/.gitkeep
+++ b/partials/landing/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/partials/structure/.gitkeep b/partials/structure/.gitkeep
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/partials/structure/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/.gitkeep b/public/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/public/api/_db.php b/public/api/_db.php
new file mode 100755
index 0000000..943fc92
--- /dev/null
+++ b/public/api/_db.php
@@ -0,0 +1,16 @@
+ PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
+];
+try {
+ $pdo = new PDO($dsn, $cfg['db_user'], $cfg['db_pass'], $options);
+} catch (PDOException $e) {
+ http_response_code(500);
+ header('Content-Type: application/json');
+ echo json_encode(['error' => 'DB connection failed']);
+ exit;
+}
diff --git a/public/api/materials.php b/public/api/materials.php
new file mode 100755
index 0000000..3b743ed
--- /dev/null
+++ b/public/api/materials.php
@@ -0,0 +1,6 @@
+query("SELECT * FROM materials WHERE is_active = 1 ORDER BY code");
+echo json_encode($stmt->fetchAll(), JSON_UNESCAPED_UNICODE);
diff --git a/public/api/printer-materials.php b/public/api/printer-materials.php
new file mode 100755
index 0000000..29ccf7f
--- /dev/null
+++ b/public/api/printer-materials.php
@@ -0,0 +1,35 @@
+ 'printer id missing']);
+ exit;
+}
+
+$printerStmt = $pdo->prepare("SELECT * FROM printers WHERE id = ?");
+$printerStmt->execute([$printer_id]);
+$printer = $printerStmt->fetch();
+if (!$printer) {
+ http_response_code(404);
+ echo json_encode(['error' => 'printer not found']);
+ exit;
+}
+
+$sql = "SELECT m.*, pms.support_level, pms.partial_reason, pms.extra_info
+ FROM materials m
+ LEFT JOIN printer_material_support pms
+ ON pms.material_id = m.id AND pms.printer_id = :pid
+ WHERE m.is_active = 1
+ ORDER BY m.code";
+$stmt = $pdo->prepare($sql);
+$stmt->execute([':pid' => $printer_id]);
+$materials = $stmt->fetchAll();
+
+echo json_encode([
+ 'printer' => $printer,
+ 'materials' => $materials
+], JSON_UNESCAPED_UNICODE);
diff --git a/public/api/printers.php b/public/api/printers.php
new file mode 100755
index 0000000..c560186
--- /dev/null
+++ b/public/api/printers.php
@@ -0,0 +1,6 @@
+query("SELECT * FROM printers WHERE is_active = 1 ORDER BY name");
+echo json_encode($stmt->fetchAll(), JSON_UNESCAPED_UNICODE);
diff --git a/public/assets/.gitkeep b/public/assets/.gitkeep
index e69de29..8b13789 100644
--- a/public/assets/.gitkeep
+++ b/public/assets/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/assets/bilder/.gitkeep b/public/assets/bilder/.gitkeep
index e69de29..8b13789 100644
--- a/public/assets/bilder/.gitkeep
+++ b/public/assets/bilder/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/assets/css/.gitkeep b/public/assets/css/.gitkeep
index e69de29..8b13789 100644
--- a/public/assets/css/.gitkeep
+++ b/public/assets/css/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/assets/fonts/.gitkeep b/public/assets/fonts/.gitkeep
index e69de29..8b13789 100644
--- a/public/assets/fonts/.gitkeep
+++ b/public/assets/fonts/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/assets/js/.gitkeep b/public/assets/js/.gitkeep
index e69de29..8b13789 100644
--- a/public/assets/js/.gitkeep
+++ b/public/assets/js/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/public/index.html b/public/index.html
new file mode 100755
index 0000000..9c9fe7a
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,266 @@
+
+
+
+
+ 3D-Druck Materialmatrix
+
+
+
+
+
+
+
+
+
3D-Druck Materialmatrix
+
Schnell prüfen, welche Filamente auf welchen Druckern laufen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Material
+
Eigenschaften
+
Tg °C
+
Düse
+
Platte
+
Zusatz
+
Anwendung
+
Kinder
+
Emission
+
+
+
+
+
+
+
+
+
+
+
+ Hinweis: Dieses Projekt wird privat betrieben und befindet sich im Aufbau.
+ Es sind noch nicht alle Drucker und Materialien eingetragen.
+ Alle Angaben erfolgen nach bestem Wissen, jedoch ohne Gewähr auf Vollständigkeit oder Richtigkeit.
+
Schnell prüfen, welche Filamente auf welchen Druckern laufen.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Material
+
Eigenschaften
+
Tg °C
+
Düse
+
Platte
+
Zusatz
+
Anwendung
+
Kinder
+
Emission
+
+
+
+
+
+
+
+
+
+
+
+ Hinweis: Dieses Projekt wird privat betrieben und befindet sich im Aufbau.
+ Es sind noch nicht alle Drucker und Materialien eingetragen.
+ Alle Angaben erfolgen nach bestem Wissen, jedoch ohne Gewähr auf Vollständigkeit oder Richtigkeit.
+
+
+
+
+
+
+
+
+
+
+HTML;
diff --git a/public/test.fff b/public/test.fff
new file mode 100644
index 0000000..8a65fe5
--- /dev/null
+++ b/public/test.fff
@@ -0,0 +1 @@
+dfdfassa
\ No newline at end of file
diff --git a/shape3d.code-workspace b/shape3d.code-workspace
new file mode 100644
index 0000000..876a149
--- /dev/null
+++ b/shape3d.code-workspace
@@ -0,0 +1,8 @@
+{
+ "folders": [
+ {
+ "path": "."
+ }
+ ],
+ "settings": {}
+}
\ No newline at end of file
diff --git a/src/.gitkeep b/src/.gitkeep
index e69de29..8b13789 100644
--- a/src/.gitkeep
+++ b/src/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..b493024
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1 @@
+# src\n\nTODO: Core backend/business logic.\n
diff --git a/src/config.php b/src/config.php
new file mode 100755
index 0000000..7458b08
--- /dev/null
+++ b/src/config.php
@@ -0,0 +1,10 @@
+ 'localhost',
+ 'db_name' => 'd0453540',
+ 'db_user' => 'd0453540',
+ 'db_pass' => 'P6jGRrSaX8QSiBMEJBL7',
+ 'db_charset' => 'utf8mb4',
+];
diff --git a/tools/.gitkeep b/tools/.gitkeep
index e69de29..8b13789 100644
--- a/tools/.gitkeep
+++ b/tools/.gitkeep
@@ -0,0 +1 @@
+