.idea | ||
assets | ||
bin | ||
config | ||
docs | ||
migrations | ||
public | ||
src | ||
templates | ||
tests | ||
translations | ||
.env | ||
.env.dev | ||
.env.test | ||
.gitignore | ||
cipherbliss-osm-commerce.config.caddy | ||
compose.override.yaml | ||
compose.yaml | ||
composer.json | ||
composer.lock | ||
labourage.sh | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
phpunit.xml.dist | ||
README.md | ||
symfony.lock | ||
test_budget.php | ||
test_budget_symfony.php | ||
test_import_stats.json | ||
webpack.config.js |
OSM Commerces
dépot pour faire une démo de "OSM mon commerce", permettant de modifier des commerces sans avoir de compte OSM. Ce projet permet d'avoir un tableau de bord pour une zone donnée concernant la completion de commerces et autres lieux d'intérêt amenés à être mis à jour en autonomie par les personnes qui y travaillent.
Configurer .env.local pour mettre le token bearer d'un compte dédié installer les dépendances avec composer déployer sur un serveur ayant du php 8
Dépendances
- PHP 8.1 ou supérieur
- Composer
- PostgreSQL 13 ou supérieur, ou Mysql / MariaDB
- Symfony 7.2
- Extensions PHP requises :
- pdo_pgsql
- xml
- intl
- mbstring
Base de données
créer un utilisateur et sa base
en postgresql
sudo -u postgres psql -c "CREATE USER sf WITH PASSWORD 'sfrgdHYJi56631lyshFSQGfd45452ùwdf54f8fg5dfhg5_tyfdgthIOPHFUGH';"
sudo -u postgres psql -c "CREATE DATABASE \"osm-my-commerce\" OWNER sf;"
en mysql
mysql -u root -p
CREATE USER 'sf'@'localhost' IDENTIFIED BY 'sfrgdHYJi56631lyshFSQGfd45452ùwdf54f8fg5dfhg5_tyfdgthIOPHFUGH';
CREATE DATABASE `osm-my-commerce`;
GRANT ALL PRIVILEGES ON `osm-my-commerce`.* TO 'sf'@'localhost';
FLUSH PRIVILEGES;
Installation et configuration
1. Installation des dépendances
composer install
npm install
2. Configuration de l'environnement
Créer un fichier .env.local
avec les variables suivantes :
DATABASE_URL="mysql://sf:sfrgdHYJi56631lyshFSQGfd45452ùwdf54f8fg5dfhg5_tyfdgthIOPHFUGH@127.0.0.1:3306/osm-my-commerce?serverVersion=8.0.32&charset=utf8mb4"
# ou pour PostgreSQL :
# DATABASE_URL="postgresql://sf:sfrgdHYJi56631lyshFSQGfd45452ùwdf54f8fg5dfhg5_tyfdgthIOPHFUGH@127.0.0.1:5432/osm-my-commerce?serverVersion=15&charset=utf8"
# Token OSM pour les modifications
OSM_TOKEN="votre_token_osm_ici"
3. Migrations de base de données
Créer une nouvelle migration
php bin/console make:migration
Exécuter les migrations
php bin/console doctrine:migrations:migrate
Voir le statut des migrations
php bin/console doctrine:migrations:status
Annuler la dernière migration
php bin/console doctrine:migrations:migrate prev
Commandes custom Symfony
Commandes de gestion des données
Mise à jour des coordonnées des villes
Récupère et stocke les coordonnées lat/lon pour toutes les villes dans la base de données :
php bin/console app:update-city-coordinates
Test du budget
Teste le calcul du budget pour une ville donnée :
php bin/console app:test-budget [insee_code]
Labourage d'une ville
Ajoute une nouvelle ville à la base de données avec son code INSEE :
php bin/console app:labourage [insee_code]
Commandes de maintenance
Nettoyage du cache
php bin/console cache:clear
Validation du schéma de base de données
php bin/console doctrine:schema:validate
Mise à jour du schéma de base de données
php bin/console doctrine:schema:update --force
Fonctionnalités principales
Interface publique
- Page d'accueil : Carte interactive des villes avec taux de complétion
- Ajouter ma ville : Formulaire pour ajouter une nouvelle ville
- Statistiques par ville : Graphiques détaillés de progression
- Graphiques thématiques : Suivi spécifique par type d'objet (ex: arrêts de bus, bornes de recharge, etc.)
Interface d'administration
- Tableau de bord : Vue d'ensemble des statistiques
- Gestion des villes : Ajout, modification, suppression
- Suivi des modifications : Historique des changements
- Export de données : CSV, JSON, API Overpass
API et intégrations
- API Overpass : Récupération de données OSM
- Nominatim : Géocodage des adresses
- Addok : Service de géocodage alternatif
Structure du projet
src/
├── Command/ # Commandes custom Symfony
├── Controller/ # Contrôleurs (public et admin)
├── Entity/ # Entités Doctrine
├── Repository/ # Repositories Doctrine
├── Service/ # Services métier
└── Kernel.php # Configuration du kernel
templates/
├── admin/ # Templates d'administration
├── public/ # Templates publics
└── base.html.twig # Template de base
assets/ # Assets frontend (JS, CSS)
config/ # Configuration Symfony
migrations/ # Migrations de base de données
Développement
Ajouter une nouvelle commande
php bin/console make:command NomCommande
Ajouter une nouvelle entité
php bin/console make:entity NomEntite
Ajouter un nouveau contrôleur
php bin/console make:controller NomController
Tests
php bin/phpunit
Déploiement
Variables d'environnement de production
APP_ENV=prod
APP_SECRET=clé_secrète_ici
DATABASE_URL=url_de_la_base_production
OSM_TOKEN=token_osm_production
Optimisations
composer install --no-dev --optimize-autoloader
php bin/console cache:clear --env=prod