commit 262b949578fffb662fc26142968364f6e0364b26 Author: Flatlogic Bot Date: Mon Sep 8 12:59:49 2025 +0000 Initial version diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e427ff3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +*/node_modules/ +*/build/ diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e2bbc23 --- /dev/null +++ b/.htaccess @@ -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] diff --git a/assets/css/custom.css b/assets/css/custom.css new file mode 100644 index 0000000..aa0bf01 --- /dev/null +++ b/assets/css/custom.css @@ -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; +} diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..fa7c33a --- /dev/null +++ b/assets/js/main.js @@ -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(); + } + }); + } +}); diff --git a/db/config.php b/db/config.php new file mode 100644 index 0000000..237dd5c --- /dev/null +++ b/db/config.php @@ -0,0 +1,17 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + ]); + } + return $pdo; +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..f390d93 --- /dev/null +++ b/index.php @@ -0,0 +1,198 @@ + + + + + + BrewFlow - Manage Your Coffee Business + + + + + + + + + + + + + + + +
+
+

Manage Your Coffee Empire, Seamlessly.

+

The ultimate toolkit for your online coffee business. From bean to cup, we've got you covered.

+ Start Free Trial + See Features +
+
+ + +
+
+

Everything You Need to Succeed

+
+
+ +

Blend Management

+

Perfect your coffee offerings. Manage inventory, pricing, and stock levels with ease.

+
+
+ +

Order Tracking

+

From grind to doorstep. Oversee every customer order in one centralized system.

+
+
+ +

Customer Insights

+

Know your customers. Keep a detailed database with order history and preferences.

+
+
+
+
+ + +
+
+
+
+ A close-up of various coffee beans in rustic bowls. +
+
+

Data-Driven Decisions to Boost Your Sales

+

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.

+ Learn More +
+
+
+
+ + +
+
+

Loved by Coffee Entrepreneurs

+
+
+
+ Pleased customer avatar +

"BrewFlow revolutionized how we manage our inventory! What used to take hours now takes minutes."

+

- Sarah L., Roast Master

+
+
+
+
+ Pleased customer avatar +

"The order management system is a lifesaver. We can finally track everything from a single dashboard."

+

- Mike R., Cafe Owner

+
+
+
+
+ Pleased customer avatar +

"Finally, a tool that understands the coffee business. The customer insights are pure gold."

+

- Chen W., Subscription Box CEO

+
+
+
+
+
+ + +
+
+
+
+

Frequently Asked Questions

+
+
+

+ +

+
+
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.
+
+
+
+

+ +

+
+
We support all major payment gateways, including Stripe, PayPal, and Square, to ensure you never miss a sale.
+
+
+
+

+ +

+
+
Absolutely. Our platform includes robust tools for managing recurring orders and subscriptions, helping you build a loyal customer base.
+
+
+
+
+
+
+
+ + +
+
+
+
+

Ready to Grow Your Business?

+

Drop us a line and we'll get you set up with a free, no-obligation trial.

+
+
+
+ +
Please enter your name.
+
+
+ +
Please enter a valid email address.
+
+
+
+ +
Please enter a message.
+
+ +
+
+
+
+
+ + + + + + + + + + \ No newline at end of file