logiciel libre · licence MIT
Collecte et publication d'informations géolocalisées
geocrowd reçoit des points géolocalisés par une API publique, les soumet à une modération dans un back-office, puis les publie au format GeoJSON. Un site public facultatif affiche les points sur une carte et accepte des ajouts. Le logiciel fonctionne sur un hébergement PHP mutualisé, avec une base SQLite.
$ curl https://votre-instance.org/api/collections/bancs/points
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": 128,
"geometry": {
"type": "Point",
"coordinates": [4.8357, 45.764]
},
"properties": {
"etat": "Abîmé",
"places": 3,
"dossier": true
}
}
]
}
Fonctionnalités
- collections
- Chaque jeu de données est une collection, définie dans un éditeur de schéma : champs, listes de choix, images, liens entre points, description.
- api publique
- Lecture en GeoJSON avec filtres par emprise, par lien et par champ renseigné. Soumission de points en JSON ou avec des images.
- site public
- Facultatif, servi à la racine de l'instance : carte des points publiés, fiche de chaque point, formulaires d'ajout et de proposition de modification générés à partir du schéma.
- modération
- Les envois sont publiés après validation dans le back-office. La modération se règle par collection.
- propositions de modification
- Correction d'un point publié par le public, avec un commentaire. Le back-office affiche l'état actuel et l'état proposé de chaque champ.
- clés d'api
- Accès à l'API restreint par clé, en option. Une clé peut être limitée à des domaines.
- double authentification
- Connexion au back-office par mot de passe et code TOTP. Aucun envoi d'e-mail ou de SMS n'est nécessaire.
- vie privée
- Images réencodées sans métadonnées. Adresses IP conservées uniquement sous forme hachée, pendant une heure. Aucun compte demandé au public.
- import openstreetmap
- Un script remplit une collection à partir d'une requête Overpass et la met à jour sans modifier le statut des points.
- hébergement
- PHP 8.1 et SQLite. Ni Composer, ni Node, ni tâche planifiée. Installation par copie des fichiers.
Fonctionnement
Exemple avec une collection de bancs publics.
-
Définition de la collection
La collection et ses champs sont décrits dans l'éditeur de schéma du back-office. L'API renvoie cette définition.
définition de bancs{ "id": "bancs", "name": "Bancs publics", "moderation": true, "fields": [{ "name": "etat", "label": "État", "type": "select", "options": ["Bon", "Abîmé", "Cassé"] }] } -
Envoi d'un point
Un formulaire, une application ou un script envoie le point à l'API. Chaque champ est validé selon son type.
POST /api/collections/bancs/pointscurl -X POST https://votre-instance.org/api/collections/bancs/points \ -H 'Content-Type: application/json' \ -d '{"lat": 45.764, "lng": 4.8357, "properties": {"etat": "Abîmé"}}' # {"status":"pending"} -
Modération
Le point apparaît dans la page Modération du back-office, à sa position sur la carte. Il est validé, modifié, refusé ou supprimé.
-
Publication
Une fois validé, le point est renvoyé par
GET /api/collections/bancs/pointset affiché sur le site public s'il est activé.
Installation
Prérequis : PHP 8.1 ou supérieur, extensions pdo_sqlite, gd et openssl.
- Copie des fichiers sur l'hébergement (archive du dépôt).
- Droits d'écriture sur
data/. - Création du premier compte sur
/admin/, avec la double authentification. - Création d'une collection dans l'éditeur de schéma.
- Activation du site public, en option, dans la page « Site public ».
Code source
Le code source est publié sous licence MIT. Il est écrit en PHP et en JavaScript, sans dépendance à installer. Les questions et les contributions passent par les tickets du dépôt.