ai-startup-skills
创业公司做 AI 产品的 7 步 Agent Skill 合集:验证 → BP → 政策 → 路演 → 获客 → 定价 → 注册。
Translation pending
Carte interactive de l’accessibilité universelle au Plateau-Mont-Royal : commerces, logements, stationnement, débarcadères, bâtiments municipaux, toilettes, feux sonores et gains CCU, en couches activ
Translation pending
OtherGitHub @gabfortinOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Carte interactive de l’accessibilité universelle au Plateau-Mont-Royal : commerces, logements, stationnement, débarcadères, bâtiments municipaux, toilettes, feux sonores et gains CCU, en couches activables, à partir de données ouvertes et de saisies manuelles.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Carte interactive répertoriant, par couches activables/désactivables :
La barre de recherche (nom ou adresse) ne porte que sur les commerces : elle affiche les résultats correspondants dans un dropdown sous la barre, et filtre les marqueurs commerces affichés sur la carte. Cliquer un résultat centre la carte sur le commerce et ouvre son popup. Cette barre est masquée quand la couche Commerces est désactivée.
Quand on commence une recherche, les autres couches sont désactivées pour ne garder que les commerces sur la carte. On peut les réactiver à la main pendant la recherche.
data/*.json, une couche = un fichierLe chargement des fichiers data/*.json ne fonctionne pas en ouvrant index.html directement (file://). Lancer un petit serveur local :
python3 -m http.server 8000
# puis ouvrir http://localhost:8000
N'importe qui avec un compte GitHub peut proposer un ajout (bâtiment
municipal, commerce, débarcadère, stationnement accessible gratuit,
toilette accessible ou gain CCU) ou une mise à jour d'un item déjà publié
(description, photos) via les
gabarits d'issue. Une fois la soumission révisée
et approuvée (ajout du label pret-a-publier), son intégration dans les
fichiers data/*.json (et le téléchargement des photos dans img/items/)
est automatisée par
.github/workflows/integrer-soumission.yml,
qui ouvre une PR à réviser avant de merger. Le détail de ce pipeline est
dans scripts/integrate_submission.py.
Chaque couche a son fichier dans data/. Voir un exemple existant dans chaque fichier avant d'ajouter une entrée.
Les commerces, bâtiments municipaux, débarcadères, stationnements,
toilettes et gains CCU acceptent un champ optionnel images, une liste
de photos avec leur description, affichées dans le popup :
"images": [
{ "image": "img/items/commerces/mon-slug/1.jpg", "description": "Rampe d'accès à l'entrée principale" }
]
data/commerces.json)Champs calqués sur le format des avis Promo-Accès. Laisser un champ à null (ou l'omettre) si l'avis ne mentionne pas l'info. Les champs booléens (toilettes, animauxAssistance, mainsCourantes, ascenseur, salleEssayage, assistanceAuditive) acceptent aussi la valeur "non-verifie" quand l'avis précise que le point n'a pas pu être vérifié lors de la visite.
{
"id": "identifiant-unique",
"name": "Nom du commerce",
"category": "cafe | bar | restaurant | commerce | friperie | sante | culture | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": {
"level": "accessible | partiellement | non-accessible | inconnu",
"entree": "plain-pied | rampe | marche | inconnu",
"porteAutomatique": true,
"toilettes": true,
"stationnement": false,
"animauxAssistance": true,
"mainsCourantes": true,
"etages": 1,
"ascenseur": true,
"salleEssayage": null,
"mobilierAmovible": true,
"terrasseAccessible": true,
"terminalPaiement": "Bouton, amovible",
"menuNumerique": true,
"assistanceAuditive": true,
"notes": "Détails libres sur l'accessibilité (ex: équipement en panne au moment de la visite)"
},
"source": {
"reviewer": "Promo-Accès",
"date": "AAAA-MM ou AAAA-MM-JJ",
"reviewText": "Extrait de l'avis original",
"reviewUrl": "Lien direct vers l'avis (ex: https://maps.app.goo.gl/...), pas le lien générique du profil"
}
}
data/logements.json){
"id": "identifiant-unique",
"name": "Nom de la résidence",
"type": "locatif | condo | residence",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": { "level": "accessible", "entree": "plain-pied", "ascenseur": true, "notes": "..." },
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": "...", "reviewUrl": null }
}
data/stationnements.json){
"id": "identifiant-unique",
"description": "Description courte (ex: coin de rue)",
"type": "sur-rue | hors-rue",
"address": "Adresse ou intersection",
"lat": 45.0,
"lng": -73.0,
"notes": "Détails libres",
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": "...", "reviewUrl": null }
}
data/debarcaderes.json){
"id": "identifiant-unique",
"description": "Description courte",
"address": "Adresse ou intersection (ou null)",
"lat": 45.0,
"lng": -73.0,
"notes": "Détails libres (ou null)",
"source": null
}
Le lien Street View du popup est construit à partir de lat et lng, rien à ajouter.
data/batiments-municipaux.json)source.url pointe vers la fiche du bâtiment sur montreal.ca et s'affiche comme lien « Source » dans le popup. Le champ optionnel toilette affiche une section « Toilette » distincte dans le popup, séparée des notes générales du bâtiment — utile quand les deux proviennent de sources différentes (ex : fiche de la Ville pour le bâtiment, caractérisation de l'arrondissement pour les toilettes).
{
"id": "identifiant-unique",
"name": "Nom du bâtiment",
"category": "piscine | bibliotheque | parc | arena | centre-sportif | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"accessibility": { "level": "accessible", "notes": "..." },
"toilette": { "level": "accessible", "notes": "..." },
"source": { "name": "Ville de Montréal", "url": "https://montreal.ca/lieux/...", "date": "AAAA-MM-JJ" }
}
data/toilettes.json){
"id": "identifiant-unique",
"name": "Nom / emplacement de la toilette",
"category": "parc | bibliotheque | centre-communautaire | commerce | edifice-municipal | piscine | arena | centre-sportif | autre",
"address": "Adresse complète",
"lat": 45.0,
"lng": -73.0,
"horaire": "Ex : « Fermée l'hiver » (ou null)",
"accessibility": { "level": "accessible", "notes": "..." },
"source": { "reviewer": null, "date": "AAAA-MM-JJ", "reviewText": null, "reviewUrl": null }
}
data/gains-ccu.json)Nom provisoire — sera renommé. Répertorie les gains obtenus en matière d'accessibilité universelle via le processus du comité consultatif d'urbanisme (CCU), rattachés au projet/adresse concerné.
{
"id": "identifiant-unique",
"description": "Titre court du gain (ex : Augmentation du % de logements adaptables exigé)",
"type": "logements-adaptables | acces-rampe | stationnement | toilettes | autre",
"address": "Adresse ou nom du projet concerné",
"lat": 45.0,
"lng": -73.0,
"date": "AAAA-MM (ou null)",
"notes": "Détails du gain obtenu",
"source": { "name": "Contribution communautaire", "url": "Lien vers la résolution du CCU (ou null)", "date": "AAAA-MM-JJ" }
}
data/feux-sonores.json)Généré automatiquement, ne pas éditer à la main. Pour rafraîchir avec les dernières données de la Ville :
python3 scripts/import_feux_sonores.py
data/logements-omhm.json)Généré automatiquement, ne pas éditer à la main (les ajouts manuels vont dans data/logements.json). Pour rafraîchir :
SSL_CERT_FILE=/etc/ssl/cert.pem python3 scripts/import_logements_omhm.py
data/places-handicapes.json)Généré automatiquement, ne pas éditer à la main (les ajouts manuels vont dans data/stationnements.json et data/debarcaderes.json). Pour rafraîchir :
python3 scripts/import_places_handicapes.py
Si Python affiche CERTIFICATE_VERIFY_FAILED (Python de python.org sur macOS), utiliser les certificats du système :
SSL_CERT_FILE=/etc/ssl/cert.pem python3 scripts/import_places_handicapes.py
Activer GitHub Pages sur ce dépôt (Settings → Pages → branche main, dossier /). Le site sera servi statiquement, aucune étape de build requise.