- 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
+36
View File
@@ -0,0 +1,36 @@
<section class="auth-section section">
<div class="container auth-grid">
<div class="auth-intro">
<span class="eyebrow">Welcome back</span>
<h1>Your usual is waiting.</h1>
<p>Sign in to check past orders, save your pickup information, and manage restaurant news.</p>
<div class="auth-callout">
<strong>Staff member?</strong>
<span>Your staff account uses the same secure sign-in.</span>
</div>
</div>
<form class="auth-card form-stack" action="/login" method="post">
<?= csrf_field() ?>
<div>
<span class="eyebrow">Account access</span>
<h2>Sign In</h2>
</div>
<label>Email address
<input type="email" name="email" required autocomplete="email" value="<?= e($old['email'] ?? '') ?>">
</label>
<label>Password
<input type="password" name="password" required autocomplete="current-password">
</label>
<div class="honeypot" aria-hidden="true">
<label>Website <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<label>Quick check: what is <?= (int) $captcha[0] ?> + <?= (int) $captcha[1] ?>?
<input type="number" name="captcha" required inputmode="numeric" autocomplete="off">
</label>
<button class="button button-large button-block" type="submit">Continue Securely</button>
<p class="form-footnote">We will email a six-digit verification code after your password is accepted.</p>
<p class="auth-switch">New here? <a href="/register">Create an account</a></p>
</form>
</div>
</section>