<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>

<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>

## About Laravel

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:

- [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container).
- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage.
- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent).
- Database agnostic [schema migrations](https://laravel.com/docs/migrations).
- [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting).

Laravel is accessible, powerful, and provides tools required for large, robust applications.

## Learning Laravel

Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.

In addition, [Laracasts](https://laracasts.com) contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library.

You can also watch bite-sized lessons with real-world projects on [Laravel Learn](https://laravel.com/learn), where you will be guided through building a Laravel application from scratch while learning PHP fundamentals.

## Agentic Development

Laravel's predictable structure and conventions make it ideal for AI coding agents like Claude Code, Cursor, and GitHub Copilot. Install [Laravel Boost](https://laravel.com/docs/ai) to supercharge your AI workflow:

```bash
composer require laravel/boost --dev

php artisan boost:install
```

Boost provides your agent 15+ tools and skills that help agents build Laravel applications while following best practices.

## Contributing

Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions).

## Code of Conduct

In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct).

## Security Vulnerabilities

If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed.

## License

The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
## API mobile - mode visite

La réponse de la visite active expose les identifiants des attractions validées par l’utilisateur connecté afin d’alimenter le tableau de bord de visite de l’application mobile.


## API mobile - carte parc / POI

`GET /api/v1/parks/{park}/map?locale=fr` expose uniquement les attractions et POI publiés avec leurs coordonnées, catégories et données Live utiles à la carte mobile. Cette route ne renvoie aucune position utilisateur ou de groupe.

## API mobile - invitations et propositions de groupe

Les routes authentifiées de groupe permettent désormais aux propriétaires/administrateurs d’inviter individuellement leurs amis et aux membres actifs de proposer des activités pour une visite de groupe : attraction/coaster, repas, rendez-vous ou activité libre.

Les réponses aux propositions sont stockées par membre (`going`, `maybe`, `declined`). Les rendez-vous exigent un lieu et une heure. Le partage de position reste entièrement séparé et strictement limité aux membres du groupe.



## API mobile - notifications (v1.123.0)

Les utilisateurs authentifiés par jeton mobile peuvent consulter leurs notifications in-app, récupérer le compteur non lu et marquer une ou toutes les notifications comme lues. L’API réutilise `user_notifications` et les préférences déjà existantes : aucune migration SQL supplémentaire n’est nécessaire. La langue peut être fournie par `locale=fr|en|de|es|it`.

## API mobile - amis et QR (v1.124.0)

L’application mobile peut désormais gérer le graphe social existant : amis, demandes reçues/envoyées, suppression, blocage/déblocage et recherche par nom/pseudo. Un QR Coaster World peut identifier un compte via son pseudo public ; le QR ne contient ni adresse e-mail, ni jeton d’authentification, ni donnée de localisation. Aucune migration SQL supplémentaire n’est nécessaire.


## API mobile - QR de groupe (v1.125.0)

Les propriétaires et administrateurs actifs peuvent générer une invitation de groupe sous forme d’URL signée Laravel valable 7 jours. Le QR peut être scanné par un utilisateur authentifié qui n’est pas encore ami avec l’émetteur : l’action est volontaire et nécessite une confirmation dans l’application. Les invitations manuelles restent limitées aux amis existants. Les groupes ne deviennent pas publics ou recherchables. Aucune migration SQL supplémentaire n’est nécessaire.

## Correctif API mobile - favoris (v1.125.1)

Les routes authentifiées `GET /api/v1/favorites` et `POST /api/v1/favorites/{type}/{id}` sont exposées à nouveau pour l’application mobile. Elles réutilisent les favoris existants sans migration SQL.

## Correctifs API mobile - Explorer / historique (v1.125.2)

La liste mobile des parcs expose à nouveau `latitude` et `longitude`, nécessaires aux marqueurs du globe Explorer. Les routes authentifiées d'historique et de résumé de visite sont également restaurées (`/api/v1/visits/history` et `/api/v1/visits/{visit}/summary`). La fin d'une visite renvoie son résumé à l'application mobile.

## Correctif API mobile - classeur (v1.125.3)

Le classeur mobile dispose de nouveau de son endpoint authentifié `/api/v1/binder` et de ses routes médias protégées. Le contrat réutilise les cartes et déblocages existants, sans migration SQL. Un test de non-régression conserve également les routes mobiles critiques déjà utilisées par l'application.

## Passe de non-régression API mobile (v1.125.4)

Le contrat API consommé par l’application mobile est désormais couvert par un test dédié. Cette version restaure également les statuts personnels de parcs et le flux Google mobile par ticket PKCE, sans migration SQL.


## Coaster World release

Current packaged release: **v1.126.0**. See `CHANGELOG_v1.126.0.md`.


## v1.126.0 — Account management

Adds mobile registration, editable display name/@username, stable friend QR public IDs, legal consent timestamps, Google account-completion flow and protected permanent admin purge. This release requires one database migration.


## Avatars sociaux / GPS (v1.127.1)

Les API mobiles Amis, Groupes et partage de position exposent maintenant `avatar_url` (et le preset lorsque pertinent). L'application peut donc réutiliser exactement le même avatar que le profil/site dans les listes sociales et sur les marqueurs GPS. Aucun changement de schéma SQL n'est nécessaire.

## Avatars synchronisés site / mobile (v1.127.0)

Le compte peut utiliser soit une photo personnelle, soit un des avatars prédéfinis Coaster World. Le choix est centralisé côté serveur et partagé avec l'application mobile. Une migration ajoute `users.avatar_preset`.

## Explorer mobile — parcs validés / en cours (v1.127.2)

L’API `GET /api/v1/parks/user-statuses` expose désormais `active_park_ids` en plus de `visited_park_ids`, `todo_park_ids` et `planned_park_ids`. Les visites actives ne sont signalées que si l’utilisateur a réellement une validation de visite vérifiée. Ce champ permet à l’app v0.41.3+119 de colorer en vert les parcs visités ou actuellement en cours.



## QR amis direct et temporaire (v1.127.3)

L’API mobile génère désormais un QR ami signé valable 10 minutes. Après scan et confirmation dans l’application, la relation d’amitié est créée immédiatement pour les deux comptes. Les blocages restent respectés. Les anciens QR basés sur `public_id` restent résolus pour compatibilité avec le flux historique de demande d’ami. Aucune migration SQL n’est nécessaire.


## QR mobile robustes derrière proxy (v1.127.4)
Les QR amis et groupes utilisent des signatures relatives et restent compatibles avec les anciennes signatures absolues encore valides.
