Le verso de Cartes.app
Introduction et explications sur le fonctionnement de l'application
publié le , mis à jourBienvenue sur le verso de Cartes.app, la partie technique qui permet à l'application de fonctionner dans votre navigateur.
Cette partie s'adresse aux curieux, futurs contributeurs et plein d'autres !
Cartes.app utilise des technologies web pour permettre un déploiement accessible et facile d'utilisation pour tout le monde. N'importe quel navigateur doit être capable de faire fonctionner Cartes.app. Comme c'est un site web, le site cartes.app présente deux parties distinctes: le côté client (frontend), que l'utilisateur voit, et le côté serveur (backend) qui fonctionne sur un serveur distant, invisible pour l'utilisateur.
Cartes.app possède de nombreuses fonctionnalités, et ainsi, il y a plusieurs serveurs distants utilisés pour aller chercher les informations nécessaires à l'affichage de la carte. Cartes.app utilisent plusieurs serveurs tiers différents, par exemple, pour accéder à la météo, le serveur de Météo-France sera utilisé. Nous reviendrons plus tard sur cette partie.
Le code de Cartes.app est publié sous la license libre GNU AFFERO GENERAL PUBLIC LICENSE Version 3. Le code est accessible sur le repository Codeberg: https://codeberg.org/cartes
Frontend
Le frontend de Cartes.app est disponible dans le repository https://codeberg.org/cartes/web.
Ce front est fait avec le framework Next.js qui est basé sur la librairie React.
L'affichage de la carte se fait avec Maplibre GL js https://maplibre.org/maplibre-gl-js/docs/
Backend
Le backend de Cartes.app est disponible dans le repository https://codeberg.org/cartes/serveur.
Serveurs tiers
Voici une liste d'une des projets tiers qu'utilise Cartes.app.
Certons sont hébergés sur nos serveurs cartes.app, d'autres sont des services tiers. Nous nous efforçons de ne pas forcer la main à l'utilisateur (pas de requête automatique) sur des services tiers, et nous privilégions les serveurs européens.
OpenStreetMap
OpenstreetMap est une plateforme gratuite et collaborative de cartographie en ligne, créée et maintenue par une communauté de bénévoles du monde entier. Elle permet à chacun de contribuer à la création et à l'amélioration de cartes détaillées, couvrant une grande variété de lieux et d'informations géographiques. Sur cartes.app OSM est utilisé pour beaucoup de choses, notamment le fond de cartes et les informations sur les lieux.

API Overpass
Overpass est l'API de lecture d'OpenStreetMap. En effet, l'API officielle n'est destinée qu'à l'écriture. Overpass permet non seulement de faire des requêtes simples (voir les infos d'un lieu) mais aussi des requêtes complexes : donne moi tous les restaurants de type pizza et les cafés dans ce périmètre. Nous utilisons l'instance Overpass FR, mise en place par nos soins, avec l'instance DE en secours. À chaque fois que vous chargez un lieu sur cartes.app, ou que vous cherchez une catégorie de lieux, une requête overpass (au moins) est faite.
Transport.data
Transport.data est le Point d'Accès National (PAN) aux données de transports en commun en France. Il s'agit d'une base de données qui agrège toutes les données d'itinéraires et horaires fournies par les exploitants de transports en commun (train, bus, ...). Sur cartes.app, les données issues du PAN Transports sont utilisées pour les calculs d'itinéraires en transport en commun en France.
Panoramax
Panoramax est une ressource numérique permettant la mise en commun et l'utilisation de photos de terrain. Toute personne peut photographier des lieux visibles depuis la voie publique afin d'alimenter la base de données de Panoramax. Les photos ainsi disponibles sont affichées sur cartes.app pour permettre le mode Street View.
Futur.eco
Futur.eco est une service permettant de comprendre les impacts de chaque geste du quotidien

BRouter
BRouter est un calculateur d'itinéraires à pied ou à vélo, basé sur les données de rues et chemins présentes dans OpenStreetMap. Il est utilisé sur cartes.app pour ... les itinéraires piétons et vélo !
Motis
MOTIS signifie Modular Open Transportation Information System (Système modulaire ouvert d'information sur les transports). Il s'agit d'une plateforme logicielle open source conçue pour faciliter la planification et le calcul d'itinéraires de manière efficace dans des systèmes de transport multimodaux. Sur cartes.app, MOTIS ingurgite les données d'OpenStreetMap et du PAN Transports pour réaliser les calculs d'itinéraires multimodaux (marche/vélo + transports en commun) en France.
Transitous
Transitous est un projet open source qui vise à fournir des données de transport en commun de haute qualité et à jour. Il collecte, traite et distribue des informations sur les horaires, les itinéraires et les arrêts de transport en commun, permettant ainsi aux développeurs et aux utilisateurs d'accéder à des données fiables pour leurs applications de mobilité. Cartes.app fait appel à transitous pour les calculs d'itinéraires multimodaux en Europe hors France.
Node-GTFS
Node-GTFS est une bibliothèque JavaScript open source qui permet de manipuler et d'analyser les données GTFS (General Transit Feed Specification) utilisées pour décrire les horaires et les itinéraires des transports en commun. Elle facilite l'extraction, la transformation et l'utilisation des données GTFS dans les applications de mobilité.

Valhalla
Valhalla est un moteur de routage open source, conçu pour fournir des itinéraires optimisés pour différents modes de transport, tels que la voiture, le vélo et la marche. Il utilise des données de cartographie pour calculer les itinéraires les plus efficaces en fonction des préférences de l'utilisateur et des conditions de circulation.
OpenMapTiles
OpenMapTiles est un projet open source qui sélectionne et met en forme les données d'OpenStreetMap pour produire les fonds de cartes vectoriels visibles sur les cartes en ligne, dont celles de cartes.app.
tilemaker
tilemaker est un logiciel open source qui lit les données OpenStreetMap pour produire le fichier contenant la sélection de données nécessaires pour l'affichage du fond de cartes ("tuiles vectorielles"). Pour cartes.app, la sélection des données OSM, et leur organisation dans les tuiles, est réalisée en suivant le schéma OpenMapTiles (avec quelques compléments).
Protomaps
Protomaps est une bibliothèque JavaScript open source qui permet de créer des cartes interactives et personnalisées en utilisant des données de cartographie vectorielle. Elle offre des fonctionnalités avancées pour la visualisation de données géospatiales, permettant aux développeurs de créer des expériences cartographiques riches et engageantes.

IGN
L'Institut national de l'information géographique et forestière (IGN) est un établissement public à caractère administratif ayant pour mission d'assurer la production, l'entretien et la diffusion de l'information géographique de référence en France. Cartes.app propose plusieurs fonds de cartes mis au point par l'IGN.

Wiki Commons
Wikimedia Commons est une médiathèque en ligne qui héberge des fichiers multimédias libres de droits, tels que des images, des vidéos et des sons. Elle est gérée par la Wikimedia Foundation et permet aux utilisateurs de partager et d'accéder à une vaste collection de ressources visuelles et audio pour une utilisation dans divers projets, y compris Wikipedia. Cartes.app affiche les photos des lieux, ou à proximité des lieux, disponibles dans Wikimedia commons.
Wikipedia
Wikipedia est une encyclopédie collaborative en ligne, créée et maintenue par des bénévoles du monde entier. Elle offre une vaste collection d'articles couvrant une multitude de sujets, allant de l'histoire à la science, en passant par la culture et bien plus encore. Les utilisateurs peuvent consulter, éditer et contribuer à l'enrichissement de cette ressource gratuite et accessible à tous. Cartes.app présente les résumés des articles wikipedia des lieux qui en ont un.
Wikidata
Wikidata est une base de données collaborative et multilingue qui stocke des données structurées pour soutenir les projets Wikimedia, tels que Wikipedia. Elle permet de centraliser et de partager des informations de manière organisée, facilitant ainsi l'accès à des données fiables et à jour pour les utilisateurs du monde entier. Cartes.app présente des données disponibles dans Wikidata pour compléter les fiches d'information sur les lieux.
Météo France
Météo France est le service météorologique national français, chargé de fournir des prévisions météorologiques, des alertes et des informations sur les conditions climatiques en France. Cartes.App affiche les prévisions Météo France du lieu visible sur la carte.

Photon
Photon est un moteur de géocodage open source développé par Komoot, conçu pour convertir des adresses et des lieux en coordonnées géographiques (latitude et longitude) et vice versa. Il utilise les données d'OpenStreetMap pour fournir des résultats de géocodage précis et rapides. Sur cartes.app il est utilisé dans la barre de recherche de texte.
Indoor=
Indoor= est un projet open source qui vise à fournir des données et des outils pour la cartographie et la navigation à l'intérieur des bâtiments. Il permet de créer des cartes détaillées des intérieurs, facilitant ainsi la navigation dans les espaces clos tels que les centres commerciaux, les aéroports, les musées, etc, à partir des données disponibles dans OpenStreetMap. La cartographie intérieure sur Cartes.app est réalisée par indoor=.
TerraDraw
TerraDraw est un outil de dessin géospatial en ligne qui permet aux utilisateurs de créer, éditer et partager des données géographiques de manière interactive.
ATProto/Bluesky
ATProto est un protocole de réseau social décentralisé développé par Bluesky. Il vise à créer un écosystème de réseaux sociaux interopérables, permettant aux utilisateurs de contrôler leurs données et de se connecter à différents services sociaux tout en maintenant la confidentialité et la sécurité. Sur cartes.app, ATProto est utilisé pour stocker les avis déposés par les utilisateurs. Les avis ainsi déposés sont libres d'accès et peuvent potentiellemnt être réutilisés par d'autres applications. Pourquoi Atproto plutôt qu'ActivityPub ? Réponse [ici](/documentation/tickets/1398).
Codeberg
Codeberg est une plateforme de développement collaboratif basée sur Git, offrant des fonctionnalités similaires à GitHub, mais avec un engagement envers la confidentialité, la sécurité et l'open source. Elle permet aux développeurs de partager et de collaborer sur des projets de manière transparente et respectueuse de la vie privée. Le code source de cartes.app est publié sur Codeberg.
CityBikes
Citybikes est l'API en libre accès la plus complète pour les informations sur le partage de vélos, avec une prise en charge de plus de 700 villes dans le monde entier. L'objectif du projet est de promouvoir des politiques de données ouvertes et de présenter les avantages des données ouvertes aux conseils municipaux et aux entreprises qui fournissent des services publics à la société.
Le vôtre ?
Contribuer à Cartes.app pour ajouter votre service tiers!
Déploiement
Le déploiement est automatisé après chaque commit sur la branche master. Le code est déployé sur un serveur distant, et est accessible à l'adresse https://cartes.app
Contribuer
Pour contribuer, il suffit d'avoir un compte Codeberg et de dupliquer le projet (faire un "fork") pour avoir une copie sur son compte personel Codeberg. On peut ensuite modifier le code sur la copie local, puis ouvrir une Pull Request sur Codeberg
Pour débuter dans la contribution, plusieurs ressources sont utilisables :
- le
CONTRIBUTING.md - les tickets avec le label
wiki - regarder la roadmap
- voir tous les tickets ouverts
Autres ressources
- https://ihatecoordinatesystems.com/
- /debug - une page permettant de faciliter le debug d'un utilisateur
- /svgo/bulk/check - les icones de cartes.app