Initial version

This commit is contained in:
Flatlogic Bot 2025-09-08 12:59:49 +00:00
commit 262b949578
6 changed files with 419 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
node_modules/
*/node_modules/
*/build/

18
.htaccess Normal file
View File

@ -0,0 +1,18 @@
DirectoryIndex index.php index.html
Options -Indexes
Options -MultiViews
RewriteEngine On
# 0) Serve existing files/directories as-is
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# 1) Internal map: /page or /page/ -> /page.php (if such PHP file exists)
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
# 2) Optional: strip trailing slash for non-directories (keeps .php links working)
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [R=301,L]

123
assets/css/custom.css Normal file
View File

@ -0,0 +1,123 @@
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;600;700&family=Lato:wght@400;700&display=swap');
:root {
--primary-color: #4A2E2A;
--secondary-color: #C8A47E;
--bg-color: #FDFBF8;
--surface-color: #FFFFFF;
--text-color: #333;
--heading-font: 'Poppins', sans-serif;
--body-font: 'Lato', sans-serif;
--border-radius: 0.5rem;
}
body {
font-family: var(--body-font);
background-color: var(--bg-color);
color: var(--text-color);
}
h1, h2, h3, h4, h5, h6 {
font-family: var(--heading-font);
font-weight: 600;
color: var(--primary-color);
}
.navbar {
transition: all 0.3s ease-in-out;
}
.navbar-scrolled {
background-color: rgba(255, 255, 255, 0.95);
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.hero {
background: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)), url('https://picsum.photos/1600/900') no-repeat center center;
background-size: cover;
color: white;
padding: 12rem 0;
}
.hero h1 {
font-size: 3.5rem;
font-weight: 700;
color: white;
}
.hero p {
font-size: 1.25rem;
}
.btn-primary {
background-color: var(--primary-color);
border-color: var(--primary-color);
border-radius: var(--border-radius);
padding: 0.75rem 1.5rem;
font-weight: 600;
transition: background-color 0.3s;
}
.btn-primary:hover {
background-color: #6D4C41;
border-color: #6D4C41;
}
.btn-secondary {
background-color: transparent;
border-color: var(--secondary-color);
color: var(--secondary-color);
border-radius: var(--border-radius);
padding: 0.75rem 1.5rem;
font-weight: 600;
}
.hero .btn-secondary {
color: white;
border-color: white;
}
.hero .btn-secondary:hover {
background-color: white;
color: var(--primary-color);
}
.section-icon {
font-size: 2.5rem;
color: var(--primary-color);
}
.testimonial-card {
background-color: var(--surface-color);
border: 1px solid #eee;
border-radius: var(--border-radius);
padding: 2rem;
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}
.testimonial-card img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
}
.form-control:focus {
box-shadow: 0 0 0 0.25rem rgba(74, 46, 42, 0.25);
border-color: var(--secondary-color);
}
footer {
background-color: var(--primary-color);
color: var(--bg-color);
}
footer a {
color: var(--secondary-color);
text-decoration: none;
}
footer a:hover {
color: white;
}

60
assets/js/main.js Normal file
View File

@ -0,0 +1,60 @@
document.addEventListener('DOMContentLoaded', function () {
const navbar = document.querySelector('.navbar');
const contactForm = document.getElementById('contactForm');
// Navbar shrink on scroll
window.addEventListener('scroll', () => {
if (window.scrollY > 50) {
navbar.classList.add('navbar-scrolled');
} else {
navbar.classList.remove('navbar-scrolled');
}
});
// 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'
});
});
});
// Basic client-side form validation
if (contactForm) {
contactForm.addEventListener('submit', function(e) {
e.preventDefault();
let isValid = true;
const name = document.getElementById('name');
const email = document.getElementById('email');
const message = document.getElementById('message');
// Reset states
[name, email, message].forEach(f => {
f.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) {
// On a real site, you'd submit this via AJAX.
// For this demo, we'll just show an alert.
alert('Thank you for your message! We will get back to you soon.');
contactForm.reset();
}
});
}
});

17
db/config.php Normal file
View File

@ -0,0 +1,17 @@
<?php
// Generated by setup_mariadb_project.sh — edit as needed.
define('DB_HOST', '127.0.0.1');
define('DB_NAME', 'app_33909');
define('DB_USER', 'app_33909');
define('DB_PASS', '95991822-02b6-4e5e-91c2-d4e0bf7231d5');
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;
}

198
index.php Normal file
View File

@ -0,0 +1,198 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>BrewFlow - Manage Your Coffee Business</title>
<!-- Bootstrap 5 CDN -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Bootstrap Icons CDN -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<!-- Custom CSS -->
<link rel="stylesheet" href="assets/css/custom.css">
</head>
<body>
<!-- Navbar -->
<nav class="navbar navbar-expand-lg fixed-top navbar-dark">
<div class="container">
<a class="navbar-brand fw-bold" href="#">BrewFlow</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="#features">Features</a></li>
<li class="nav-item"><a class="nav-link" href="#testimonials">Testimonials</a></li>
<li class="nav-item"><a class="nav-link" href="#contact">Contact</a></li>
<li class="nav-item ms-lg-3"><a class="btn btn-primary" href="#contact">Get Started</a></li>
</ul>
</div>
</div>
</nav>
<!-- Hero Section -->
<header id="home" class="hero text-center text-white">
<div class="container">
<h1 class="display-4 fw-bold">Manage Your Coffee Empire, Seamlessly.</h1>
<p class="lead my-4">The ultimate toolkit for your online coffee business. From bean to cup, we've got you covered.</p>
<a href="#contact" class="btn btn-primary btn-lg mx-2">Start Free Trial</a>
<a href="#features" class="btn btn-secondary btn-lg mx-2">See Features</a>
</div>
</header>
<!-- Features Section -->
<section id="features" class="py-5">
<div class="container text-center">
<h2 class="mb-5">Everything You Need to Succeed</h2>
<div class="row">
<div class="col-md-4 mb-4">
<i class="bi bi-cup-hot section-icon mb-3"></i>
<h4>Blend Management</h4>
<p>Perfect your coffee offerings. Manage inventory, pricing, and stock levels with ease.</p>
</div>
<div class="col-md-4 mb-4">
<i class="bi bi-box-seam section-icon mb-3"></i>
<h4>Order Tracking</h4>
<p>From grind to doorstep. Oversee every customer order in one centralized system.</p>
</div>
<div class="col-md-4 mb-4">
<i class="bi bi-people section-icon mb-3"></i>
<h4>Customer Insights</h4>
<p>Know your customers. Keep a detailed database with order history and preferences.</p>
</div>
</div>
</div>
</section>
<!-- Value Section -->
<section id="value" class="py-5 bg-light">
<div class="container">
<div class="row align-items-center">
<div class="col-md-6 mb-4 mb-md-0">
<img src="https://picsum.photos/600/400" class="img-fluid rounded shadow" alt="A close-up of various coffee beans in rustic bowls.">
</div>
<div class="col-md-6">
<h2>Data-Driven Decisions to Boost Your Sales</h2>
<p class="lead">Our powerful reporting tools give you real-time analytics on sales trends and customer behavior. Stop guessing and start growing your coffee business with actionable insights.</p>
<a href="#contact" class="btn btn-primary">Learn More</a>
</div>
</div>
</div>
</section>
<!-- Testimonials Section -->
<section id="testimonials" class="py-5">
<div class="container text-center">
<h2 class="mb-5">Loved by Coffee Entrepreneurs</h2>
<div class="row">
<div class="col-md-4 mb-4">
<div class="testimonial-card">
<img src="https://picsum.photos/96/96?random=1" alt="Pleased customer avatar" class="mb-3">
<p class="fst-italic">"BrewFlow revolutionized how we manage our inventory! What used to take hours now takes minutes."</p>
<p class="fw-bold mt-3 mb-0">- Sarah L., Roast Master</p>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="testimonial-card">
<img src="https://picsum.photos/96/96?random=2" alt="Pleased customer avatar" class="mb-3">
<p class="fst-italic">"The order management system is a lifesaver. We can finally track everything from a single dashboard."</p>
<p class="fw-bold mt-3 mb-0">- Mike R., Cafe Owner</p>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="testimonial-card">
<img src="https://picsum.photos/96/96?random=3" alt="Pleased customer avatar" class="mb-3">
<p class="fst-italic">"Finally, a tool that understands the coffee business. The customer insights are pure gold."</p>
<p class="fw-bold mt-3 mb-0">- Chen W., Subscription Box CEO</p>
</div>
</div>
</div>
</div>
</section>
<!-- FAQ Section -->
<section id="faq" class="py-5 bg-light">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="mb-5">Frequently Asked Questions</h2>
<div class="accordion" id="faqAccordion">
<div class="accordion-item">
<h2 class="accordion-header" id="headingOne">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne">Is it easy to set up?</button>
</h2>
<div id="collapseOne" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">Yes! BrewFlow is designed for simplicity. You can get your dashboard configured and import your existing data in under an hour. No technical skills required.</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingTwo">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo">What payment gateways do you support?</button>
</h2>
<div id="collapseTwo" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">We support all major payment gateways, including Stripe, PayPal, and Square, to ensure you never miss a sale.</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="headingThree">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree">Can I manage customer subscriptions?</button>
</h2>
<div id="collapseThree" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
<div class="accordion-body">Absolutely. Our platform includes robust tools for managing recurring orders and subscriptions, helping you build a loyal customer base.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Form Section -->
<section id="contact" class="py-5">
<div class="container">
<div class="row">
<div class="col-lg-8 mx-auto text-center">
<h2 class="mb-4">Ready to Grow Your Business?</h2>
<p class="lead mb-5">Drop us a line and we'll get you set up with a free, no-obligation trial.</p>
<form id="contactForm" novalidate>
<div class="row">
<div class="col-md-6 mb-3">
<input type="text" class="form-control p-3" id="name" placeholder="Your Name" required>
<div class="invalid-feedback">Please enter your name.</div>
</div>
<div class="col-md-6 mb-3">
<input type="email" class="form-control p-3" id="email" placeholder="Your Email" required>
<div class="invalid-feedback">Please enter a valid email address.</div>
</div>
</div>
<div class="mb-3">
<textarea class="form-control p-3" id="message" rows="5" placeholder="Your Message" required></textarea>
<div class="invalid-feedback">Please enter a message.</div>
</div>
<button type="submit" class="btn btn-primary btn-lg">Send Message</button>
</form>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer class="py-4 text-center">
<div class="container">
<p class="mb-2">&copy; 2025 BrewFlow. All Rights Reserved.</p>
<p class="mb-0">
<a href="#" class="mx-2">Privacy Policy</a> |
<a href="#" class="mx-2">Terms of Service</a>
</p>
</div>
</footer>
<!-- Bootstrap 5 JS Bundle -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<!-- Custom JS -->
<script src="assets/js/main.js"></script>
</body>
</html>