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

@@ -11,6 +11,8 @@ interface Event {
titleEs?: string;
description: string;
descriptionEs?: string;
shortDescription?: string;
shortDescriptionEs?: string;
startDatetime: string;
endDatetime?: string;
location: string;
@@ -47,10 +49,12 @@ export async function generateMetadata({ params }: { params: { id: string } }):
}
const title = event.title;
// Use the beginning of the event description, truncated to ~155 chars for SEO
const description = event.description.length > 155
? event.description.slice(0, 152).trim() + '...'
: event.description;
// Use short description if available, otherwise fall back to truncated full description
const description = event.shortDescription
? event.shortDescription
: (event.description.length > 155
? event.description.slice(0, 152).trim() + '...'
: event.description);
// Convert relative banner URL to absolute URL for SEO
const imageUrl = event.bannerUrl