Git Product home page Git Product logo

naturadapt's Introduction

NaturAdapt

Install

Clone the repository, install composer then run:

composer install

Copy .env to .env.local and change the settings, particulary:

  • APP_ENV
  • DATABASE_URL
  • DATABASE_PREFIX

If necessary, create the DB:

php bin/console doctrine:database:create

Create the tables:

php bin/console doctrine:migrations:migrate

Create the file containing administrators informations

test ! -f config/platform/config.yaml && cp config/platform/default.config.yaml config/platform/config.yaml || true

cp config/platform/default.config.yaml config/platform/config.yaml

Inserting default data

The plateform uses data like taxonomies to be fully functionnal. Default data can be inserted via PHP commands.

Skills

Default skills are defined as slugs in the Command src/Command/ImportSkillsCommand.php

To import default Skills, run

php bin/console import:skills

Eventually, additionnal skills can be directly in the database.

Skills translations in the differents languages are managed via Symfony translations via the specific skills domain. ex: translations/skills.fr.yml

General group

If the env variable COMMUNITY_SLUG is defined, the corresponding group will be defacto the "general" group, and every user registred will be by default a member of this group.

Fixtures

Fill the plateform with Lorem Ipsum:

php bin/console doctrine:fixtures:load

Toolbox

Activate a user:

php bin/console user:activate <user-email>

Deactivate a user:

php bin/console user:deactivate <user-email>

Give ROLE_ADMIN to a user:

php bin/console user:set-admin <user-email>

Indexes

Generate all indexes:

php bin/console search:reindex:all

Generate one index (pages, discussions_messages, articles, documents, groups, members)

php bin/console search:reindex <index>

Map Informations

For each user, get Latitude and Longitude from city, zipcode and Country

php bin/console app:update-coordinates

For each user, convert Latitude and Longitude into NutsId

php bin/console app:update-nuts-id

FAQ

How to force https ?

Edit your .env and a SECURE_SCHEME variable with https

How to handle proxies ?

You can add TRUSTED_PROXIES to your .env.

Or you can add a TRUST_ALL=1 to always forward the HEADER_X_FORWARDED_* headers, as mentionned on https://symfony.com/doc/current/deployment/proxies.html.

naturadapt's People

Contributors

aschlegle avatar dependabot[bot] avatar kstefanini avatar spone avatar verovs avatar ya-web avatar zemax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

naturadapt's Issues

Spécifications newsletter

Principe de base

  • Il y a une newsletter "Communauté" qui est envoyée à tous les inscrits.
  • Il y a aussi une newsletter par groupe, même si probablement seuls quelques groupes l'utiliseront pas.
  • La maquette de l'e-mail de newsletter va être préparée sur #14

Création d'une newsletter

  • Les admins du groupe ont accès à une page de liste des précédentes newsletters (#13) et à un formulaire de création de newsletter (#12)
  • Une newsletter est composée à la fois de textes écrits spécifiquement, et de contenus existants sur la plateforme, sélectionnés manuellement.
  • On envisagea aussi une partie "personnalisée", différente pour chaque utilisateur (l'idée est d'afficher les group_events des groupes dont l'utilisateur fait partie)

Envoi

Désinscription

  • Gérer le statut d'inscription pour la newsletter de chaque groupe.
  • Générer pour chaque utilisateur un token de désinscription, qui sera utilisé pour le lien de désinscription en bas de chaque e-mail envoyé

Formulaire newsletter

  • Sujet du mail
  • Introduction
  • Image de couverture
  • Sélection des actualités à intégrer
  • Bouton d'envoi d'un mail de test
  • Bouton d'envoi de la newsletter

Inspirations

Screen Shot 2019-06-13 at 15(1)

Liste des groupes

Liste des groupes, non connecté : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/f49c6822-659a-4162-aa1c-8d3ddb0eb2ea/Homepage-non-connect-e-?hints=off

Liste des groupes, connecté : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/7e816a0c-497e-4cf5-b41a-bbb84849e82a/Homepage-non-connect-e-?hints=off

  • Champ de recherche

  • Liste des groupes (premier groupe = "général") basée sur des cartes groupe #19

  • ajouter icône cadenas sur groupes privés

  • ajouter icône check sur les groupes dont on fait partie

  • changer les images sur les 3 premiers groupes + liseré blanc

image

Liste des newsletters

  • Liste des newsletters envoyées (archives) sous forme de tableau
  • Si membre du groupe :
    • Paramètre d'inscription à la newsletter : oui / non
  • Si admin du groupe :
    • Afficher les newsletters en brouillon dans le tableau

Carte groupe

  • Nom du groupe
  • Description
  • Icône / logo
  • Cover (éventuellement)
  • Date de dernière activité
  • Nombre d'utilisateurs ou liste des utilisateurs (inspiration Basecamp)
  • Visibilité : public / privé
  • si connecté : indicateur sur les groupes dont l'utilisateur est membre / admin ?

Inspiration

image

image

image

Newsletter

  • Titre
  • Image de couverture
  • Introduction
  • Liste des actualités
  • Fil d'actualité personnalisé suivant les groupes dont l'utilisateur fait partie ?

Newsletter actuelle

Screen Shot 2019-06-13 at 15

Inspirations

image

image

image

image

Éditeur WYSIWYG

Des suggestions / souhaits pour le choix de l'éditeur WYSIWYG ? Il me semble que tu m'en avais cité un particulier ?

Schémas d'URL

Cette issue pour discuter des schémas d'URL.

Voici une première ébauche pour amorcer la discussion :

Groupes

Chemin Verbe Action
/groups GET Liste des groupes
/groups/new GET Formulaire de création d'un groupe
/groups POST Création d'un groupe
/groups/:slug GET Consultation d'un groupe
/groups/:slug/edit GET Formulaire de modification d'un groupe
/groups/:slug PATCH / PUT Mise à jour d'un groupe
/groups/:slug DESTROY Suppression d'un groupe

Annuaire

Chemin Verbe Action
/members/:id GET Consultation du profil d'un membre
/groups/:slug/members GET Liste des membres du groupe
/groups/:slug/members/new GET Formulaire d'invitation de membres au groupe
/groups/:slug/members POST Ajout des membres
/members/:slug PATCH / PUT Mise à jour d'un membre (par un admin)

Actualités

Chemin Verbe Action
/groups/:slug/articles GET Liste des actualités du groupe
/groups/:slug/articles/new GET Formulaire de création d'une actu
/groups/:slug/articles POST Création d'une actualité
/groups/:slug/articles/:slug GET Consultation d'une actu
/groups/:slug/articles/:id/edit GET Formulaire de modification d'une actu
/groups/:slug/articles/:id ou /stories/:id ? PATCH / PUT Mise à jour d'une actu
/groups/:slug/articles/:id ou /stories/:id ? DESTROY Suppression d'une actu

(à compléter)

Colonnes sur homepage

Est-ce volontaire que les 3 colonnes sur la maquette de la HP n'aient pas le même gap que les autres 3 colonnes du site (comme pour la liste des groupes par exemple) ?

Versioning des pages

Pour permettre de revenir en arrière après des modifications non-souhaitées (fausse manipulation ou spam), on souhaite stocker toutes les versions des pages.

Pour le moment on ne prévoit pas d'interface pour ça, mais ça permettra d'en ajouter une plus tard.

A chaque version est associé un auteur, ce qui permettra par la même occasion d'avoir accès à la liste de tous les contributeurs à une page.

Documenter l'ajout de "compétences"

Est-il possible de documenter dans le README ou dans un fichier Markdown à l'intérieur du projet, la manière d'ajouter des "compétences" au formulaire de profil ? Quels sont les fichiers à modifier ? Y a-t-il une manip particulière à faire ou est-ce qu'il suffit de redéployer ?

Je pense que ce sera une demande que l'on peut anticiper et si c'est documenté, je pourrai m'en charger directement :)

Verrouillage des pages

Il est pertinent que la plupart des pages soient modifiables par tous les membres du groupe auquel elles appartiennent, pour limiter la barrière à la contribution.

En revanche, certaines pages seront plus "exposées" (page d'accueil, à propos etc.), et on souhaite pour celles-ci avoir un mécanisme de verrouillage, permettant de limiter la modification aux administrateurs du groupe.

En terme d'interface, cela peut être fait sous la forme d'une case à cocher (accessible uniquement aux admins) sur le formulaire d'édition d'une page. Une fois la case cochée, seuls les admins ont la possibilité d'éditer cette page.

Accueil du groupe

Groupe public, non membre : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/0975a46d-cac2-4bb7-b764-213469f6a2f5/Accueil-Groupe-Public-Connect-?hints=off
https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/86fec138-f386-4140-a9fe-27a162440ce2/Accueil-Groupe-Public-Connect-?hints=off

Groupe public, non membre, vide : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/88ca23ed-4e1d-49f3-8b1b-31462c0fcbf5/Accueil-Groupe-Public-Connect-Empty-box?hints=off

Groupe Privée, non membre ; https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/cee67f3f-7475-4440-9093-b9a7a2ba7a79/Accueil-Groupe-Priv-Connect-?hints=off

Groupe, membre : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/e6e57219-d008-429d-971b-2a24264f86cd/Accueil-Groupe-Public-Connect-?hints=off

Groupe membre administrateur : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/51c30983-c686-42c3-b303-2d478f33e480/Accueil-Groupe-Public-Connect-Admin?hints=off

  • Nom du groupe
  • Cover
  • Icône / logo
  • Navigation dans les outils disponibles (onglets ou blocs ?)
  • Description
  • Si non-connecté :
    • Si groupe public :
      • Présentation
      • Fil d'actualité
    • Si groupe privé :
      • Présentation
  • Si connecté :
    • Si membre du groupe :
      • Présentation (repliée)
      • Fil d'actualité
    • Si non-membre du groupe : cf. si non-connecté

Inspirations

image

  • modifier logo + cover

image

  • ajouter icône cadenas si groupe privé
  • ajouter étoile à côté des admins dans la liste
  • renommer page "Présentation" en "Historique" pour éviter la confusion
  • prévoir l'état vide de chaque bloc (bouton "Créer votre première page")

Inscription : checkbox CGU

Il faudra améliorer l'interface inscription en ajoutant une case à cocher : J'accepte les conditions d'utilisations de la plateforme (+link sur la page mentions légales/CGU dont je n'ai pas encore l'URL )

Désolée d'y penser que maintenant. A faire après le déploiement de juin 2019.

Page de contenu

Page contenu, admin : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/f31e90d7-b0c5-4442-989c-c988888ea290/A-propos-de-la-plateforme-Administrateur?hints=off

Page contenu, non-admin : https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/e2c2d325-b5ad-43b5-b8b0-2436a6b6f76f/A-propos-de-la-plateforme-?hints=off

  • Titre

  • Date de dernière modification

  • Contenu rich text

  • Sommaire (liste des intertitres de la page ?)

  • Table des matières (liste des pages existantes dans le groupe ?) cf. #18

  • Auteur(s) sous forme de carte membre #20

  • Faire une version avec un fil d'Ariane (page d'un groupe)

Footer

  • Liens au choix de l'admin de la plateforme

Redirection vers domaine canonique

Toutes les requêtes faites vers naturadapt.fr/* et naturadapt.eu/* doivent être redirigées (redirection 301) vers naturadapt.com en préservant le chemin.

@zemax est-il possible/facile de faire ça au niveau applicatif avec Symfony ?

Schéma de BDD

Voilà une première ébauche du schéma de base :

image

  • users : tous les utilisateurs inscrits sur la plateforme
  • groups : les groupes que les utilisateurs peuvent rejoindre (on parlait avant de "projets" mais on préfère le terme de groupe, plus générique)
  • categories : thématiques permettant d'organiser les groupes
  • group_events : tous les évènements qui se passent sur un groupe, qui s'afficheront dans son fil d'actualité (utilisateur qui rejoint ou quitte le groupe, document ajouté, nouvelle actualité etc.)
  • articles : article d'actualité rédigé dans un groupe
  • newsletters : chaque groupe peut envoyer une newsletter à ses membres (probablement mensuellement). Cette newsletter est composée d'articles sélectionnés manuellement et d'une partie "personnalisée", différente pour chaque utilisateur (l'idée est d'afficher les group_events des groupes dons l'utilisateur fait partie)
  • files : les fichiers uploadés dans le porte-documents du groupe (documents PDF, Word, Excel, vidéos, lien vers des documents externes type Google Drive ou Framapad)
  • photos : les photos uploadées dans l'album photos d'un groupe
  • settings : une table destinée à stocker les paramètres de l'instance

Il manque probablement des champs. Dispo pour en discuter.
Il manque aussi les tables pour les forums de discussion ainsi que les pages de contenu éditables.

Carte membre

Cette carte s'affiche au survol d'un avatar.

  • Nom complet
  • Avatar
  • Localisation
  • Date de dernière activité ?
  • Compétences ? (tags)
  • Employeur / structure ?

Inspirations

image

Annuaire

https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/e2dc3979-31e7-4326-a977-48d28314895e/Annuaire-des-membres-Communaut-1?hints=off

  • Champ de recherche

  • Filtres :

    • par date d'inscription au groupe (défaut)
    • par emplacement géographique
    • par ordre alphabétique
    • par compétence
    • ...
  • Liste des membres sous forme de cartes membre #20, groupés selon le filtre choisi

  • Carte géographique "filaire" si "par emplacement géographique" est sélectionné

  • Prévoir l'état de la page pour les admins, avec : des membres en attente en haut de la liste, des membres bannis en bas + enlever la flèche + ajouter une icône pour chaque action :

Si en attente : ✔️ Accepter / ⚔️ Décliner / 🚫 Bannir
Si membre : ⭐ Promouvoir admin / Retirer du groupe / Bannir
Si bannir : Retirer le bannissement

  • filtre par statut (A valider, Membre, Banni)

Accueil connecté (tableau de bord)

https://xd.adobe.com/view/fadc33db-9c84-4133-6ae0-c1bd5539049f-8ced/screen/d27734fa-e22a-455b-bb70-aea20c5bc348/Homepage-Connect-?hints=off

  • Message de bienvenue

  • Prochaines étapes (pour l'onboarding)

  • Champ de recherche

  • Liste des groupes dont l'utilisateur est membre (inspiration)

  • Fil d'actualités dans les groupes dont l'utilisateur est membre (inspiration dashboard Github ci-dessous)

  • Liste des autres groupes basée sur des cartes groupe #19

  • Retirer le bloc "profil" sous le bloc "suggestion"

Inspiration

image

image

Matrice des droits

Action Visiteur Membre Administrateur
S'inscrire
Créer un groupe
Rejoindre un groupe public
Rejoindre un groupe privé ✓ (après modération)
Voir le contenu d'un groupe public
Voir le contenu d'un groupe privé ✓ (si membre)
Créer une discussion
Répondre à une discussion
Supprimer son propre compte utilisateur
Désactiver un utilisateur

(à compléter au fur et à mesure)

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.