Add ticket system with QR scanner and PDF generation

- Add ticket validation and check-in API endpoints
- Add PDF ticket generation with QR codes (pdfkit)
- Add admin QR scanner page with camera support
- Add admin site settings page
- Update email templates with PDF ticket download link
- Add checked_in_by_admin_id field for audit tracking
- Update booking success page with ticket download
- Various UI improvements to events and booking pages
This commit is contained in:
Michilis
2026-02-02 00:45:12 +00:00
parent b0cbaa60f0
commit 9410e83b89
28 changed files with 1930 additions and 85 deletions

View File

@@ -57,7 +57,7 @@ export default function LinktreePage() {
: null;
return (
<div className="min-h-screen bg-gradient-to-b from-primary-dark via-gray-900 to-primary-dark">
<div className="min-h-screen" style={{ background: 'linear-gradient(to bottom, #002F44, #001a28, #002F44)' }}>
<div className="max-w-md mx-auto px-4 py-8 pb-16">
{/* Profile Header */}
<div className="text-center mb-8">
@@ -102,9 +102,11 @@ export default function LinktreePage() {
? t('events.details.free')
: `${nextEvent.price.toLocaleString()} ${nextEvent.currency}`}
</span>
<span className="text-sm text-gray-400">
{nextEvent.availableSeats} {t('events.details.spotsLeft')}
</span>
{!nextEvent.externalBookingEnabled && (
<span className="text-sm text-gray-400">
{nextEvent.availableSeats} {t('events.details.spotsLeft')}
</span>
)}
</div>
<div className="mt-4 bg-primary-yellow text-primary-dark font-semibold py-3 px-4 rounded-xl text-center transition-all duration-200 group-hover:bg-yellow-400">