{"id":42503658,"url":"https://github.com/dataforgoodfr/14_valorisationdonneemeteo","last_synced_at":"2026-05-22T23:06:34.723Z","repository":{"id":326103694,"uuid":"1104158184","full_name":"dataforgoodfr/14_ValorisationDonneeMeteo","owner":"dataforgoodfr","description":null,"archived":false,"fork":false,"pushed_at":"2026-04-27T19:14:59.000Z","size":5792,"stargazers_count":14,"open_issues_count":93,"forks_count":51,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-27T20:16:09.319Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dataforgoodfr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-25T20:48:43.000Z","updated_at":"2026-04-27T19:15:02.000Z","dependencies_parsed_at":"2026-04-20T19:02:55.196Z","dependency_job_id":null,"html_url":"https://github.com/dataforgoodfr/14_ValorisationDonneeMeteo","commit_stats":null,"previous_names":["dataforgoodfr/14_valorisationdonneemeteo"],"tags_count":53,"template":false,"template_full_name":"dataforgoodfr/d4g-project-template","purl":"pkg:github/dataforgoodfr/14_ValorisationDonneeMeteo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F14_ValorisationDonneeMeteo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F14_ValorisationDonneeMeteo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F14_ValorisationDonneeMeteo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F14_ValorisationDonneeMeteo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dataforgoodfr","download_url":"https://codeload.github.com/dataforgoodfr/14_ValorisationDonneeMeteo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dataforgoodfr%2F14_ValorisationDonneeMeteo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32552379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T22:28:24.418Z","status":"ssl_error","status_checked_at":"2026-05-02T22:28:14.225Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-28T13:36:46.312Z","updated_at":"2026-05-22T23:06:34.717Z","avatar_url":"https://github.com/dataforgoodfr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Valorisation Donnée Météo\n\nProjet Data For Good - Saison 14\n\n## Structure du projet\n\n```\n├── backend/    # API et traitement des données (Python)\n├── frontend/   # Interface utilisateur\n```\n\n## Pour commencer\n\nConsultez les README de chaque sous-projet :\n\n- [Backend](backend/README.md)\n- [Frontend](frontend/README.md)\n\n## Contribuer\n\nCe projet fait partie de la saison 14 de Data For Good.\n\n## Utilisation de Git\n\nLe projet utilise la branche `main` comme branche principale.\n\n## Workflow de contribution\n\nLire attentivement nos bonnes pratiques de développement : [Branches et commits : Workflow de contribution](https://outline.services.dataforgood.fr/doc/onboarding-dev-OFGKWOcxOn)\n\nExtraits :\n\n### :tanabata_tree:Branches et commits : Workflow de contribution\n\nPour que tout le monde adopte les mêmes pratiques, nous avons posé des principes relatifs aux branches et aux commits. A lire impérativement avant de commencer.\n\n#### 0. **Paramétrer git**\n\n```bash\ngit config --local pull.rebase merges\ngit config --local rebase.autostash true\n```\n\n- `pull.rebase merges` applique vos commits locaux par-dessus le remote.\n- `rebase.autostash true` permet de stasher automatiquement vos changements locaux non commités avant de faire un pull/rebase, et de les réappliquer après. Cela évite les conflits liés à des changements locaux non commités lors du pull/rebase.\n\n#### 1. **Créer une branche depuis** `**main**`\n\n```bash\ngit checkout main\ngit pull origin main\ngit checkout -b \u003ctype\u003e/(\u003cscope\u003e/)?\u003cdescription-courte\u003e\n```\n\nConvention de nommage des branches :\n\n* `feat/scope/nom-feature` : nouvelle fonctionnalité\n* `fix/scope/nom-bug` : correction de bug\n* `docs/sujet` : documentation\n* `refactor/sujet` : refactoring de code\n* `chore/sujet` : tâche de maintenance\n\nExemple : `feat/itn/ajout-carte-meteo` ou `fix/ecarts-normales/erreur-chargement-donnees`\n\n#### 2. **Faire des commits atomiques**\n\nUn commit atomique = une seule modification logique. Cela permet de :\n\n* Faciliter la relecture du code\n* Simplifier un éventuel rollback\n* Garder un historique clair\n\n```bash\ngit add \u003cfichiers-concernés\u003e\ngit commit -m \"\u003ctype\u003e: (\u003cscope\u003e:)? \u003cdescription\u003e\"\n```\n\nFormat des messages de commit :\n\n* `feat: itn: ajoute le composant carte météo`\n* `fix: ecarts normales: corrige l'affichage des températures négatives`\n* `docs: readme: mise à jour installation`\n* `refactor: parser: simplifie la logique de parsing`\n* `test: parser: ajoute les tests unitaires`\n* `chore: npm: met à jour les dépendances`\n\nVous n'êtes pas obligé d'utiliser le terminal, vous pouvez utiliser n'importe quelle interface graphique, notamment celle de VSCode et JetBrains.\n\n#### 3. **Pousser sa branche et créer une Pull Request (PR)**\n\n```bash\ngit push origin \u003cnom-de-ta-branche\u003e\n```\n\nPuis sur GitHub, créer une PR vers `main` en :\n\n* Donnant un titre clair et descriptif\n* Remplissant le template de PR\n* Assignant des reviewers\n\n#### 4. **Review de code**\n\nChaque PR doit être relue par au moins une personne avant d'être mergée.\n\nEn tant que reviewer :\n\n* Vérifier que le code fonctionne et respecte les conventions du projet\n* Poser des questions si quelque chose n'est pas clair\n* Proposer des améliorations de manière constructive\n\nEn tant qu'auteur :\n\n* Répondre aux commentaires\n* Effectuer les modifications demandées\n* Demander une nouvelle review si nécessaire\n\n#### 5. **Merge avec squash commit**\n\nUne fois la PR approuvée, on merge en utilisant **\"Squash and merge\"** sur GitHub. Cela combine tous les commits de la branche en un seul commit sur `main`, ce qui garde un historique propre.\n\n### Bonnes pratiques\n\n* **Synchroniser régulièrement** sa branche avec `main` pour éviter les conflits :\n\n```bash\ngit checkout main\ngit pull origin main\ngit checkout \u003cta-branche\u003e\ngit rebase main\n```\n\n* **Ne jamais pusher directement sur** `**main**`\n* **Garder ses PRs petites** : une PR = une fonctionnalité ou un fix. Les grosses PRs sont difficiles à relire\n* **Tester son code** avant de pousser\n\n### :male_technologist:Éditeur de code\n\nNous conseillons (surtout pour les débutants) de travailler avec [Visual Studio Code](https://code.visualstudio.com/) (VSCode pour les intimes).\nVoici un [tuto](https://data-for-good.slack.com/archives/C08B329AG7M/p1738330293159749) pour l'usage de VSCode, l’installation de Python, et faire tourner son premier notebook dans VSCode.\n\nPour les plus avancés, nous conseillons la suite JetBrains, notamment WebStorm et PyCharm en version gratuite.\n\nPensez à activer le formattage et le fix automatique lors de la sauvegarde :\n\n- [VSCode](.vscode/settings.json)\n- JetBrains : Tools → Actions on Save :\n  - Reformat Code\n  - Optimize Imports\n  - Run eslint --fix\n  - Run Prettier\n\n## Installation des pre-commit hooks\n\nCe projet utilise [pre-commit](https://pre-commit.com/) pour automatiser la vérification de la qualité du code avant chaque commit.\n\n### Installer pre-commit sur votre machine\n\n#### Via pip\n\n```bash\npip install pre-commit\n```\n\n### Activer les hooks\n\n```bash\n# À la racine du projet\npre-commit install\n```\n\n### Configuration\n\nLe projet utilise deux configurations de pre-commit :\n\n1. **Configuration racine** (`.pre-commit-config.yaml`) :\n\n- Exécute les hooks backend et frontend\n- Vérifie les conflits de merge, les fins de ligne, etc.\n\n2. **Configuration backend** (`backend/.pre-commit-config.yaml`) :\n\n- Utilise Ruff pour le linting et le formatting Python\n- Lance les tests unitaires backend avec `uv run pytest weather/tests/unit`\n- Lance les tests d'intégration backend avec `uv run pytest weather/tests/integration`\n- Centralise l'ignore de `DJ001` dans `backend/pyproject.toml`\n\n### Exécution manuelle\n\nPour exécuter tous les hooks sur tous les fichiers :\n\n```bash\npre-commit run --all-files\n```\n\nPour exécuter uniquement les hooks backend :\n\n```bash\ncd backend \u0026\u0026 uv run pre-commit run --all-files --config=.pre-commit-config.yaml\n```\n\nPour exécuter uniquement tous les tests backend :\n\n```bash\ncd backend \u0026\u0026 uv run pytest\n```\n\nPour exécuter uniquement les tests unitaires backend :\n\n```bash\ncd backend \u0026\u0026 uv run pytest weather/tests/unit\n```\n\nPour exécuter uniquement les tests d'intégration backend :\n\n```bash\ncd backend \u0026\u0026 uv run pytest weather/tests/integration\n```\n\nPour exécuter uniquement les hooks frontend :\n\n```bash\ncd frontend \u0026\u0026 npm run check\n```\n\n### Résolution des problèmes courants\n\n#### Problème d'environnement Node.js\n\nSi vous avez des problèmes de dépendances, essayez de supprimer le dossier `node_modules` et de réinstaller :\n\n```bash\ncd frontend\nrm -rf node_modules\nnpm ci\n```\n\n### Outils utilisés\n\n- **Backend** : Ruff (linting + formatting) + pytest sur `weather/tests/unit`\n- **Frontend** : ESLint + Prettier\n- **Commun** : vérification des conflits, fins de ligne, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataforgoodfr%2F14_valorisationdonneemeteo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdataforgoodfr%2F14_valorisationdonneemeteo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdataforgoodfr%2F14_valorisationdonneemeteo/lists"}