diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..be07517
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,72 @@
+/* General Body Styles */
+body {
+ font-family: 'Inter', sans-serif;
+ background-color: #F9FAFB;
+ color: #111827;
+}
+
+/* Typography */
+h1, h2, h3, h4, h5, h6 {
+ font-family: 'Georgia', serif;
+}
+
+/* Hero Section */
+.hero {
+ background: linear-gradient(45deg, #4F46E5, #10B981);
+ color: white;
+ padding: 100px 0;
+}
+
+.hero h1 {
+ font-size: 3.5rem;
+ font-weight: bold;
+}
+
+.hero p {
+ font-size: 1.25rem;
+}
+
+/* Section Padding */
+.section {
+ padding: 80px 0;
+}
+
+/* Card Styles */
+.card {
+ border: none;
+ border-radius: 0.5rem;
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+}
+
+/* Button Styles */
+.btn-primary {
+ background-color: #4F46E5;
+ border-color: #4F46E5;
+ padding: 12px 24px;
+ border-radius: 0.5rem;
+}
+
+.btn-primary:hover {
+ background-color: #4338CA;
+ border-color: #4338CA;
+}
+
+.btn-secondary {
+ background-color: #10B981;
+ border-color: #10B981;
+ padding: 12px 24px;
+ border-radius: 0.5rem;
+}
+
+.btn-secondary:hover {
+ background-color: #059669;
+ border-color: #059669;
+}
+
+/* Contact Form */
+.contact-form {
+ background: white;
+ padding: 40px;
+ border-radius: 0.5rem;
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+}
\ No newline at end of file
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..855189d
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,10 @@
+// Smooth scrolling for anchor links
+document.querySelectorAll('a[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function (e) {
+ e.preventDefault();
+
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
+ behavior: 'smooth'
+ });
+ });
+});
\ No newline at end of file
diff --git a/contact.php b/contact.php
new file mode 100644
index 0000000..1a10d1f
--- /dev/null
+++ b/contact.php
@@ -0,0 +1,39 @@
+prepare($sql);
+ $stmt->execute([$name, $email, $message]);
+
+ $_SESSION['success'] = "Thank you for your message. We will get back to you shortly.";
+
+ // Optionally send an email notification
+ // require_once 'mail/MailService.php';
+ // MailService::sendContactMessage($name, $email, $message);
+
+ } catch (PDOException $e) {
+ // In a real app, you would log this error
+ $_SESSION['error'] = "Sorry, there was an error submitting your message. Please try again later.";
+ }
+
+ header("Location: /#contact");
+ exit();
+} else {
+ header("Location: /");
+ exit();
+}
\ No newline at end of file
diff --git a/db/config.php b/db/config.php
index bb98f7d..dab13ee 100644
--- a/db/config.php
+++ b/db/config.php
@@ -1,17 +1,40 @@
PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
- ]);
- }
- return $pdo;
+ static $pdo;
+ if ($pdo) {
+ return $pdo;
+ }
+ $dsn = 'mysql:host=' . DB_HOST . ';port=' . DB_PORT . ';dbname=' . DB_NAME . ';charset=utf8mb4';
+ $options = [
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
+ PDO::ATTR_EMULATE_PREPARES => false,
+ ];
+ try {
+ $pdo = new PDO($dsn, DB_USER, DB_PASSWORD, $options);
+ return $pdo;
+ } catch (PDOException $e) {
+ // In a real app, you would log this error and show a generic error page.
+ // For development, it's okay to show the error.
+ throw new PDOException($e->getMessage(), (int)$e->getCode());
+ }
}
+
+// Run migrations
+try {
+ $pdo = db();
+ $migration_files = glob(__DIR__ . '/migrations/*.sql');
+ foreach ($migration_files as $file) {
+ $sql = file_get_contents($file);
+ $pdo->exec($sql);
+ }
+} catch (PDOException $e) {
+ // Handle migration errors
+}
\ No newline at end of file
diff --git a/db/migrations/001_create_contact_submissions.sql b/db/migrations/001_create_contact_submissions.sql
new file mode 100644
index 0000000..0a0c46c
--- /dev/null
+++ b/db/migrations/001_create_contact_submissions.sql
@@ -0,0 +1,7 @@
+CREATE TABLE IF NOT EXISTS contact_submissions (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ name VARCHAR(255) NOT NULL,
+ email VARCHAR(255) NOT NULL,
+ message TEXT NOT NULL,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
\ No newline at end of file
diff --git a/index.php b/index.php
index 7205f3d..fc99edf 100644
--- a/index.php
+++ b/index.php
@@ -1,150 +1,159 @@
-
-
+
+
-
-
- New Style
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ Compliance AI - Your Partner in Automated Compliance
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
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) ?>
-
-
-
- Page updated: = htmlspecialchars($now) ?> (UTC)
-
+
+
+
+
+
+
+
+
+
+
Automate Your Compliance. Unleash Your Growth.
+
The intelligent platform that simplifies compliance, so you can focus on what matters.
+
Request a Demo
+
+
+
+
+
+
+
About Compliance AI
+
We are a team of experts dedicated to simplifying regulatory compliance through the power of artificial intelligence. Our platform helps you navigate the complex landscape of rules and regulations with ease.
+
+
+
+
+
+
+
See Our Platform in Action
+
+
+
+
+
+
Intuitive Dashboards
+
Visualize your compliance posture at a glance with our clean and informative dashboards.
+
+
+
+
+
+
+
+
Automated Reporting
+
Generate comprehensive compliance reports automatically, saving you time and effort.
+
+
+
+
+
+
+
+
+
+
+
What Our Clients Say
+
+
+
+
"Compliance AI has transformed how we handle regulatory requirements. It's a game-changer."
+
+
+
+
+
+
"The platform is incredibly user-friendly and the support team is top-notch."
+
+
+
+
+
+
"We've saved countless hours on compliance tasks since implementing Compliance AI."
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+