diff --git a/assets/css/custom.css b/assets/css/custom.css
new file mode 100644
index 0000000..3096285
--- /dev/null
+++ b/assets/css/custom.css
@@ -0,0 +1,120 @@
+
+/* General Body Styles */
+body {
+ background-color: #F4F7F6;
+ font-family: 'Poppins', sans-serif;
+ color: #333;
+}
+
+/* Navbar */
+.navbar {
+ box-shadow: 0 2px 4px rgba(0,0,0,0.05);
+}
+
+.navbar-brand {
+ font-weight: 600;
+ color: #4A90E2 !important;
+}
+
+/* Main Container */
+.container {
+ padding-top: 2rem;
+ padding-bottom: 2rem;
+}
+
+/* Page Titles */
+h1, h2, h3, h4, h5, h6 {
+ font-weight: 600;
+ color: #333;
+}
+
+h1.page-title {
+ margin-bottom: 2rem;
+ color: #4A90E2;
+}
+
+
+/* Venue Card Styles */
+.venue-card {
+ background-color: #FFFFFF;
+ border: none;
+ border-radius: 8px;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
+ overflow: hidden;
+ margin-bottom: 1.5rem;
+}
+
+.venue-card:hover {
+ transform: translateY(-5px);
+ box-shadow: 0 8px 20px rgba(0, 0, 0, 0.12);
+}
+
+.venue-card .card-img-top {
+ border-top-left-radius: 8px;
+ border-top-right-radius: 8px;
+ aspect-ratio: 4 / 3;
+ object-fit: cover;
+}
+
+.venue-card .card-body {
+ padding: 1.5rem;
+}
+
+.venue-card .card-title {
+ font-size: 1.25rem;
+ font-weight: 600;
+ color: #4A90E2;
+ margin-bottom: 0.5rem;
+}
+
+.venue-card .card-text {
+ color: #555;
+ margin-bottom: 1rem;
+}
+
+.venue-card .features-list {
+ padding-left: 0;
+ list-style: none;
+ font-size: 0.9rem;
+ color: #666;
+}
+
+.venue-card .features-list li {
+ margin-bottom: 0.25rem;
+ display: flex;
+ align-items: center;
+}
+
+.venue-card .features-list i {
+ color: #50E3C2;
+ margin-right: 0.5rem;
+ font-size: 1rem;
+}
+
+.venue-card .badge {
+ font-size: 0.8rem;
+ font-weight: 500;
+ padding: 0.4em 0.8em;
+}
+
+.badge-available {
+ background-color: #50E3C2;
+ color: #fff;
+}
+
+.badge-booked {
+ background-color: #E9573F;
+ color: #fff;
+}
+
+/* Footer */
+.footer {
+ background-color: #fff;
+ padding: 2rem 0;
+ margin-top: 3rem;
+ border-top: 1px solid #e9ecef;
+ text-align: center;
+ font-size: 0.9rem;
+ color: #6c757d;
+}
diff --git a/assets/js/main.js b/assets/js/main.js
new file mode 100644
index 0000000..2fe99af
--- /dev/null
+++ b/assets/js/main.js
@@ -0,0 +1,4 @@
+// No custom JS needed for this step, but the file is here for future use.
+document.addEventListener('DOMContentLoaded', function () {
+ // Future interactive scripts will go here
+});
diff --git a/db/config.php b/db/config.php
index 961cbf1..4f1359c 100644
--- a/db/config.php
+++ b/db/config.php
@@ -6,12 +6,92 @@ define('DB_USER', 'app_34010');
define('DB_PASS', 'e689e56d-6f73-4dc6-b30b-aac78bb04979');
function db() {
- static $pdo;
- if (!$pdo) {
- $pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8mb4', DB_USER, DB_PASS, [
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
- ]);
- }
- return $pdo;
+ static $pdo;
+ if (!$pdo) {
+ $dsn = 'mysql:host=' . DB_HOST . ';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_PASS, $options);
+ } catch (PDOException $e) {
+ // In a real app, you'd log this error and show a generic message
+ // For this demo, we'll just die with the error.
+ die('Database connection failed: ' . $e->getMessage());
+ }
+ }
+ return $pdo;
}
+
+function seed_initial_data() {
+ $pdo = db();
+
+ // 1. Create venues table
+ $pdo->exec("
+ CREATE TABLE IF NOT EXISTS venues (
+ id INT AUTO_INCREMENT PRIMARY KEY,
+ name VARCHAR(255) NOT NULL,
+ capacity INT NOT NULL,
+ features TEXT,
+ image_url VARCHAR(255),
+ is_booked BOOLEAN DEFAULT FALSE,
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+ )
+ ");
+
+ // 2. Check if venues table is empty
+ $stmt = $pdo->query("SELECT COUNT(*) FROM venues");
+ if ($stmt->fetchColumn() == 0) {
+ // 3. Insert sample data
+ $venues = [
+ [
+ 'name' => 'The Grand Ballroom',
+ 'capacity' => 500,
+ 'features' => '["Full A/V setup", "On-site catering", "Valet parking"]',
+ 'image_url' => 'https://picsum.photos/seed/venue-1/800/600',
+ 'is_booked' => false
+ ],
+ [
+ 'name' => 'The Rustic Barn',
+ 'capacity' => 150,
+ 'features' => '["Scenic views", "Outdoor space", "Bridal suite"]',
+ 'image_url' => 'https://picsum.photos/seed/venue-2/800/600',
+ 'is_booked' => true
+ ],
+ [
+ 'name' => 'Cityscape Rooftop',
+ 'capacity' => 100,
+ 'features' => '["360° city views", "Modern decor", "Cocktail bar"]',
+ 'image_url' => 'https://picsum.photos/seed/venue-3/800/600',
+ 'is_booked' => false
+ ],
+ [
+ 'name' => 'The Garden Pavilion',
+ 'capacity' => 250,
+ 'features' => '["Lush gardens", "Glass walls", "Natural light"]',
+ 'image_url' => 'https://picsum.photos/seed/venue-4/800/600',
+ 'is_booked' => false
+ ]
+ ];
+
+ $stmt = $pdo->prepare(
+ "INSERT INTO venues (name, capacity, features, image_url, is_booked) VALUES (?, ?, ?, ?, ?)"
+ );
+
+ foreach ($venues as $venue) {
+ $stmt->execute([
+ $venue['name'],
+ $venue['capacity'],
+ $venue['features'],
+ $venue['image_url'],
+ $venue['is_booked']
+ ]);
+ }
+ }
+}
+
+// Run the seeder
+seed_initial_data();
+
diff --git a/index.php b/index.php
index e13ae95..d36d864 100644
--- a/index.php
+++ b/index.php
@@ -1,131 +1,124 @@
-
+
-
-
- New Style
-
-
-
-
+
+
+ EventManager - Your All-in-One Event Solution
+
+
+
+
+
+
-
-
-
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) ?>
-
-
-
+
+
+
+
+
+
+
+
+ Core Features
+ Everything you need, all in one place.
+
+
+
+
Venues
+
Manage all your event spaces.
+
+
+
+
Vendors
+
Organize caterers, decorators, etc.
+
+
+
+
Schedules
+
Plan your event minute-by-minute.
+
+
+
+
Budgets
+
Keep track of all your finances.
+
+
+
+
+
+
+
+
+
+
+
+
-
+