Aller à l'article
Aniq-UI

TicketoryLe site et le compte participant

Le site et le compte participant

Ce que fait le site public : le catalogue d'événements et ses filtres, la page d'événement, le choix des places, le paiement, les billets, commandes, événements enregistrés et profil du participant, le formulaire de contact, les moteurs de recherche et les balises marketing.

Pour le pack Full Stack

Pages

Chaque page existe en anglais sous /en et en arabe sous /ar. Le site n'a pas de données propres : chaque événement, place, réservation, commande et billet vient de l'API Ticketory.

PageCheminCe qu'elle affiche
Accueil/enUne bannière avec des billets en direct, puis la découverte, le fonctionnement, les places, le contrôle des billets, les organisateurs, les lieux, les tarifs et les questions fréquentes, et un appel à l'action.
Événements/en/eventsLe catalogue, avec recherche et filtres conservés dans l'adresse, six événements par page.
Un événement/en/events/design-talksLes onglets À propos, Programme et Lieu, le panneau de réservation avec les types de billets, un aperçu des places, l'enregistrement, et l'organisateur.
Choix des places/en/events/design-talks/seatsLe plan des places en direct d'un événement à places réservées, avec le compte à rebours de la réservation.
Paiement/en/checkoutLes informations de l'acheteur, le moyen de paiement et les conditions. Elle s'ouvre à partir d'une sélection réservée.
Confirmation de commande/en/orders/TKT-1042/confirmationUn billet avec un code QR par place, les billets PDF, un fichier de calendrier et l'état de l'e-mail de billets. Seul son acheteur peut l'ouvrir.
Mes billets, commandes, profil/en/account/tickets, /en/account/orders, /en/account/profileLes pages propres du participant connecté.
Événements enregistrés/en/savedLes événements que le participant a marqués d'une étoile.
Lieux, organisateurs/en/venues, /en/organisersDes annuaires, chacun avec une page par lieu ou par organisateur et ses événements.
Tarifs, FAQ, contact/en/pricing, /en/faq, /en/contactDes offres d'exemple et les frais de réservation, les questions fréquentes, et le formulaire de contact.
Se connecter, créer un compte/en/auth/login, /en/auth/registerAvec la réinitialisation du mot de passe et la vérification de l'e-mail à côté.
Confidentialité, conditions, annulations/en/privacy, /en/terms, /en/cancellation-policyTextes modèles dans messages/legal à réécrire pour votre activité avant la mise en ligne.

« Sell tickets » et les liens organisateur envoient les organisateurs vers la connexion du tableau de bord à NEXT_PUBLIC_DASHBOARD_URL.

Le catalogue d'événements

  • Une recherche dans les titres, résumés, lieux, villes et organisateurs, une ville, une période et une catégorie (workshop, talk, festival), conservées dans l'adresse sous les noms q, city, from, to, category et page, si bien qu'une recherche peut être partagée, actualisée et parcourue avec précédent et suivant.
  • Seuls les événements publics à venir apparaissent, les plus proches d'abord. Les brouillons, les événements non listés, annulés et archivés n'y figurent jamais ; un événement non listé se vend par son seul lien.
  • Des données d'exemple neuves listent 22 événements de quatre organisateurs, dont trois en cours.

La page d'événement et le choix des places

  • Un événement n'a pas de photo : son titre, sa date et sa couleur sont dessinés comme un billet. L'onglet Programme affiche l'agenda dans le fuseau horaire propre à l'événement, et l'onglet Lieu son accès, ses transports et sa capacité.
  • Places réservées : Select seats ouvre le plan des places. Choisir la première place démarre la réservation, qui garde les places pendant la durée de réservation de l'organisateur (dix minutes dans les données d'exemple), comptée sur l'horloge du serveur. Le plan est relu toutes les 20 secondes, fonctionne au clavier et propose une vue en liste accessible et un zoom. Une commande contient au plus 8 places.
  • Entrée libre : l'acheteur choisit une quantité sur la page de l'événement et appuie sur Continue, ce qui réserve les places.
  • Un événement complet reste ouvert et peut encore être enregistré ; un événement annulé l'indique et ne vend rien.

Paiement

Le paiement n'exige aucun compte. L'acheteur indique un prénom, un nom et un e-mail, choisit Stripe, PayPal ou Test payment (selon ce que propose l'API), accepte les conditions et appuie sur Continue to payment. Le paiement lui-même se fait sur la page propre du fournisseur, ou sur la page de paiement de test qui en tient lieu ; aucun champ de carte n'est jamais sur le site. Les billets gratuits n'affichent aucun moyen de paiement, et Get tickets ouvre aussitôt la confirmation.

La réservation appartient à l'onglet du navigateur qui l'a faite. La confirmation n'affiche les billets que lorsque l'API indique la commande payée.

Le compte participant

  • Créer un compte : prénom, nom, e-mail et un mot de passe de 8 à 72 caractères avec au moins une lettre et un chiffre. L'API envoie par e-mail un code de vérification à six chiffres, valable 24 heures ; sans service d'e-mail, le code est écrit dans le journal de l'API.
  • Les commandes d'invité rejoignent le compte : une fois le code accepté, chaque commande passée avec cet e-mail devient celle du compte.
  • Mes billets : les réservations à venir et passées avec un calendrier, et chaque billet avec son code QR, son PDF et son fichier de calendrier.
  • Commandes : chaque commande avec son reçu et une chronologie de ce qui lui est arrivé.
  • Événements enregistrés : l'étoile d'un événement l'enregistre dans le compte. Un visiteur non connecté est d'abord renvoyé vers la connexion.
  • Profil : le nom et l'e-mail (un nouvel e-mail demande à être vérifié de nouveau) et deux préférences d'e-mail. Event reminders (activé par défaut) envoie un e-mail environ un jour avant chaque événement pour lequel le participant a des billets, en les listant. News and offers est seulement enregistré comme choix du participant : le template n'envoie aucun e-mail d'actualités. Les e-mails de billets, de reçus et de remboursements partent toujours.
  • Connexion : Remember me garde le participant connecté 30 jours au lieu d'un. Un mauvais e-mail et un mauvais mot de passe donnent le même message, et le lien de réinitialisation du mot de passe fonctionne une heure.

Les données d'exemple incluent un participant avec huit commandes et quatre événements enregistrés ; ses identifiants de connexion sont dans le guide d'installation.

Le formulaire de contact

Un nom, un e-mail, un sujet (une question générale, billets et commandes, vendre en tant qu'organisateur, l'offre Scale, ou presse) et un message de 10 à 2000 caractères. Chacun devient une demande dans le tableau de bord, avec une notification aux membres de l'équipe qui peuvent lire les demandes.

Le formulaire contient un champ caché qui piège les robots, n'envoie le même message qu'une seule fois, et accepte cinq envois par adresse en dix minutes. Derrière un reverse proxy, définissez TRUST_PROXY=1 dans le .env de l'API, sinon tous les visiteurs se partagent le quota du proxy.

Comment les changements atteignent les pages

Les pages d'accueil, d'événement, de lieu et d'organisateur sont pré-générées et conservées une heure au plus. Quand un événement est publié, modifié, annulé ou complet, l'API demande au site de les reconstruire aussitôt, à condition que les deux partagent le même REVALIDATE_SECRET. Docker Compose le configure de lui-même ; sans Docker, mettez la même valeur dans back-end/.env et storefront/.env. La disponibilité des places, les réservations, les billets et les pages du compte sont toujours lus en direct.

Moteurs de recherche

  • Chaque page définit son propre titre, sa description, son adresse canonique et la variante de langue, construits à partir de NEXT_PUBLIC_SITE_URL : définissez-le donc avec votre vraie adresse avant de faire le build.
  • /sitemap.xml liste chaque page publique dans les deux langues, chaque événement à venir du catalogue, et chaque lieu et organisateur. /robots.txt y renvoie et tient les robots à l'écart des pages de compte, de paiement, de commande et de connexion.
  • Les pages de compte, de paiement, de confirmation, de connexion, des événements enregistrés et du choix des places sont marquées noindex.

Balises d'analyse et de suivi

Six réseaux sont branchés. Activez-en un en mettant son identifiant dans storefront/.env (avec Docker Compose, dans le .env à côté de docker-compose.yml) et en reconstruisant ; un identifiant laissé vide ne charge aucun script.

VariableRéseau
NEXT_PUBLIC_GTM_IDGoogle Tag Manager
NEXT_PUBLIC_GA4_MEASUREMENT_IDGoogle Analytics 4
NEXT_PUBLIC_META_PIXEL_IDFacebook et Instagram
NEXT_PUBLIC_TIKTOK_PIXEL_IDTikTok
NEXT_PUBLIC_SNAPCHAT_PIXEL_IDSnapchat
NEXT_PUBLIC_PINTEREST_TAG_IDPinterest
ÉvénementQuand
page_viewChaque changement de route
view_eventUne page d'événement est affichée
save_eventUn événement est enregistré
begin_checkoutLes informations de paiement sont envoyées et l'acheteur part payer
purchaseUne confirmation payée est affichée pour la première fois
contact_submitLe formulaire de contact est reçu
  • Si GA4 tourne dans votre conteneur Tag Manager, laissez l'identifiant GA4 vide, sinon chaque session est comptée deux fois.
  • NEXT_PUBLIC_ANALYTICS_CURRENCY (USD par défaut) est envoyée avec un événement qui ne porte pas de devise propre, et NEXT_PUBLIC_ANALYTICS_DEBUG=true consigne chaque événement dans la console du navigateur.
  • Les balises se chargent dès que la page se charge. Si vous servez des visiteurs dans l'UE ou au Royaume-Uni, placez d'abord devant eux une bannière de consentement.

Comment s'organise le code du site

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

La structure du code et les conventions à respecter quand vous le modifiez.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.