- Implemented the full Fat Bottom Grille storefront and staff dashboard.

Highlights include configurable menus, specials, cart/checkout, taxes, 
customer accounts with email 2FA, newsletters, analytics, refunds, 
PDF/CSV exports, Square/Mailgun adapters, and optional MySQL migration.

See README.md for setup and production configuration. Verified 
PHP/JavaScript syntax, responsive layouts, registration, 2FA, checkout, 
dashboard workflows, settings persistence, and PDF generation.
Real Square, Mailgun, and MySQL connections require credentials/server 
access. Square implementation follows the official Payments API and 
Refunds API.
This commit is contained in:
Ty Clifford
2026-06-10 13:27:42 -04:00
parent d46b0be488
commit 16235369cb
49 changed files with 7685 additions and 2 deletions
+23
View File
@@ -0,0 +1,23 @@
<section class="confirmation-section section">
<div class="container confirmation-card">
<div class="confirmation-mark"></div>
<span class="eyebrow">Paid and sent to the kitchen</span>
<h1>Weve got it, <?= e(explode(' ', (string) $order['customer_name'])[0]) ?>.</h1>
<p>Your order number is <strong><?= e($order['order_number']) ?></strong>. We sent a confirmation to <?= e($order['customer_email']) ?>.</p>
<div class="confirmation-details">
<div><span>Pickup</span><strong><?= e($order['pickup_time'] ?: 'About ' . $config->get('ordering.pickup_eta_minutes', 25) . ' minutes') ?></strong></div>
<div><span>Location</span><strong>410 W Piedmont St</strong></div>
<div><span>Total paid</span><strong><?= money($order['total_cents']) ?></strong></div>
</div>
<div class="confirmation-items">
<?php foreach ($items as $item): ?>
<div><span><?= (int) $item['quantity'] ?>x <?= e($item['item_name']) ?></span><strong><?= money($item['line_total_cents']) ?></strong></div>
<?php endforeach; ?>
</div>
<div class="confirmation-actions">
<a class="button" href="/menu">Order Something Else</a>
<?php if ($currentUser): ?><a class="button button-outline" href="/account">View My Orders</a><?php endif; ?>
</div>
</div>
</section>