diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..84b2e8d
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,88 @@
+
+:root {
+ --bs-primary-rgb: 13, 110, 253;
+ --bs-secondary-rgb: 111, 66, 193;
+ --brand-light: #f8f9fa;
+ --brand-dark: #212529;
+ --brand-surface: #ffffff;
+ --bs-font-sans-serif: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
+ --bs-border-radius: 0.5rem;
+ --bs-border-radius-lg: 1rem;
+ --bs-border-radius-sm: 0.25rem;
+}
+
+body {
+ background-color: var(--brand-light);
+ color: var(--brand-dark);
+}
+
+.navbar {
+ transition: background-color 0.3s ease-in-out, padding 0.3s ease-in-out;
+}
+
+.navbar.scrolled {
+ background-color: var(--brand-surface);
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+}
+
+.section-py {
+ padding-top: 5rem;
+ padding-bottom: 5rem;
+}
+
+.hero {
+ background: linear-gradient(to bottom, rgba(13, 110, 253, 0.05), rgba(248, 249, 250, 0.05));
+ padding: 8rem 0;
+}
+
+.hero h1 {
+ font-weight: 700;
+}
+
+.btn-primary {
+ padding: 0.75rem 1.5rem;
+ font-weight: 600;
+}
+
+.btn-secondary {
+ padding: 0.75rem 1.5rem;
+ font-weight: 600;
+}
+
+.social-proof-logos img {
+ height: 40px;
+ filter: grayscale(100%);
+ opacity: 0.6;
+ transition: filter 0.3s, opacity 0.3s;
+}
+
+.social-proof-logos img:hover {
+ filter: grayscale(0%);
+ opacity: 1;
+}
+
+.testimonial-card {
+ border: none;
+ background-color: var(--brand-surface);
+}
+
+.testimonial-card .card-body {
+ padding: 2rem;
+}
+
+.testimonial-card img {
+ width: 80px;
+ height: 80px;
+ object-fit: cover;
+}
+
+.form-control:focus {
+ box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
+ border-color: rgba(var(--bs-primary-rgb), 0.5);
+}
+
+.footer {
+ background-color: var(--brand-surface);
+}
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..a17855a
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,69 @@
+
+document.addEventListener('DOMContentLoaded', function () {
+ // Navbar shrink on scroll
+ const navbar = document.querySelector('.navbar');
+ if (navbar) {
+ window.addEventListener('scroll', () => {
+ if (window.scrollY > 50) {
+ navbar.classList.add('scrolled');
+ } else {
+ navbar.classList.remove('scrolled');
+ }
+ });
+ }
+
+ // Smooth scroll for anchor links
+ document.querySelectorAll('a.smooth-scroll[href^="#"]').forEach(anchor => {
+ anchor.addEventListener('click', function (e) {
+ e.preventDefault();
+ const targetId = this.getAttribute('href');
+ const targetElement = document.querySelector(targetId);
+ if(targetElement){
+ targetElement.scrollIntoView({ behavior: 'smooth' });
+ }
+ });
+ });
+
+ // Pricing Toggle
+ const pricingToggle = document.getElementById('pricingToggle');
+ if(pricingToggle) {
+ pricingToggle.addEventListener('change', function () {
+ const isYearly = this.checked;
+ document.querySelectorAll('.price-monthly').forEach(p => p.style.display = isYearly ? 'none' : 'block');
+ document.querySelectorAll('.price-yearly').forEach(p => p.style.display = isYearly ? 'block' : 'none');
+ });
+ }
+
+ // Lead Form Validation
+ const leadForm = document.getElementById('leadForm');
+ if (leadForm) {
+ leadForm.addEventListener('submit', function (e) {
+ let isValid = true;
+ const name = document.getElementById('name');
+ const email = document.getElementById('email');
+ const message = document.getElementById('message');
+
+ // Reset validation
+ [name, email, message].forEach(el => {
+ el.classList.remove('is-invalid');
+ });
+
+ if (name.value.trim() === '') {
+ name.classList.add('is-invalid');
+ isValid = false;
+ }
+ if (email.value.trim() === '' || !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(email.value)) {
+ email.classList.add('is-invalid');
+ isValid = false;
+ }
+ if (message.value.trim() === '') {
+ message.classList.add('is-invalid');
+ isValid = false;
+ }
+
+ if (!isValid) {
+ e.preventDefault();
+ }
+ });
+ }
+});
diff --git a/assets/pasted-20250911-115131-dbff0810.png b/assets/pasted-20250911-115131-dbff0810.png
new file mode 100644
index 0000000..4239775
Binary files /dev/null and b/assets/pasted-20250911-115131-dbff0810.png differ
diff --git a/assets/pasted-20250911-120710-50ef238b.png b/assets/pasted-20250911-120710-50ef238b.png
new file mode 100644
index 0000000..f3c7c8c
Binary files /dev/null and b/assets/pasted-20250911-120710-50ef238b.png differ
diff --git a/db/migrations/001_create_leads_table.sql b/db/migrations/001_create_leads_table.sql
new file mode 100644
index 0000000..2637aa4
--- /dev/null
+++ b/db/migrations/001_create_leads_table.sql
@@ -0,0 +1,8 @@
+-- Create leads table
+CREATE TABLE IF NOT EXISTS leads (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ name VARCHAR(255) NOT NULL,
+ email VARCHAR(255) NOT NULL,
+ message TEXT,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+);
diff --git a/index.php b/index.php
index e13ae95..54222bc 100644
--- a/index.php
+++ b/index.php
@@ -1,131 +1,395 @@
';
+var_dump(require 'mail/config.php');
+echo '';
+$form_message = '';
+$form_error = '';
-$phpVersion = PHP_VERSION;
-$now = date('Y-m-d H:i:s');
+if ($_SERVER["REQUEST_METHOD"] == "POST") {
+ require_once 'db/config.php';
+ require_once 'mail/MailService.php';
+
+ $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
+ $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
+ $message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING);
+
+ if (empty($name) || empty($email) || empty($message) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
+ $form_error = "Please fill out all fields with valid information.";
+ } else {
+ try {
+ $pdo = db();
+ $stmt = $pdo->prepare("INSERT INTO leads (name, email, message) VALUES (?, ?, ?)");
+ $stmt->execute([$name, $email, $message]);
+
+ $mailResult = MailService::sendContactMessage($name, $email, $message);
+
+ if ($mailResult['success']) {
+ $form_message = "Thank you for your message! We will get back to you shortly.";
+ } else {
+ $form_error = "Sorry, there was an error sending your message. Please try again later.";
+ // Optionally log the detailed error: error_log($mailResult['error']);
+ }
+ } catch (PDOException $e) {
+ $form_error = "Sorry, there was a database error. Please try again later.";
+ // Optionally log the detailed error: error_log($e->getMessage());
+ }
+ }
+}
?>
-
+
-
-
- New Style
-
-
-
-
+
+
+ Nimbus - Streamline Your Success
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
Analyzing your requirements and generating your website…
-
- Loading…
-
-
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) ?>
-
-
-
+
+
+
+
+
+
+
+
+
+
+
Streamline Your Success.
+
Nimbus is the all-in-one platform to automate workflows, manage projects, and scale your business.
+
Get Started Free
+
Watch Demo
+
+
+

+
+
+
+
+
+
+
TRUSTED BY LEADING COMPANIES WORLDWIDE
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
Everything you need, nothing you don't.
+
Focus on what matters with our core features.
+
+
+
+
+
+
Automated Workflows
+
Set up triggers and actions to automate repetitive tasks and save countless hours.
+
+
+
+
+
+
Project Management
+
Visualize your progress with kanban boards, task lists, and team assignments.
+
+
+
+
+
+
Team Collaboration
+
Communicate seamlessly with integrated chat, file sharing, and real-time updates.
+
+
+
+
+
+
+
+
+
+
+
Loved by teams everywhere
+
+
+
+
+
+

+
"Nimbus transformed how we manage projects. We're more organized and efficient than ever before."
+
Alex Johnson
+
CEO, Innovate Inc.
+
+
+
+
+
+
+

+
"The automation features are a game-changer. We've saved at least 10 hours per week."
+
Samantha Bee
+
Marketing Director, Creative Co.
+
+
+
+
+
+
+

+
"The user interface is so intuitive. My team was able to get started with minimal training."
+
David Chen
+
Head of Operations, Logistics Pro
+
+
+
+
+
+
+
+
+
+
+
+
Find the right plan for you
+
+
+
+
+
+
+
+
+
+
+
+
Basic
+
+ $29
+ / month
+
+
+ $278
+ / year
+
+
+ - Up to 5 users
+ - Core Features
+ - 10GB Storage
+ - Community Support
+
+
Choose Plan
+
+
+
+
+
+
+
+
+
Pro
+
+ $79
+ / month
+
+
+ $758
+ / year
+
+
+ - Up to 25 users
+ - Advanced Features
+ - 100GB Storage
+ - Priority Support
+
+
Choose Plan
+
+
+
+
+
+
+
+
Enterprise
+
+ Custom
+
+
+ Custom
+
+
+ - Unlimited users
+ - Dedicated Infrastructure
+ - Unlimited Storage
+ - 24/7 Dedicated Support
+
+
Contact Us
+
+
+
+
+
+
+
+
+
+
+
+
Frequently Asked Questions
+
+
+
+
+
+
+
+
+ Yes, we offer a 14-day free trial on our Pro plan. No credit card required.
+
+
+
+
+
+
+
+ Absolutely. You can upgrade, downgrade, or cancel your plan at any time from your account settings.
+
+
+
+
+
+
+
+ We accept all major credit cards, including Visa, Mastercard, and American Express. For Enterprise plans, we also support invoicing.
+
+
+
+
+
+
+
+ Data security is our top priority. We use industry-standard encryption and security practices to keep your data safe.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
TRUSTED BY LEADING COMPANIES WORLDWIDE
+