{"id":34000584,"url":"https://github.com/imtomdev/snowtricks","last_synced_at":"2026-04-08T17:31:03.968Z","repository":{"id":57068970,"uuid":"220806135","full_name":"imtomdev/snowtricks","owner":"imtomdev","description":"Développement du site communautaire SnowTricks 👋","archived":false,"fork":false,"pushed_at":"2021-06-12T13:36:36.000Z","size":11799,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-14T21:48:03.900Z","etag":null,"topics":["completed-project","openclassrooms","openclassrooms-backend"],"latest_commit_sha":null,"homepage":"http://snowtricks.thomas-claireau.fr/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imtomdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-10T15:02:24.000Z","updated_at":"2021-06-12T13:37:04.000Z","dependencies_parsed_at":"2022-08-24T10:20:41.865Z","dependency_job_id":null,"html_url":"https://github.com/imtomdev/snowtricks","commit_stats":null,"previous_names":["imtomdev/snowtricks","thomas-claireau/snowtricks"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/imtomdev/snowtricks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fsnowtricks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fsnowtricks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fsnowtricks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fsnowtricks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imtomdev","download_url":"https://codeload.github.com/imtomdev/snowtricks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imtomdev%2Fsnowtricks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31566682,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["completed-project","openclassrooms","openclassrooms-backend"],"created_at":"2025-12-13T09:30:46.099Z","updated_at":"2026-04-08T17:31:03.952Z","avatar_url":"https://github.com/imtomdev.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [PHP / Symfony] - Développement du site communautaire SnowTricks\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/38908a1ea0204cd39996400db31ba8eb)](https://www.codacy.com/manual/thomas-claireau/PHP-P6-Openclassrooms?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=thomas-claireau/PHP-P6-Openclassrooms\u0026utm_campaign=Badge_Grade)\n\n[![Maintainability](https://api.codeclimate.com/v1/badges/56882df21a146f2e28bf/maintainability)](https://codeclimate.com/github/thomas-claireau/PHP-P6-Openclassrooms/maintainability)\n\n## Installation du projet\n\nVia Composer :\n\n```text\ncomposer create-project thomas-claireau/snowtricks:dev-master\n```\n\nDans le cas où vous téléchargez directement le projet (ou encore avec `git clone`), effectuez un `composer install` à la racine du projet.\n\nInstallez ensuite les dépendances front du projet. Placez-vous à la racine du projet :\n\n```text\nnpm install\n```\n\n### Remarque\n\n#### Accès base de données\n\nLe projet est livré sur Packagist sans base de données. Cela signifie qu'il faut que vous ajoutiez votre configuration, dans le fichier `.env`, dans la partie `DATABASE_URL`.\n\n#### Injection SQL et structure du projet\n\nPour obtenir une structure similaire à mon projet au niveau de la base de données, je vous joins aussi dans le dossier `~src/Migrations/` les versions de migrations que j'ai utilisées. Vous pouvez donc recréer la base de données en effectuant la commande suivante, à la racine du projet :\n\n```text\nphp bin/console doctrine:migrations:migrate\n```\n\nAprès avoir créer votre base de données, vous pouvez également injecter un jeu de données en effectuant la commande suivante :\n\n```text\nphp bin/console doctrine:fixtures:load\n```\n\n### Lancer le projet\n\nA la racine du projet :\n\n-   Pour lancer le serveur de développement, effectuez un `npm run dev-server`.\n-   Pour lancer le serveur de symfony, effectuez un `php bin/console server:run`.\n\n### Site en production\n\nPour voir une version du site en production, suivez l'[url suivante](http://snowtricks.thomas-claireau.fr/).\n\n### Envoi des mails\n\nSi vous souhaitez utiliser un serveur de mail afin d'envoyer des mails, vous pouvez le configurer dans le fichier `.env` à la racine du projet, dans la partie `MAILER_URL`\n\nSachez que vous pouvez aussi utiliser [maildev](https://www.npmjs.com/package/maildev) pour simuler l'envoi des mails.\n\n## Contexte\n\nJimmy Sweat est un entrepreneur ambitieux passionné de snowboard. Son objectif est la création d'un site collaboratif pour faire connaitre ce sport auprès du grand public et aider à l'apprentissage des figures (tricks).\n\nIl souhaite capitaliser sur du contenu apporté par les internautes afin de développer un contenu riche et suscitant l’intérêt des utilisateurs du site. Par la suite, Jimmy souhaite développer un business de mise en relation avec les marques de snowboard grâce au trafic que le contenu aura généré.\n\nPour ce projet, nous allons nous concentrer sur la création technique du site pour Jimmy.\n\n## Description du besoin\n\nVous êtes chargé de développer le site répondant aux besoins de Jimmy. Vous devez ainsi implémenter les fonctionnalités suivantes :\n\n-   un annuaire des figures de snowboard. Vous pouvez vous inspirer de la liste des figures sur Wikipédia. Contentez-vous d'intégrer 10 figures, le reste sera saisi par les internautes ;\n-   la gestion des figures (création, modification, consultation) ;\n-   un espace de discussion commun à toutes les figures.\n\nPour implémenter ces fonctionnalités, vous devez créer les pages suivantes :\n\n-   la page d’accueil où figurera la liste des figures ;\n-   la page de création d'une nouvelle figure ;\n-   la page de modification d'une figure ;\n-   la page de présentation d’une figure (contenant l’espace de discussion commun autour d’une figure).\n\n## Nota Bene\n\nIl faut que les URLs de page permettent une compréhension rapide de ce que la page représente et que le référencement naturel soit facilité.\n\nL’utilisation de bundles tiers est interdite sauf pour les données initiales, vous utiliserez les compétences acquises jusqu’ici ainsi que la documentation officielle afin de remplir les objectifs donnés.\n\nLe design du site web est laissé complètement libre, attention cependant à respecter les wireframes fournis pour le gabarit de vos pages. Néanmoins il faudra que le site soit consultable aussi bien sur un ordinateur que sur mobile (téléphone mobile, tablette, phablette…).\n\nEn premier lieu il vous faudra écrire l’ensemble des issues/tickets afin de découper votre travail méthodiquement et vous assurer que l’ensemble du besoin client soit bien compris avec votre mentor. Les tickets/issues seront écrits dans un repository Github que vous aurez créé au préalable.\n\nL’ensemble des figures de snowboard doivent être présentes à l’initialisation de l’application web. Vous utiliserez un bundle externe pour charger ces données.\n\n## ✔️ Projet validé\n\nCommentaire de l'évaluateur :\n\n1. Évaluation globale du travail réalisé par l’étudiant (en spécifiant les critères non-validés si le projet est à retravailler) :\n\nThomas a produit des livrables vraiment de top qualité. Le code est propre, bien commenté, les fonctionnalités attendues sont là et quelques extras sont appréciables.\n\nAu niveau de la présentation orale, les temps dédiés à chaque partie n'ont pas été respectés. Thomas a consacré beaucoup trop de temps à la démonstration, ce qui fait que des points comme l'estimation des tâches ou l'exécution des tests unitaires ont été vus dans les Q/R alors qu'ils auraient du faire partie de la présentation initiale.\n\n2. Évaluation des livrables selon les critères du projet :\n\nLes livrables sont au top. On a une bonne gestion des modèles, des controllers, et des repository. Toutes les fonctionnalités de Symfony sont utilisées avec justesse et pertinence.\n\nLa partie Git est bien fournie, et cet outil de versioning est très bien utilisé.\n\nOn regrettera que les tests unitaires soient là \"parce qu'il en faut\" plutôt qu'avoir de vrais tests unitaires pertinents.\n\n3. Évaluation de la présentation orale et sa conformité aux attentes :\n\nThomas a passé trop de temps a faire la démonstration de l'application, entrant dans des détails non nécessaires (oubli de mot de passe, ...). Ceci lui a porté préjudice sur les deux autres parties qui n'ont pas été traitées de manière exhaustive.\n\nToutefois, ces points ont été abordés lors des Q/R, et Thomas a à chaque fois apporté des réponses pertinentes.\n\n4. Évaluation des nouvelles compétences acquises par l'étudiant :\n\nSymfony\nDoctrine\nCodacy\nTests unitaires\n5. Points positifs (au moins 1) :\n\nUtilisation vraiment poussée des fonctionnalités de GitHub\nCode très propre et bien documenté\nSéparation des différentes parties du code en utilisant des Repository\nBonne gestion d'Ajax\n6. Axes d'amélioration (au moins 1) :\n\nTests unitaires pas très pertinents\nTemps dédié à chaque partie de la présentation non respecté\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimtomdev%2Fsnowtricks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimtomdev%2Fsnowtricks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimtomdev%2Fsnowtricks/lists"}