Add website file management workflow and deployment script

This commit is contained in:
Local Server
2025-12-13 22:59:42 -06:00
parent f3c1157d7e
commit dce6460994
35 changed files with 8858 additions and 0 deletions

View File

@@ -0,0 +1,208 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Sky Art Shop - Scrapbooking, journaling, cardmaking, and collaging stationery." />
<title>Home - Sky Art Shop</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" />
<link rel="stylesheet" href="/assets/css/main.css" />
<link rel="stylesheet" href="/assets/css/shopping.css" />
<style>
/* Include navbar styles inline for now */
<?php include '/var/www/skyartshop/components/navbar.html'; ?>
</style>
</head>
<body>
<!-- Modern Navigation -->
<nav class="modern-navbar">
<div class="navbar-wrapper">
<div class="navbar-brand">
<a href="/home.html" class="brand-link">
<img src="/uploads/images/8ba675b9-c4e6-41e6-8f14-382b9ee1d019.jpg" alt="Sky Art Shop Logo" class="brand-logo" />
<span class="brand-name">Sky Art Shop</span>
</a>
</div>
<div class="navbar-menu">
<ul class="nav-menu-list">
<li class="nav-item"><a href="/home.html" class="nav-link active">Home</a></li>
<li class="nav-item"><a href="/shop.html" class="nav-link">Shop</a></li>
<li class="nav-item"><a href="/portfolio.html" class="nav-link">Portfolio</a></li>
<li class="nav-item"><a href="/about.html" class="nav-link">About</a></li>
<li class="nav-item"><a href="/blog.html" class="nav-link">Blog</a></li>
<li class="nav-item"><a href="/contact.html" class="nav-link">Contact</a></li>
</ul>
</div>
<div class="navbar-actions">
<div class="action-item wishlist-dropdown-wrapper">
<button class="action-btn" id="wishlistToggle" aria-label="Wishlist">
<i class="bi bi-heart"></i>
<span class="action-badge" id="wishlistCount">0</span>
</button>
<div class="action-dropdown wishlist-dropdown" id="wishlistPanel">
<div class="dropdown-head">
<h3>My Wishlist</h3>
<button class="dropdown-close" id="wishlistClose"><i class="bi bi-x-lg"></i></button>
</div>
<div class="dropdown-body" id="wishlistContent">
<p class="empty-state">Your wishlist is empty</p>
</div>
<div class="dropdown-foot">
<a href="/shop.html" class="btn-outline">Continue Shopping</a>
</div>
</div>
</div>
<div class="action-item cart-dropdown-wrapper">
<button class="action-btn" id="cartToggle" aria-label="Shopping Cart">
<i class="bi bi-cart3"></i>
<span class="action-badge" id="cartCount">0</span>
</button>
<div class="action-dropdown cart-dropdown" id="cartPanel">
<div class="dropdown-head">
<h3>Shopping Cart</h3>
<button class="dropdown-close" id="cartClose"><i class="bi bi-x-lg"></i></button>
</div>
<div class="dropdown-body" id="cartContent">
<p class="empty-state">Your cart is empty</p>
</div>
<div class="dropdown-foot">
<div class="cart-summary">
<span class="summary-label">Subtotal:</span>
<span class="summary-value" id="cartSubtotal">$0.00</span>
</div>
<a href="/checkout.html" class="btn-primary-full">Proceed to Checkout</a>
<a href="/shop.html" class="btn-text">Continue Shopping</a>
</div>
</div>
</div>
<button class="mobile-toggle" id="mobileMenuToggle" aria-label="Menu">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</button>
</div>
</div>
<div class="mobile-menu" id="mobileMenu">
<div class="mobile-menu-header">
<span class="mobile-brand">Sky Art Shop</span>
<button class="mobile-close" id="mobileMenuClose"><i class="bi bi-x-lg"></i></button>
</div>
<ul class="mobile-menu-list">
<li><a href="/home.html" class="mobile-link">Home</a></li>
<li><a href="/shop.html" class="mobile-link">Shop</a></li>
<li><a href="/portfolio.html" class="mobile-link">Portfolio</a></li>
<li><a href="/about.html" class="mobile-link">About</a></li>
<li><a href="/blog.html" class="mobile-link">Blog</a></li>
<li><a href="/contact.html" class="mobile-link">Contact</a></li>
</ul>
</div>
</nav>
<!-- Hero Section -->
<section class="hero" style="padding: 80px 24px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; text-align: center;">
<div class="hero-content" style="max-width: 800px; margin: 0 auto;">
<h2 style="font-size: 48px; font-weight: 700; margin-bottom: 16px; line-height: 1.2;">Welcome to Sky Art Shop</h2>
<p style="font-size: 20px; margin-bottom: 24px; opacity: 0.95;">Your destination for creative stationery and supplies</p>
<div class="hero-description" style="margin-bottom: 32px;">
<p style="font-size: 16px; opacity: 0.9; line-height: 1.6;">
Discover our curated collection of scrapbooking, journaling, cardmaking, and collaging supplies.
Express your creativity and bring your artistic vision to life.
</p>
</div>
<a href="/shop.html" class="btn" style="display: inline-block; padding: 14px 32px; background: white; color: #667eea; font-weight: 600; border-radius: 8px; text-decoration: none; transition: transform 0.2s;">Shop Now</a>
</div>
</section>
<!-- Featured Products Section -->
<section class="collection" style="padding: 80px 24px; background: #f9fafb;">
<div class="container" style="max-width: 1200px; margin: 0 auto;">
<h2 style="text-align: center; font-size: 36px; font-weight: 700; color: #1a1a1a; margin-bottom: 12px;">Featured Products</h2>
<p style="text-align: center; color: #6b7280; margin-bottom: 48px; font-size: 16px;">Discover our most popular items</p>
<div class="products-grid" id="featuredProducts" style="display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px; margin-bottom: 48px;">
<div style="text-align: center; padding: 40px; color: #9ca3af;">Loading products...</div>
</div>
<div style="text-align: center;">
<a href="/shop.html" class="btn" style="display: inline-block; padding: 12px 28px; background: #6b46c1; color: white; font-weight: 600; border-radius: 8px; text-decoration: none;">View All Products</a>
</div>
</div>
</section>
<!-- Footer -->
<footer style="padding: 40px 24px; background: #1f2937; color: white; text-align: center;">
<div style="max-width: 1200px; margin: 0 auto;">
<h3 style="font-size: 24px; font-weight: 600; margin-bottom: 16px;">Sky Art Shop</h3>
<p style="margin-bottom: 20px; color: #9ca3af;">Follow Us</p>
<div style="display: flex; gap: 16px; justify-content: center; margin-bottom: 24px;">
<a href="#" style="color: white; font-size: 24px;"><i class="bi bi-instagram"></i></a>
<a href="#" style="color: white; font-size: 24px;"><i class="bi bi-facebook"></i></a>
<a href="#" style="color: white; font-size: 24px;"><i class="bi bi-twitter"></i></a>
</div>
<p style="color: #9ca3af; font-size: 14px;">&copy; 2025 Sky Art Shop. All rights reserved.</p>
</div>
</footer>
<!-- Load Navbar Styles -->
<script>
// Inject navbar styles
const navStyles = document.createElement('style');
navStyles.textContent = `
${document.querySelector('style').textContent}
`;
</script>
<script src="/assets/js/shopping.js"></script>
<script>
// Load featured products
async function loadFeaturedProducts() {
try {
const response = await fetch('/api/products/featured?limit=4');
const data = await response.json();
const container = document.getElementById('featuredProducts');
if (data.success && data.products && data.products.length > 0) {
container.innerHTML = data.products.map(product => `
<div class="product-card" style="background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); transition: transform 0.2s, box-shadow 0.2s;">
<div class="product-image" style="position: relative; padding-top: 100%; overflow: hidden; background: #f3f4f6;">
<img src="${product.imageurl || '/assets/images/placeholder.jpg'}"
alt="${product.name}"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover;"
onerror="this.src='/assets/images/placeholder.jpg'" />
</div>
<div style="padding: 20px;">
<h3 style="font-size: 16px; font-weight: 600; color: #1a1a1a; margin: 0 0 8px 0; line-height: 1.4;">${product.name}</h3>
<p style="font-size: 20px; font-weight: 700; color: #6b46c1; margin: 0 0 16px 0;">$${parseFloat(product.price).toFixed(2)}</p>
<div style="display: flex; gap: 8px;">
<button onclick='shoppingManager.addToCart(${JSON.stringify(product)})'
style="flex: 1; padding: 10px; background: #6b46c1; color: white; border: none; border-radius: 6px; font-weight: 500; cursor: pointer; transition: background 0.2s;">
<i class="bi bi-cart-plus"></i> Add to Cart
</button>
<button onclick='shoppingManager.addToWishlist(${JSON.stringify(product)})'
style="width: 44px; padding: 10px; background: transparent; color: #6b46c1; border: 1px solid #6b46c1; border-radius: 6px; cursor: pointer; transition: all 0.2s;">
<i class="bi bi-heart"></i>
</button>
</div>
</div>
</div>
`).join('');
} else {
container.innerHTML = '<p style="text-align: center; color: #9ca3af; padding: 40px;">No products available</p>';
}
} catch (error) {
console.error('Error loading products:', error);
document.getElementById('featuredProducts').innerHTML = '<p style="text-align: center; color: #ef4444; padding: 40px;">Error loading products</p>';
}
}
// Load products on page load
loadFeaturedProducts();
</script>
</body>
</html>