BarcodeFinder est une plateforme web développé sous Symfony 6 permettant d'obtenir les détails d'un produit physique à l'aide de son numéro de code-barres (appelé aussi ISBN/EAN). La plateforme intègre un système d'API, accompagné de sa documentation auto-généré par la bibliothèque API Platform afin de pouvoir réutiliser les différentes données générées depuis une autre application (par exemple pour un scanner de code-barres mobile).
BarcodeFinder offre plusieurs fonctionnalités intéressantes aussi bien aux utilisateurs qu'aux développeurs dont voici :
Fonctionnalité principale de la plateforme, vous trouvez toutes les informations relatives au produit recherché depuis son code-barres !
Afin de faciliter l'exportation des données d'une application à l'autre, BarcodeFinder intègre un système d'API muni d'une documentation où vous pourrez tester les différentes requêtes disponibles. Un système d'authentification de compte par token JWT est également intégré afin de réaliser vos tests en toutes sécurités.
Chaque utilisateur dispose d'une bibliothèque personnelle à laquelle il est possible d'enregistrer n'importe quel produit recherché depuis la barre de recherche de la plateforme. Cela permet de retrouver plus facilement lors des prochaines visites les produits trouvés qui semble être intéressants.
A venir
Avant de procéder à l'étape d'installation du projet, veuillez vous prémunir au minimum des éléments suivants :
- Un serveur web PHP 8.1 minimum
- Une base de données SQL (PostgresSQL ou MySQL)
- La bibliothèque de dépendances PHP Composer
- Un serveur de mail SMTP (pour l'envoi du mail de confirmation de compte et réinitialisation de mot de passe)
Pour commencer déplacez l'ensemble des fichiers du projet vers votre le FTP de votre serveur.
-
Installer la dépendance PHP suivante :
composer require symfony/apache-pack
-
Modifier le fichier .htaccess depuis la racine du projet, précédemment généré par la dépendance, de la manière suivante :
<VirtualHost *:80>
ServerName domain.tld
ServerAlias www.domain.tld
DocumentRoot /var/www/barcodefinder/public
<Directory /var/www/barcodefinder/public>
AllowOverride All
Order Allow,Deny
Allow from All
</Directory>
ErrorLog /var/log/apache2/project_error.log
CustomLog /var/log/apache2/project_access.log combined
</VirtualHost>
- Une fois terminé, sauvegardé le fichier (relancer apache2 si besoin)
En utilisant Nginx l'avantage sera que vous n'aurez pas besoin spécialement de .htaccess pour pointer le projet vers le répertoire /public. Il suffira juste de modifier le bloc serveur du domaine de la manière suivante :
-
Rendez-vous depuis le répertoire de configuration de votre site sous Nginx (ex : /etc/nginx/sites-available)
-
Modifier le fichier .conf qui correspond au nom de domaine où BarcodeFinder sera installé et et pointer votre nom de domaine vers le répertoire /public (root).
server {
server_name domain.tld www.domain.tld;
root /var/www/project/public;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
}
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
- Sauvegarder et rédémarrer nginx (
systemctl restart nginx
)
Dirigez-vous vers la racine du projet et tapez la commande composer suivante : composer install
Cela installera l'ensemble des dépendances PHP (via le répertoire /vendor) nécessaire au bon fonctionnement de la plateforme. Cette opération peut prendre de quelques secondes à quelques minutes selon votre débit internet.
Avant de commencer, assurez-vous d'avoir un serveur PostgresSQL ou MySQL fonctionnel avec des identifiants valides et des droits suffisants pour la création de la base de données (via Doctrine).
- Editer le fichier ".env" situé à la racine du projet et décommenter l'une des variable DATABASE_URL suivantes en mettant les bons identifiants de votre base :
# Pour un serveur MySQL
# DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7&charset=utf8mb4"
# Pour une serveur PostgresSQL
# DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
-
Lancer la commande de création de la base de données :
php bin/console doctrine:database:create
-
Lancer la commande de création des entités (tables) SQL :
php bin/console make:migration
-
Lancer la commande d'exécution des migrations (voir les requêtes effectuées depuis le fichier de migrations créer depuis le répertoire "migrations" :
php bin/console doctrine:migrations:migrate
Avant de commencer, assurez-vous d'avoir un serveur de mail SMTP fonctionnel avec des identifiants valides et avec des droits d'accès suffisants
- Editer le fichier ".env" situé à la racine du projet et modifier la ligne suivante en remplaçant les identifiants par les votres (user, password, hostname, port) :
MAILER_DSN=smtp://user:password@hostname:port
- Sauvegarder le fichier
Messagerie en local
- Télécharger link Mailhog.
- Lancer l'executable .exe
- Se rendre : http://localhost:8025/
# .env
MAILER_DSN=smtp://localhost:1025
- Le mail est dans votre boite de réception
Afin de gébérer vos clés SSL, tapez la commande suivante : php bin/console lexik:jwt:generate-keypair
Cela devrait vous créer deux certificats SSL depuis le répertoire "config/jwt".
🎉 Félicitations ! Désormais le projet devrait être fonctionnel et visualisable depuis votre site web ! 🎉