Extension Chrome pour comparer rapidement les temps de trajet entre une origine et plusieurs destinations en une seule action.
Chrome Web Store (version publiee actuelle):
https://chrome.google.com/webstore/detail/pffdkfppfngeiijdkcipdmpmabfkiapk
Itineris sert a repondre a une question simple:
"Depuis une adresse donnee, combien de temps me faut-il pour rejoindre mes lieux frequents ?"
Cas typique: recherche de logement, comparaison domicile-travail, optimisation de deplacements recurrents.
- Refonte complete du popup (UI plus lisible, etats explicites, meilleure ergonomie).
- Refonte complete de la page options.
- Edition inline des destinations dans les options.
- Origines favorites et suggestions d'historique.
- Filtre optionnel de duree max.
- Gestion des references horaires: sans horaire, depart, arrivee.
- Internationalisation native Chrome (
_locales/en,_locales/fr). - Cache API local avec TTL configurable.
- Backend Lambda modernise:
- Google Routes API prioritaire.
- Fallback Google Directions API legacy.
- Validation d'entree et CORS durci pour extension Chrome.
extension/popup.html/extension/popup.js/extension/popup.css
UI principale de calcul de trajets.extension/options.html/extension/options.js/extension/options.css
Gestion des destinations et des preferences.extension/background.js
Service worker MV3, appels API, cache, bridge popup <-> backend.backend/lambda_function.py
Backend AWS Lambda qui appelle Google Routes / Directions.extension/i18n.js+extension/_locales/*/messages.json
Couche de traduction centralisee..github/workflows/package.yml+scripts/package-extension.sh
Packaging CI de l'extension en zip.
- Cloner le repo.
- Ouvrir
chrome://extensions. - Activer le mode developpeur.
- Cliquer "Charger l'extension non empaquetee".
- Selectionner le dossier
extension/.
- Activer
Routes API(recommande). - Optionnel: activer
Directions APIpour fallback legacy. - Creer une cle API restreinte par service.
GOOGLE_API_PREFERRED=routes
Valeurs possibles:routesoudirections.ENABLE_DIRECTIONS_FALLBACK=true
Fallback vers Directions si Routes renvoie certaines erreurs.GOOGLE_ROUTES_API_KEY=...GOOGLE_DIRECTIONS_API_KEY=...AUTHORIZED_ORIGINS=chrome-extension://<EXTENSION_ID>AUTHORIZED_EXTENSION_IDS=<EXTENSION_ID>
Option de dev temporaire:
AUTHORIZED_ORIGINS=*(a eviter en production).
Configurer la route API:
- Methodes:
OPTIONS, POST - Headers autorises:
Content-Type, X-Amz-Date, X-Amz-Security-Token, Authorization, X-Api-Key, X-Requested-With, Accept, Origin, X-Extension-Id - Origin autorisee:
chrome-extension://<EXTENSION_ID>
(ou plusieurs origines via la variable LambdaAUTHORIZED_ORIGINS)
Payload POST minimal:
{
"origin": "10 Downing St, London",
"destination": "King's Cross Station, London",
"transport_mode": "transit",
"time_reference": "arrival",
"time_value": "1739361600"
}transport_mode accepte: driving, walking, bicycling, transit.
chrome.storage.sync:address_listdistancesorigin_historyfavorite_originsuser_settings
chrome.storage.local:- entrees cache API (
api_cache_entry::...)
- entrees cache API (
Le cache:
- est scope par requete (origine, destination, mode, horaire),
- respecte un TTL configurable (
cache_ttl_minutes), - est purge automatiquement (TTL + nombre max d'entrees).
- Fichiers:
extension/_locales/en/messages.jsonextension/_locales/fr/messages.json
extension/manifest.jsonutilise:"default_locale": "en"- champs
name/description/titlevia__MSG_*__
- UI: attributs
data-i18n*+ helperextension/i18n.js.
Checks utiles:
node --check extension/popup.jsnode --check extension/options.jsnode --check extension/background.jspython3 -m py_compile backend/lambda_function.py
Le contenu de publication Store (description courte, longue, changelog, notes permissions) est fourni dans:
STORE_LISTING_V2.md
- Le backend refuse les origines non autorisees.
- L'extension envoie
X-Extension-Ida chaque requete. - Aucune cle Google n'est exposee dans l'extension (tout passe par Lambda).