Giter Site home page Giter Site logo

pnx-si / geonature-citizen Goto Github PK

View Code? Open in Web Editor NEW
19.0 15.0 28.0 53.67 MB

Portail web d'inventaire citoyen de la biodiversité à destination du grand public

Home Page: https://pnx-si.github.io/GeoNature-citizen/

License: GNU Affero General Public License v3.0

Python 28.05% JavaScript 0.51% TypeScript 37.89% HTML 16.61% CSS 11.53% Shell 2.09% PLpgSQL 2.86% SCSS 0.14% Dockerfile 0.26% Mako 0.06%
citizen-participation citizen-science geonature geonature-citizen wildlife

geonature-citizen's People

Contributors

camillemonchicourt avatar dependabot[bot] avatar edelclaux avatar geobrun avatar hamoudaamine avatar hypsug0 avatar jbdesbas avatar jolleon avatar ktalbi avatar loanr avatar lpofredc avatar naomi-fischer avatar nobohan avatar orovellotti avatar pnpyrenees avatar quentinjouet avatar samuelpriou avatar xavyeah39 avatar xdidx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geonature-citizen's Issues

Valider une mission ?

Bonjour,

Doit-on mettre en place un moyen de "prouver" que la mission a bien été faite ?
( ex : Pour la mission "Observer 1 flamant rose" l'utilisateur doit fournir une photo du dit flamant rose qu'il a observé )

Ou de simples boutons "vu" et "pas vu" suffisent à valider ( ou non ) la mission ?

En vous remerciant de votre retour,

MCD GN-citizen

2018-07-18-mcd

Première réflexion sur le MCD.
En orange les référentiels avec lesquels l'application interagirait.
En vert les schémas de GeoNature avec lesquels elle pourrait communiquer.

A voir néanmoins comment permettre d'utiliser cette application indépendamment de GeoNature.

[NS] Page programme : Filtrage des données

Mettre en place le filtrage des données dans le bloc liste/carte. Deux options, selon moi la première à privilégier:

  1. Tout géré côté frontend, de mon point de vue le plus efficace et le plus efficace (sans si gros jeu de données).
  2. Filtrage côté backend via API.

Avoir plusieurs fonds de carte

Possibilité d'afficher le WMS de l'IGN.
Laisser la possibilité de basculer entre plusieurs fond Ortho et le Scan (cf Biodiv'Ecrins)
fond

Logo GeoNature citizen

Bonjour,
Puisque nous avons le nom de l'application (GeoNature citizen), il faudrait commencer à réfléchir à un logo.
La version professionnelle/associative de GeoNature s'oriente vers ce logo.
Il serait intéressant de conserver la couleur noire, la police de caractère et d'insérer un origami en lieu et place du colibri et de la fleur. Je pensais à la Saxifrage à fleurs nombreuses. Qu'en pensez vous ?

[NS] Affichage des images espèces et programmes

Tout la biodiversité n'est pas azuré :)

Mettre en place l'affichage des vignettes des espèces sur la carte/liste et dans le formulaire espèce avec les médias taxhub (médias tests disponibles via les scripts de @amandine-sahl sur TaxHub (https://github.com/PnX-SI/TaxHub/tree/master/data/scripts).

Reste à décider de la manière de gérer les médias chargés par les observateurs:

  • Affichés en remplacement de la vignette? (je doute de la qualité du rendu à cette taille)
  • Afficher sur un modal détaillant l'observations plus grand que celui actuel (cf. ci-dessous)?
  • Afficher une galerie des photos postées par les observateurs (sous la carte/liste?)
  • Autre propositions?

capture d ecran - 2019-03-04 a 23 41 07

Sights becomes Observations

The use of the term sights is wrong. It is replaced by observations in table name, fields name, functions and url.

Gestion des utlisateurs

Il est précisé dans le CCTP un système manuel qui permet de regrouper les utilisateurs dans plusieurs catégorie (observateur fiable, non fiable, scolaire, partenaires)

Est ce que c'est toujours d'actualité, quel est l'intérêt?

[NS] Page observateur: RGPD

Deux boutons gestion rgpd:

  • Supprimer le compte (anonymise automatiquement toutes les données attributaires en mettant NULL dans le champ de clé étrangère vers la table des utilisateurs > DELETE sur /api/user/delete
  • Exporter ses données personnelles (nom d'utilisateur, email, etc.) > GET sur /api/user/info

[NS] Page observateur: badges

L'utilisation des badges doit être optionnelle.

Mettre en place le moteur pour l'attribution et le déclenchement des badges.

Export pour GeoNature

Il faudra prévoir un export pour geoNature validation pour valider les observations

[NS] Redirection automatique de l'accueuil fonction du nombre de programmes

L'accueil de la plateforme doit s'adapter au nombre de programmes

Deux cas de figure:

  • 1 seul programme > on zappe le home et on arrive directement au programme:

    • redirection auto (guard dans le router du frontend) avec:
      • intro de la plateforme sur la page (bloc 1),
      • intro du programme (bloc2, à la place du bloc espèces du moment)
      • carte/liste du programme pour voir et participer (bloc3).
  • plus de 1 programme > fait office de home:

    • une page avec l'intro de la plateforme sur la page (bloc 1)
    • liste des programmes (bloc2) et la page programme contient donc:
      • intro du programme (bloc1, à la place du bloc espèces du moment)
      • carte/liste du programme pour voir et participer (bloc2).

Gestion des images, quel attributs pour les images collectées sur GeoNature-citizen

Pour moi ce sont tous des champs texte optionnels :

  • La légende peut être plus fine que le nom d'espèce (avec le lieu, le contexte...).
  • L'auteur du média est pas forcément le même que celui qui saisit l'observation
  • Source, c'est différent du programme, c'est l'éventuelle structure à l'origine du média (en complément de l'auteur)
  • Pour le licence, je ne sais pas si le portail peut l'imposer globalement, d'autant plus si le média a déjà une licence existante.

Mais tout ça est peut-être hors cadre pour des médias illustrant une observation.

Originally posted by @camillemonchicourt in #3 (comment)

[NS] Configuration

Il est donc nécessaire de pouvoir configurer la plateforme sur les trois dimensions suivantes:

Login :

  • Logger obligatoire
  • Logger ou non Logger
  • Jamais Logger

Programme:

  • Programme une espèces
  • Programme moins de 10 espèces
  • Programme plus de 10 espèces

Gamification:

  • Badges
  • Pas Badges

Est ce que vous pouvez préciser les cas ou vous vous situez?

[NS] Page programme : Positionnement du rendu de la carte

Par défaut, sur un écran ordinateur standard, lorsque l'on a côte à côte la liste des observations et la carte, le rendu de la carte est décalé vers la droite (correspondant au centrage de la vue lorsque la liste est repliée cf. images ci-dessous). Il faudrait que le territoire du programme soit toujours centré.

capture d ecran - 2019-02-26 a 12 45 10

capture d ecran - 2019-02-26 a 12 46 25

[NS] Rendu mobile

Sur petit écran (mobile), quelques retours :

  • la barre du haut prend beaucoup de hauteur, je propose réduire sa hauteur sur petit écran? Et/ou de la cacher si l'on descend sur la page.
  • le bloc liste/carte simultané sur la page rend la navigation difficile > passer chaque élément à 100% de hauteur? Tout comme l'ensemble des blocs
  • Comme pour sur ce ticket #55, il y a un problème de positionnement de la carte.
  • Si on clique sur un lien comme 'Participer au programme', on ne peut plus revenir en haut de page, ça nous renvoie immédiatement à l'ancre du lien.
    capture d ecran - 2019-03-08 a 00 01 16

capture d ecran - 2019-03-08 a 00 00 23

Saisie d'une observation, jointure avec les communes

Peupler le champ municipality de la table des observations.

Créer une fonction générique permettant de retrouver l'id_area de la municipality à partir d'une localisation côté backend.

Créer une fonction générique permettant de retrouver une commune (et son code insee ?) à partir de son id_area. à l'image de celle utilisée pour retrouver l'espèce d'après le cd_nom taxref.

[NS] Contenu de la page d'un programme

  • un seul bloc image description du programme (chapeau) et en savoir plus.
  • le bloc carte/liste des données avec filtrage sur commune (API de liste des communes d’un programme à écrire)/espèce (consulter l’api taxhub) par exemple avec TOUTES les obs & le bouton pour participer.
  • Travail à mener sur le volet utilisateur enregistré ou pas.
  • (bloc espèces du programme (d'après la liste taxhub? > non prioritaire, seulement si disponibilité de temps après les priorités 1,2,3).

Contours du projet (solutions logicielles)

Solutions logicielles

Développement réalisé sur Debian Stretch 64

  • Frontend

    • NodeJS 8.11.2
    • Angular 6.0.6
    • Leaflet 1.3.1
    • Bootstrap 4.1.1
  • Backend

    • Python 3.5
    • Flask (moteur de l'API)
    • Marshmallow
    • flask-jwt-extended (pour l'authentification)

Biolovision (wiki de l'API)

Quel nom pour GeoNature citizen ?

Bonjour à tous,
L'actuel nom GeoNature Citizen est plutôt efficace et clair mais je souhaite ouvrir ce sujet au cas ou il y aurait des idées meilleures.
Très sincèrement nous n'avons pas d'idées révolutionnaires, en voici quelques une soufflées par une collègue :
GeoNatura'List / Dataxon / Dataction / Biocitizen / Ecodata / Biodata / Tax(i)on(dubois) /Datalheuresilteplait ;)

Moteur de règles

  • Le but d'un système de récompense est d'être attractif, engageant et motivant pour les contributeurs
  • L'organisation doit décider des types de comportements ou d'accomplissements (relation durable, assiduité, dévouement, contribution essentielle, responsabilité et conformité) qu'elle souhaite encourager avec ce système de récompenses: tout ce qui est récompensé tend à se répéter.

⚠️ récompenses intrinsèques et extrinsèques

  • elles possèdent une surface et un symbolisme: elles signifient combien sont précieux ses contributeurs à l'organisation mais aussi leur importance vis-à-vis des uns et des autres.

Le débat est l'architecture et l'implémentation de ce système: pourquoi vouloir l'implémenter en SQL ?

portabilité: 0
expressivité: 0
maintenabilité: 0

S'il est question, effectivement, de raisonner sur des résultats d'observations, alors développons un autre système dédié et découplé du système de récompense.

Les contributeurs, l'environnement, les taxa observés vont toujours arriver à surprendre: le système de récompense demandera des réglages réguliers des pondérations en particulier au démarrage de l'expérience, sans socle de connaissance.

Une implémentation en python pourrait potentiellement être plus expressive, descriptive et beaucoup plus maintenable.

Ici, par exemple, un prototype sous forme d'automate ...
image
... avec une suggestion de config descriptive mais concise:

states = {
    'initial': 'Start',
    'Start': (None, None, [start_transitions]),
    'amateur_state': (User.attendance >= 3, 'bronze_state', [amateur_bronze,]),
    'bronze_state': (User.attendance >= 5, 'argent_state', [some_reducer,]),
    'bronze_state': (User.observations[-1].taxon.rarity >= 0.7, 'argent_state',[r1, r2,]),
    'bronze_state': (User.seniority >= 4 and User.attendance >= 5, 'argent_state', []),
    'argent_state': (User.attendance >= 10, 'or_state', [r3,]),
    'argent_state': (User.observations[-1].taxon.rarity >= 0.7, 'or_state', [r4,]),
    'argent_state': (User.attendance * User.observations[-1].taxon.rarity >= 7, 'or_state', [r5,]),
    'or_state': (None, None, None)
}
for old_state, (trigger, next_state, reducers) in states.items()
    ...

Module sites intégré dans le coeur de la plateforme ?

Dans le cadre d'un projet de recensement participatif des mares de l'agglomération de Grenoble, la LPO Isère et la Métropole de Grenoble ont lancé le développement d'un module "mares" dont la généricité pourra également s'appliquer à d'autres types de sites (arbres remarquables, bâtis, etc.). C'est ascan.io et @jolleon qui ont en charge ce projet.

Au regard de la complémentarité de cette approche "sites" avec celle d'observations opportunistes, je propose ce module, initialement prévue en module externe (gnc_site), intègre directement le cœur de l'application GeoNature-citizen. Le choix d'une approche "observation" ou une approche "site" sera alors défini au niveau du programme.

L'objectif de cette plateforme "site"

Il est de répertorier des sites (dans un premier temps des mares):

  • Pour chaque site, de pouvoir saisir des relevés à différentes dates (= visites, pour caractériser par exemple l'état de la mare) ;
  • Pour chaque site, de pouvoir saisir des observations d'espèces à différentes dates (dans la table des observations du module principal GeoNature-citizen).

Pour les visites

Pour plus de généricité et réduire les temps de développements pour cette première version, il a été choisi que le formulaire soit automatiquement généré à partir d'une structure JSON stockée en bdd dans une table "types de sites". Ainsi, chaque type de site pourra disposer d'un formulaire adapté.
Cette fonction devrait s'appuyer sur Angular6-json-schema-form ou sur ngx-formly.

De même, les données relevées lors des visites seront dans un premier temps stockées au format JSONB en bdd. Elles pourront être présentées sous la forme d'une table structurée par vues.

Pour les observations

La saisie des observations s'appuiera sur le formulaire en cours de développement dans le coeur de GeoNature-citizen. le lien entre les observations et les sites se fera par une table intermédiaire de correspondances.

Merci pour vos retours rapides.

Choix des ports

Le port 5001 du backend a été remplacé par le port 5002 dans cette PR #77. Le port 5001 étant déjà utilisé par usershubv2.

Les autre ports actuellement utilisés sont 4200 pour le frontend en service (pour le dev) et surtout 4000 pour le service en mode server side rendering.

Il serait intéressant que ces ports soient configurables pour éviter d'utiliser des ports déjà utilisés sans modifier le code source.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.