diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..4fa5aec
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,49 @@
+/* General Body Styles */
+body {
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ background-color: #F8F9FA;
+ color: #212529;
+}
+
+/* Header Styles */
+.header-gradient {
+ background: linear-gradient(to right, #0B5ED7, #0D6EFD);
+ color: white;
+}
+
+.header-gradient .navbar-brand {
+ font-weight: 600;
+}
+
+/* Main container */
+.main-container {
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+}
+
+/* Card styles for dashboard elements */
+.card {
+ border: none;
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1);
+}
+
+/* Table styles */
+.table {
+ vertical-align: middle;
+}
+
+.table thead th {
+ font-weight: 600;
+ border-bottom-width: 2px;
+}
+
+/* Action buttons in table */
+.btn-action {
+ padding: 0.25rem 0.5rem;
+ font-size: 0.875rem;
+}
+
+/* Toast notifications */
+.toast-container {
+ z-index: 1090;
+}
\ No newline at end of file
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..d585e26
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,24 @@
+document.addEventListener('DOMContentLoaded', function () {
+ const scanBtn = document.getElementById('scanRepoBtn');
+
+ if (scanBtn) {
+ scanBtn.addEventListener('click', function (e) {
+ e.preventDefault();
+
+ const spinner = scanBtn.querySelector('.spinner-border');
+ const buttonText = scanBtn.querySelector('.button-text');
+ const buttonIcon = scanBtn.querySelector('.bi-search');
+
+ // Show spinner, hide icon, and update text
+ if (spinner) spinner.style.display = 'inline-block';
+ if (buttonIcon) buttonIcon.style.display = 'none';
+ if (buttonText) buttonText.textContent = 'Scanning...';
+
+ // Disable button
+ scanBtn.disabled = true;
+
+ // Redirect to trigger the scan and show success message
+ window.location.href = 'index.php?scan=success';
+ });
+ }
+});
\ No newline at end of file
diff --git a/db/migrations/001_create_users_table.sql b/db/migrations/001_create_users_table.sql
new file mode 100644
index 0000000..7ad1648
--- /dev/null
+++ b/db/migrations/001_create_users_table.sql
@@ -0,0 +1,6 @@
+CREATE TABLE IF NOT EXISTS `users` (
+ `id` INT AUTO_INCREMENT PRIMARY KEY,
+ `username` VARCHAR(255) NOT NULL UNIQUE,
+ `password` VARCHAR(255) NOT NULL,
+ `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
diff --git a/index.php b/index.php
index 7205f3d..c1dff83 100644
--- a/index.php
+++ b/index.php
@@ -1,150 +1,204 @@
getNamespaces(true);
+ $ectd_ns = isset($namespaces['ectd']) ? $namespaces['ectd'] : 'urn:ectd-org:ectd';
+ $xml->registerXPathNamespace('ectd', $ectd_ns);
+
+ // Example of fetching a value, adjust xpath as per actual XML structure
+ $result = $xml->xpath('//product-name'); // Simplified xpath
+ if (empty($result)) {
+ // Try another common path
+ $result = $xml->xpath('//admin/product-name');
+ }
+
+ if (!empty($result)) {
+ $productName = (string)$result[0];
+ }
+ }
+ } else {
+ $status = 'Validation Failed';
+ }
+ } else {
+ $status = 'Missing index.xml';
+ }
+
+ $sequences[] = [
+ 'id' => $item,
+ 'product' => $productName,
+ 'status' => $status,
+ 'last_scanned' => date('Y-m-d H:i:s'),
+ ];
+ }
+ }
+ return $sequences;
+}
+
+// Define the repository path and scan it.
+$repositoryPath = __DIR__ . '/repository';
+$sequences = scanRepository($repositoryPath);
+
+function getStatusBadgeClass($status) {
+ switch ($status) {
+ case 'Validated':
+ return 'bg-success';
+ case 'Validation Failed':
+ return 'bg-danger';
+ case 'Missing index.xml':
+ case 'Invalid XML':
+ return 'bg-danger';
+ case 'Pending Validation':
+ return 'bg-warning text-dark';
+ default:
+ return 'bg-secondary';
+ }
+}
?>
-
+
-
-
- New Style
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
= ($_SERVER['HTTP_HOST'] ?? '') === 'appwizzy.com' ? 'AppWizzy' : 'Flatlogic' ?> AI is collecting your requirements and applying the first changes.
-
This page will update automatically as the plan is implemented.
-
Runtime: PHP = htmlspecialchars($phpVersion) ?> — UTC = htmlspecialchars($now) ?>
-
-
-
+
+
+
+
+
+
+
+
Submissions Dashboard
+
+
+
+
+
+ Success! The repository has been scanned and the dashboard is updated.
+
+
+
+
+
+
+
+
+
+
+ | Sequence ID |
+ Product |
+ Status |
+ Last Scanned |
+ Actions |
+
+
+
+
+
+ |
+ |
+
+
+
+
+ |
+ |
+
+
+ View
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+