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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user