Files
blackcanyontickets/src/pages/api/codereadr/setup-guide.ts
dzinesco 26a87d0d00 feat: Complete platform enhancement with multi-tenant architecture
Major additions:
- Territory manager system with application workflow
- Custom pricing and page builder with Craft.js
- Enhanced Stripe Connect onboarding
- CodeReadr QR scanning integration
- Kiosk mode for venue sales
- Super admin dashboard and analytics
- MCP integration for AI-powered operations

Infrastructure improvements:
- Centralized API client and routing system
- Enhanced authentication with organization context
- Comprehensive theme management system
- Advanced event management with custom tabs
- Performance monitoring and accessibility features

Database schema updates:
- Territory management tables
- Custom pages and pricing structures
- Kiosk PIN system
- Enhanced organization profiles
- CodeReadr integration tables

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-12 18:21:40 -06:00

181 lines
6.1 KiB
TypeScript

import type { APIRoute } from 'astro';
export const GET: APIRoute = async ({ request }) => {
const setupGuide = {
title: "CodeREADr Integration Setup Guide",
description: "Complete guide to setting up CodeREADr as a backup scanner for Black Canyon Tickets",
overview: {
purpose: "CodeREADr serves as a backup scanning system when the primary QR scanner fails",
benefits: [
"Redundancy: Ensures scanning works even if primary system fails",
"Mobile apps: CodeREADr provides dedicated mobile scanning apps",
"Offline capability: CodeREADr apps can work offline and sync later",
"Real-time reporting: Advanced analytics and reporting features"
]
},
prerequisites: {
codereadr_account: "Active CodeREADr account with API access",
api_key: "CodeREADr API key (currently: 3bcb2250e2c9cf4adf4e807f912f907e)",
database_migration: "Run the CodeREADr database migration",
event_setup: "Event must be created in BCT system first"
},
setup_steps: [
{
step: 1,
title: "Apply Database Migration",
description: "Run the CodeREADr integration migration",
command: "supabase migration up 20250109_codereadr_integration.sql",
notes: "This creates the necessary tables for CodeREADr integration"
},
{
step: 2,
title: "Setup CodeREADr for Event",
description: "Initialize CodeREADr configuration for an event",
endpoint: "POST /api/codereadr/setup",
request_body: {
eventId: "uuid-of-event",
organizationId: "uuid-of-organization"
},
response: {
success: true,
message: "CodeREADr integration setup successfully",
config: {
database_id: "codereadr-database-id",
service_id: "codereadr-service-id",
user_id: "codereadr-user-id"
}
}
},
{
step: 3,
title: "Test Backup Scanning",
description: "Test the backup scanning functionality",
endpoint: "POST /api/codereadr/scan",
request_body: {
ticketUuid: "ticket-uuid-to-scan",
eventId: "uuid-of-event",
scannedBy: "user-id-scanning"
}
},
{
step: 4,
title: "Configure Webhooks (Optional)",
description: "Set up real-time webhook notifications",
webhook_url: "https://your-domain.com/api/codereadr/webhook",
notes: "Configure in CodeREADr dashboard to receive real-time scan notifications"
}
],
usage: {
automatic_backup: {
description: "Backup scanning happens automatically when primary scanner fails",
trigger: "When checkInTicket() fails, it automatically tries CodeREADr",
indicator: "Shows yellow 'Trying backup scanner...' notification"
},
manual_backup: {
description: "Users can manually trigger backup scanning",
button: "Yellow 'Backup' button in manual entry section",
usage: "Enter ticket UUID and click 'Backup' button"
},
sync_scans: {
description: "Sync scans from CodeREADr to local database",
endpoint: "POST /api/codereadr/sync",
frequency: "Can be run manually or scheduled"
}
},
api_endpoints: {
setup: {
method: "POST",
path: "/api/codereadr/setup",
description: "Initialize CodeREADr for an event",
parameters: ["eventId", "organizationId"]
},
scan: {
method: "POST",
path: "/api/codereadr/scan",
description: "Scan a ticket using CodeREADr",
parameters: ["ticketUuid", "eventId", "scannedBy"]
},
sync: {
method: "POST",
path: "/api/codereadr/sync",
description: "Sync scans from CodeREADr",
parameters: ["eventId", "organizationId"]
},
status: {
method: "GET",
path: "/api/codereadr/sync?eventId=&organizationId=",
description: "Get CodeREADr integration status",
parameters: ["eventId", "organizationId"]
},
webhook: {
method: "POST",
path: "/api/codereadr/webhook",
description: "Handle real-time scan notifications",
parameters: ["scan_id", "service_id", "value", "timestamp"]
}
},
database_schema: {
codereadr_configs: {
description: "Stores CodeREADr configuration per event",
key_fields: ["event_id", "database_id", "service_id", "user_id", "status"]
},
codereadr_scans: {
description: "Stores synchronized scans from CodeREADr",
key_fields: ["codereadr_scan_id", "event_id", "ticket_uuid", "scan_timestamp"]
},
tickets: {
new_column: "scan_method",
description: "Tracks how ticket was scanned (qr, codereadr, manual, api)"
}
},
troubleshooting: {
common_issues: [
{
issue: "CodeREADr not configured for event",
solution: "Run POST /api/codereadr/setup first"
},
{
issue: "Backup scanning fails",
solution: "Check API key, verify event configuration, check network connectivity"
},
{
issue: "Duplicate scans",
solution: "Sync process handles duplicates automatically"
},
{
issue: "Webhook not receiving data",
solution: "Verify webhook URL configuration in CodeREADr dashboard"
}
]
},
security_considerations: [
"API key is stored in application code - consider environment variables",
"Webhook endpoint should validate requests",
"Database access controlled by RLS policies",
"Sync operations log all actions for audit trail"
],
next_steps: [
"Test the integration with a sample event",
"Configure webhook notifications for real-time updates",
"Set up automated sync scheduling",
"Train staff on backup scanning procedures",
"Monitor scan success rates and system performance"
]
};
return new Response(JSON.stringify(setupGuide, null, 2), {
status: 200,
headers: {
'Content-Type': 'application/json'
}
});
};