Il s'agit d'une application Web Laravel pour les projets et les questionnaires du crowdsourcing.
.env.envL'offre du code sous licence open source comprend de nombreux avantages. Parmi ceux-ci, ceux liés à notre projet, sont:
Installation officielle des ECAS
Installation officielle de glissade
Les instructions de configuration ont été divisées en deux sections pour plus de clarté:
Quelle que soit la méthode d'installation, vous devrez exécuter les commandes suivantes pour configurer l'application.
Ces commandes doivent être exécutées en dehors de n'importe quel conteneur Docker:
sudo chown -R ` whoami ` :www-data storage
chmod 775 storage
cd storage/
find . -type f -exec chmod 664 {} ;
find . -type d -exec chmod 775 {} ;Selon la méthode d'installation, vous devez exécuter le reste des étapes dans le conteneur Docker ou sur votre machine locale.
Remarque: Si vous utilisez Docker Compose, vous aurez d'abord besoin d'abord de saisir le conteneur PHP:
docker exec -it crowdsourcing_platform_server bashpuis exécutez le reste des commandes.
Si vous exécutez les commandes sur votre machine locale, vous pouvez exécuter directement les commandes suivantes.
Si vous avez commencé DDEV, vous devez exécuter toutes les commandes préfixées avec ddev exec .
.envAprès le clonage du projet, créez un fichier .env (devrait être une copie de .env.example):
cp .env.example .envDans le cas d'une installation non-Docker, vous devrez créer une base de données pour l'application.
Dans le cas d'un environnement Docker, entrez le conteneur crowdsourcing_platform_db et créez une base de données nommée crowdsourcing_db_docker :
docker exec -it crowdsourcing_platform_db bashEntrez le shell MySQL:
mysql -u root -pEnsuite, exécutez la commande mysql suivante:
CREATE DATABASE IF NOT EXISTS crowdsourcing_db_docker;Vous devrez d'abord entrer dans le conteneur DB:
docker exec -it crowdsourcing_platform_db bashSi vous avez un fichier de vidage MySQL existant, assurez-vous que c'est dans le répertoire actuel et importez-le dans la base de données:
mysql -u root -p crowdsourcing_db_docker < dump.sql Ensuite, ajoutez ce qui suit au fichier .env :
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=crowdsourcing_db_docker
DB_USERNAME=root
DB_PASSWORD=rootRemarque: Si vous utilisez Docker Compose, vous aurez d'abord besoin de saisir le conteneur du serveur :
docker exec -it crowdsourcing_platform_server bashphp artisan migratephp artisan db:seedEntrez le conteneur PHP (si vous utilisez Docker Compose):
docker exec -it crowdsourcing_platform_server bashEnsuite, exécutez les commandes suivantes:
composer install
composer dump-autoloadphp artisan key:generatenpm install
npm run dev # (if in development mode, use for live changes)
npm run build # (if in development mode)
npm run prod # (if in production mode)Par défaut, les images sont stockées sur App / Storage / Public. Courir
php artisan storage:link.env Puis persistez les paramètres .env sur Laravel Cache:
php artisan config:cacheAfin de lier ce dossier avec le répertoire public
Cette application utilise le plugin Laravel sociale pour gérer la connexion sociale.
Afin de le faire fonctionner dans votre environnement de développement, vous devez vous assurer que vous avez des clés et des secrets API pour Facebook et Twitter (guides ici et ici), et que vous pouvez accéder à https: //dev.crowdsourcing/ (remarquez les https) sur votre machine.
Un guide pour activer HTTPS sur votre machine locale peut être trouvé ici.
Fondamentalement, vous devez courir
openssl req -new -sha256 -newkey rsa:2048 -nodes
-keyout dev.crowdsourcing.key -x509 -days 365
-out dev.crowdsourcing.crtRéférencer les 2 fichiers générés dans le fichier de configuration Nginx de l'application. Assurez-vous de changer le port en 443 comme indiqué ci-dessous:
server {
listen 443 ssl;
server_name dev.crowdsourcing;
ssl_certificate /path/to/dev.crowdsourcing.crt;
ssl_certificate_key /path/to/dev.crowdsourcing.key;
root /var/www/crowdsourcing/public;
add_header X-Frame-Options "SAMEORIGIN" ;
add_header X-XSS-Protection "1; mode=block" ;
add_header X-Content-Type-Options "nosniff" ;
index index.php index.html index.htm index.nginx-debian.html;
charset utf-8;
location / {
try_files $uri $uri / /index.php? $query_string ;
}
location = /favicon.ico { access_log off ; log_not_found off ; }
location = /robots.txt { access_log off ; log_not_found off ; }
error_page 404 /index.php;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
}
location ~ /.ht {
deny all ;
}
}Assurez-vous également de redémarrer Nginx, en fonctionnant
sudo systemctl restart nginx Cette application utilise le plugin Spatie - Laravel Sitemap, afin de créer le fichier public/sitemap.xml (qui est exclu de Git), qui sera rampé par les moteurs de recherche. Afin d'exécuter le générateur pour l'installation actuelle de l'application, exécutez la commande Laravel intégrée:
php artisan sitemap:generateCette application utilise Laravel Pint afin d'effectuer un style de code.
Afin d'exécuter le Styler, exécutez:
./vendor/bin/pint --test -v # the --test will not do any changes, it will just output the changes needed
./vendor/bin/pint -v # this command will actually perform the code style changes Cette application utilise Eslint et plus jolie afin d'effectuer un style de code.
Afin d'exécuter le styler et le formateur, exécutez:
npm run lint # this command will check the code style
npm run format # this command will format the code style Ce projet utilise le modèle d'administration gratuit.
Il utilise également le bootstrap 4
L'application peut être modifiée et personnalisée pour chaque installation. Dans le fichier .env vous pouvez définir la variable INSTALLATION_RESOURCES_DIR en conséquence. Cette variable doit prendre une valeur qui représente un nom de répertoire dans le répertoire resourcess/views/home/partials . Par exemple, consultez le répertoire resourcess/views/home/partials/together . Ce répertoire doit contenir les fichiers de lame partiels pour l'installation.
Cette partie de la documentation décrit la structure du répertoire de l'application Laravel.
Il est principalement étendu aux répertoires et fichiers personnalisés utilisés dans l'application. Pour la structure du répertoire général de Laravel, veuillez vous référer à la documentation officielle.
├── app # Laravel application directory
│ ├── BusinessLogicLayer # Business Logic Layer classes (services that contain the business logic and delegate from Controllers towards the Data Access Layer)
│ ├── Http/Controllers # Controllers directory (classes that handle the HTTP requests, perform the necessary validations/operations and return the responses)
│ ├── Http/Middleware # Middleware directory (classes that handle the HTTP requests before they reach the Controllers)
│ ├── Models # Models directory (ORM classes that represent the database tables and contain the relationships between them)
│ ├── Notifications # Notifications directory (classes that handle the notifications, like emails)
│ ├── ViewModels # View Models directory (classes that contain the data that will be passed to the views)
│ ├── Repository # Repository directory (classes that handle the database operations and contain the DB/ORM queries)
│ resources # Resources directory (contains the views, assets, front-end files, and other resources)
│ ├── views # Views directory (contains the blade files that are used to render the HTML)
│ ├── assets # Assets directory (contains the front-end assets like CSS, JS, images, etc.)
│ ├── js # JavaScript files (contains the Vue.js components and other JS files)
│ ├── sass # SASS files (contains the SASS files that are compiled to CSS)
│ ├── lang # Language files (contains the language files for the translations)
L'application utilise le modèle de référentiel pour séparer la logique métier de la logique d'accès aux données.
Toutes les opérations de base de données sont gérées par les classes de référentiel, qui contiennent les requêtes DB / ORM.
Ces classes sont situées dans le répertoire app/Repository , et elles étendent toutes la classe app/Repository/Repository .
Chaque classe d'enfants représente une table / entité de base de données et contient les requêtes de ce tableau. Cette entité est définie dans le répertoire app/Models et est référencée par la classe de référentiel enfant, dans la méthode getModelClassName .
Ainsi, nous pouvons utiliser les méthodes de base définies dans la classe Repository , comme getAll , getById , create , update , sans avoir à écrire les mêmes requêtes dans chaque classe enfant. Nous pouvons également définir des requêtes personnalisées dans les classes enfants, ou remplacer les méthodes de base si nécessaire.
Les classes de référentiel sont utilisées par les classes de couche de logique métier, qui contiennent la logique métier et déléguent des contrôleurs vers la couche d'accès aux données.
Plus d'informations sur le modèle de référentiel peuvent être trouvées ici.
Assurez-vous que vous avez effacé tout cache et fichiers de configuration:
php artisan cache:clear
php artisan config:clearCréez le fichier de base de données de test:
touch storage/database_testing.sqliteDonnez les autorisations nécessaires au fichier de base de données de test:
chmod 777 storage/database_testing.sqliteEnsuite, assurez-vous que vous avez configuré la base de données de test:
Exécutez les migrations et les semets pour la base de données de test:
php artisan migrate:fresh --seed --env=testing --database=sqlite_testingphp artisan test Vous pouvez exécuter les tests à l'aide de la commande php artisan test , qui est une commande Laravel intégrée.
Et enfin, exécutez les tests:
# Note that you filter the tests by using the --filter flag (without the = sign)
php artisan test --env=testing --filter {METHOD OR CLASS NAME} --coveragerun-tests.sh Vous pouvez également exécuter les tests à l'aide du script run-tests.sh , qui est un wrapper autour de la commande phpunit.
chmod +x run-tests.sh
./run-tests.sh Cela peut également prendre tous les arguments (comme le --filter ou --coverage drapeau de couverture) que vous passeriez à la commande phpunit.
./run-tests.sh --filter {METHOD OR CLASS NAME}ou
./run-tests.sh --coverageEn utilisant Docker Compose, vous pouvez déboguer l'application en suivant ces étapes:
docker compose up pour démarrer les conteneurs..vscode/launch.json avec le contenu suivant: {
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
"port" : 9003 ,
"pathMappings" : {
"/var/www" : " ${workspaceFolder} "
},
"log" : true
}
]
}Vous pouvez maintenant commencer à déboguer votre demande.
Pour déboguer les tests:
docker exec -it crowdsourcing_platform_server bash pour entrer le conteneur PHP.php artisan app:test --filter {METHOD OR CLASS NAME} . Par exemple, php artisan app:test --filter authenticatedNonAdminUserCannotAccessCreatePage . Si vous rencontrez des problèmes, reportez-vous aux étapes suivantes:
docker compose logssystemctl status nginx et systemctl status php-fpmstorage/logs/laravel.log.env a les informations d'identification de base de données correctessystemctl status mysqlnginx -t Pour contribuer à l'application, suivez ces étapes:
git checkout -b <branch_name> .git commit -m '<commit_message>'git push origin <project_name>/<location>Ce projet est un logiciel open-open sous licence Apache, version 2.0.
Ce projet est développé par SCIY et ECAS et est basé sur le cadre Laravel. Le projet est maintenu par SCIFY.
Certaines des images utilisées dans l'application proviennent de Freepik.
N'hésitez pas à contacter les responsables du projet: