package player import ( "context" "fmt" qrcode "github.com/skip2/go-qrcode" ) // QRCodeSize is the default QR code image size in pixels. const QRCodeSize = 256 // GenerateQRCode generates a QR code PNG image encoding the player UUID. // The QR code encodes a URL in the format: felt://player/{uuid} // This is intended for future PWA self-check-in via camera scan. func (s *Service) GenerateQRCode(ctx context.Context, playerID string) ([]byte, error) { // Verify player exists _, err := s.GetPlayer(ctx, playerID) if err != nil { return nil, err } // Generate QR code with player URL url := fmt.Sprintf("felt://player/%s", playerID) png, err := qrcode.Encode(url, qrcode.Medium, QRCodeSize) if err != nil { return nil, fmt.Errorf("player: generate QR code: %w", err) } return png, nil }