{"id":25871135,"url":"https://github.com/gashmob/feeljob","last_synced_at":"2025-03-02T06:35:33.214Z","repository":{"id":50153095,"uuid":"326943251","full_name":"Gashmob/Feeljob","owner":"Gashmob","description":"Projet de licence 3 informatique à l'université Savoie Mont Blanc","archived":false,"fork":false,"pushed_at":"2021-06-02T11:11:13.000Z","size":20884,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-03-10T00:47:18.792Z","etag":null,"topics":["feeljob","jobsearch","php","symfony","university-project","website"],"latest_commit_sha":null,"homepage":"http://feeljob.fr","language":"Twig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gashmob.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":"2021-01-05T09:03:42.000Z","updated_at":"2022-11-19T09:42:34.000Z","dependencies_parsed_at":"2022-08-25T11:41:03.840Z","dependency_job_id":null,"html_url":"https://github.com/Gashmob/Feeljob","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gashmob%2FFeeljob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gashmob%2FFeeljob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gashmob%2FFeeljob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gashmob%2FFeeljob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gashmob","download_url":"https://codeload.github.com/Gashmob/Feeljob/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241470357,"owners_count":19968039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["feeljob","jobsearch","php","symfony","university-project","website"],"created_at":"2025-03-02T06:35:29.169Z","updated_at":"2025-03-02T06:35:33.209Z","avatar_url":"https://github.com/Gashmob.png","language":"Twig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feeljob\n\nSite de mise en relation entre chercheurs d'emplois et entreprise, mais aussi entre particuliers et auto-entrepreneurs.\n\nCe projet a été réalisé dans le cadre du module info608 de licence 3 d'informatique de l'université Savoie Mont Blanc par Kevin Traini, Luca Ciampi et Florian Deschenaux.\n\n## Installation\n\n### Prérequis\n\nPour faire fonctionner le site sur votre machine ou sur serveur, il faut :\n\n- [Composer](https://getcomposer.org/)\n- [Mysql](https://www.mysql.com/fr/)\n- [Neo4j](https://neo4j.com/)\n\n### Installation\n\nAprès avoir installé les prérequis et cloné le dépôt git, il faut installer les packages. Pour cela, ouvrez la console et tapez :\n\n`.../Feeljob $ composer update`\n\nUne fois les téléchargements terminés, il faut initialiser les bases de données. Commençons par neo4j.\n\nTout d'abord il faut allumer le serveur neo4j `neo4j start`, puis s'y connecter `cypher-shell` ou http://localhost:7474. Les identifiants de base sont `neo4j:neo4j`. On peut maintenant créer l'utilisateur et la base de données :\n\n```cypher\nCREATE USER feel SET PASSWORD 'feel' CHANGE NOT REQUIRED;\nGRANT ROLE publisher TO feel;\nCREATE DATABASE feeljob;\n```\n\nSi vous faites `SHOW DATABASES` et `SHOW USERS` vous devriez voir vos modifications.\n\nNous avons terminé avec neo4j, passons à mysql. Connecter vous à mysql de votre manière préférée, puis saisissez ces requêtes :\n\n```mysql\nCREATE USER `feeljob`@`localhost` IDENTIFIED WITH mysql_native_password BY 'feeljob';\nGRANT ALL PRIVILEGES ON *.* TO `feeljob`@`localhost`;\nFLUSH PRIVILEGES;\nSELECT user,host FROM mysql.user;\n```\n\nLa dernière requête devrait vous renvoyer tous les utilisateurs mysql dont celui qu'on vient de créer.\n\nBien sûr, libre à vous de modifier les identifiants de chaques utilisateurs, mais pensez bien à reporter ces modifications dans le `.env` pour mysql et dans `src/database/Connection.php` pour neo4j.\n\nIl reste quelques commandes en console pour en finir avec mysql.\n\n```shell\nphp bin/console doctrine:database:create\nphp bin/console doctrine:migrations:migrate\nphp bin/console doctrine:migrations:list\n```\n\nSur la dernière commandes vous devriez voir un tableau, s'il n'y pas de `migrated` pour chaque ligne, répétez la deuxième commande jusqu'à ce que le tableau soit bon.\n\nMaintenant il faut remplir les bases de données avec les données de bases. Tout d'abord il faut allumer le site, si vous êtes sur serveur il n'y a pas grand chose à faire, sur votre machine 2 options : \n\n- installer l'exécutable symfony et faire `symfony serve`\n- faire `php -S 127.0.0.1:8000 -t public/`\n\nAprès allez à l'adresse `/utils/fill`, la page devrait vous renvoyer un json avec la valeur filled, si vous actualisez la page, ce sera already_filled.\n\n## Documentation Ajax\n\nToutes les requêtes Ajax doivent se faire en **POST**\n\nLa doc est formée de cette manière :\n`url` *=\u003e* description *=\u003e* `résultat {'nom': type}`\n\n---\n\n### Partie Particulier\n- `/particulier/candidate/{id}` *=\u003e* L'AutoEntrepreneur candidate à l'Annonce id *=\u003e* `{'result': boolean}`\n- `/particulier/uncandidate/{id}` *=\u003e* L'AutoEntrepreneur supprime sa candidature à l'Annonce id *=\u003e* `{'result': boolean}`\n- `/particulier/refuse/candidature/{idAnn}/{idAuto}` *=\u003e* Le Particulier refuse la candidature de l'AutoEntrepreneur idAuto à l'Annonce idAnn *=\u003e* `{'result': boolean}`\n- `/particulier/propose/{idAnn}/{idAuto}` *=\u003e* Le Particulier propose l'Annonce idAnn à l'AutoEntrepreneur idAuto *=\u003e* `{'result': boolean}`\n- `/particulier/remove/proposition/{idAnn}/{idAuto}` *=\u003e* Le Particulier supprime la proposition d'Annonce idAnn faite à l'AutoEntrepreneur idAuto *=\u003e* `{'result': boolean}`\n- `/particulier/refuse/proposition/{id}` *=\u003e* L'AutoEntrepreneur refuse la proposition de l'Annonce id *=\u003e* `{'result': boolean}`\n- `/particulier/add/favoris/{id}` *=\u003e* L'AutoEntrepreneur mets l'Annonce id en favoris *=\u003e* `{'result': boolean}`\n- `/particulier/remove/favoris/{id}` *=\u003e* L'AutoEntrepreneur enlève l'Annonce id de ses favoris *=\u003e* `{'result': boolean}`\n- `/particulier/accept/proposition/{id}` *=\u003e* L'AutoEntrepreneur accept la proposition de l'Annonce id *=\u003e* `{'result': boolean}`\n- `/particulier/accept/candidature/{idAnn}/{idAuto}` *=\u003e* Le Particulier accepte la candidature de l'AutoEntrepreneur idAuto à l'Annonce idAnn *=\u003e* `{'result': boolean}`\n- `/particulier/get/candidatures` *=\u003e* L'AutoEntrepreneur récupère toutes ses candidatures *=\u003e* `{'candidatures': Annonce[]}`\n- `/particulier/get/my/candidatures` *=\u003e* Le Particulier récupère toutes ses candidatures *=\u003e* `{'candidatures': ['annonce': Annonce, 'auto': AutoEntrepreneur]}`\n- `/particulier/get/accepted/candidatures` *=\u003e* L'AutoEntrepreneur récupère toutes ses candidatures acceptées *=\u003e* `{'candidatures': Annonce[]}`\n- `/particulier/get/accepted/my/candidatures` *=\u003e* Le Particulier récupère toutes ses candidatures acceptées *=\u003e* `{'candidatures': ['annonce': Annonce, 'auto': AutoEntrepreneur]}`\n- `/particulier/get/propositions` *=\u003e* L'AutoEntrepreneur récupère toutes ses propositions *=\u003e* `{'propositions': Annonce[]}`\n- `/particulier/get/my/propositions` *=\u003e* Le Particulier récupère toutes ses propositions *=\u003e* `{'propositions': ['annonce': Annonce, 'auto': AutoEntrepreneur]}`\n- `/particulier/get/accepted/propositions` *=\u003e* L'AutoEntrepreneur récupère toutes ses propositions acceptées *=\u003e* `{'propositions': Annonce[]}`\n- `/particulier/get/my/accepted/propositions` *=\u003e* Le Particulier récupère toutes ses propositions acceptées *=\u003e* `{'propositions': ['annonce': Annonce, 'auto': AutoEntrepreneur]}`\n- `/particulier/get/favoris` *=\u003e* L'AutoEntrepreneur récupère toutes ses Annonces en favoris *=\u003e* `{'favoris': Annonce[]}`\n- `particulier/get/annonces/{nom}/{metier}/{departement}/{limit}/{offset}` *=\u003e* L'AutoEntrepreneur récupère toutes les annonces se nommant nom de Metier dans un département. Il récupère limit annonces avec un offset *=\u003e* `{'annonces': Annonce[]}`\n- `/particulier/get/cartes/{nom}/{metiers}/{distanceMax}/{limit}/{offset}` *=\u003e* Le particulier récupère toutes les CarteVisite selon le nomEntreprise nom, les metiers et la distanceMax. Il en récupère limit avec un offset *=\u003e* `{'cartes': CarteVisite[]}`\n\n---\n\n### Partie Entreprise\n- `/entreprise/candidate/{id}` *=\u003e* L'Employe candidate à l'OffreEmploi id *=\u003e* `{'result': boolean}`\n- `/entreprise/uncandidate/{id}` *=\u003e* L'Employe supprime sa candidature à l'OffreEmploi id *=\u003e* `{'result': boolean}`\n- `/entreprise/refuse/candidature/{idO}/{idE}` *=\u003e* L'Employeur refuse la candidature de l'Employe idE à l'OffreEmploi idO *=\u003e* `{'result': boolean}`\n- `/entreprise/propose/{idO}/{idE}` *=\u003e* L'Employeur propose l'OffreEmploi idO à l'Employe idE *=\u003e* `{'result': boolean}`\n- `/entreprise/remove/proposition/{idO}/{idE}` *=\u003e* L'Employeur supprime sa proposition d'OffreEmploi idO à l'Employe idE *=\u003e* `{'result': boolean}`\n- `/entreprise/refuse/proposition/{id}` *=\u003e* L'Employe refuse la proposition d'OffreEmploi id *=\u003e* `{'result': boolean}`\n- `/entreprise/add/favoris/{id}` *=\u003e* L'Employe rajoute l'OffreEmploi id à ses favoris *=\u003e* `{'result': boolean}`\n- `/entreprise/remove/favoris/{id}` *=\u003e* L'Employe enlève l'OffreEmploi id de ses favoris *=\u003e* `{'result': boolean}`\n- `/entreprise/accept/proposition/{id}` *=\u003e* L'Employe accepte la proposition d'OffreEmploi id *=\u003e* `{'result': boolean}`\n- `/entreprise/accept/candidature/{idO}/{idE}` *=\u003e* L'Employeur accepte la candidature de l'Employe idE sur l'OffreEmploi idO *=\u003e* `{'result': boolean}`\n- `/entreprise/get/candidatures` *=\u003e* L'Employe récupère toutes ses candidatures *=\u003e* `{'candidatures': OffreEmploi[]}`\n- `/entreprise/get/my/candidatures` *=\u003e* L'Employeur récupère toutes ses candidatures *=\u003e* `{'candidatures': ['offre': OffreEmploi, 'employe': Employe, 'cv': CV]}`\n- `/entreprise/get/accepted/candidatures` *=\u003e* L'Employe récupère toutes ses candidatures acceptées *=\u003e* `{'candidatures': OffreEmploi[]}`\n- `/entreprise/get/my/accepted/candidatures` *=\u003e* L'Employeur récupère toutes ses candidatures acceptées *=\u003e* `{'candidatures': ['offre': OffreEmploi, 'employe': Employe, 'cv': CV]}`\n- `/entreprise/get/propositions` *=\u003e* L'Employe récupère toutes ses propositions *=\u003e* `{'propositions': OffreEmploi[]}`\n- `/entreprise/get/my/propositions` *=\u003e* L'Employeur récupère toutes ses propositions *=\u003e* `{'propositions': ['offre': OffreEmploi, 'employe': Employe, 'cv': CV]}`\n- `/entreprise/get/accepted/propositions` *=\u003e* L'Employe récupère toutes ses propositions acceptées *=\u003e* `{'propositions': OffreEmploi[]}`\n- `/entreprise/get/my/accepted/propositions` *=\u003e* L'Employeur récupère toutes ses propositions acceptées *=\u003e* `{'propositions': ['offre': OffreEmploi, 'employe': Employe, 'cv': CV]}`\n- `/entreprise/get/favoris` *=\u003e* L'Employe récupère tous ses favoris *=\u003e* `{'favoris': OffreEmploi[]}`\n- `/entreprise/get/cvs/{metiers}/{nom}/{competences}/{langues}/{permis}/{limit}/{offset}` *=\u003e* L'Employeur récupère tout les CV selon les metiers, le nom, les competences, langues et permis. Il récupère limit CV avec un offset *=\u003e* `{'cvs': CV[], 'quantity': Int}`\n- `/entreprise/get/offres_emploi/{nom}/{metier}/{typeContrat}/{secteurActivite}/{departement}/{loge}/{deplacement}/{teletravail}/{limit}/{offset}` *=\u003e* L'Employe récupère toutes les OffreEmploi selon le nom, typeContrat, metier, secteur, departement, loge, deplacement, teletravail. Il en récupère limit avec un offset *=\u003e* `{'offres': OffreEmploi[], 'quantity': Int}`\n\n## Documentation routes\n\nLes routes sont formées de cette manière :\n`url` *=\u003e* description *=\u003e* `nom`\n\n---\n\n- `/` *=\u003e* page d'accueil *=\u003e* `homepage`\n- `/connexion` *=\u003e* formulaire de connexion *=\u003e* `connexion`\n- `/deconnexion` *=\u003e* déconnexion *=\u003e* `deconnexion`\n- `/supprimer/compte` *=\u003e* suppression du compte *=\u003e* `delete_account`\n- `/userspace` *=\u003e* redirection vers l'espace utilisateur *=\u003e* `userSpace`\n- `/inscription` *=\u003e* choix entre inscription entreprise ou particulier *=\u003e* `inscription`\n- `/mail_verifie` *=\u003e* l'email a été vérifié *=\u003e* `mailVerified`\n- `/verification/{id}` *=\u003e* on attend que l'email du compte id soit vérifié *=\u003e* `waitVerifEmail`\n- `/verif/{id}` *=\u003e* Mets l'email du compte id en vérifié *=\u003e* `verifEmail`\n- `/contact` *=\u003e* nous contacter *=\u003e* `contact`\n- `/developpeurs` *=\u003e* nous *=\u003e* `developers`\n- `/cookies` *=\u003e* les cookies *=\u003e* `cookies`\n- `/confidentialite` *=\u003e* des règles *=\u003e* `confidentiality`\n- `/conditions` *=\u003e* des règles *=\u003e* `conditions`\n- `/voir/{type}` *=\u003e* affiche les détails de type *=\u003e* `show`\n- `/mdp_oublie` *=\u003e* quand on a oublié son mdp *=\u003e* `mdpOublie`\n- `/reinitialiser_mdp` *=\u003e* pour réinitialiser son mdp *=\u003e* `mdpReinitialiser`\n- `/ajout/credits` *=\u003e* Permet à l'auto-entrepreneur ou à l'employeur d'acheter des crédits *=\u003e* `ajoutCredits`\n\n---\n\n### Partie Entreprise\n- `/entreprise/inscription/employeur` *=\u003e* inscription partie entreprise *=\u003e* `entreprise_inscription_employeur`\n- `/entreprise/inscription/employe` *=\u003e* inscription partie entreprise *=\u003e* `entreprise_inscription_employe`\n- `/entreprise/mon_espace` *=\u003e* espace utilisateur *=\u003e* `entreprise_espace`\n- `/entreprise/creer/CV` *=\u003e* L'Employe créé son CV *=\u003e* `entreprise_create_cv`\n- `/entreprise/modifier/CV/{id}` *=\u003e* L'Employe modifie son CV id *=\u003e* `entreprise_modifier_cv`\n- `/entreprise/supprime/CV/{id}` *=\u003e* L'Employe supprime son CV id *=\u003e* `entreprise_delete_cv`\n- `/entreprise/cv/{id}` *=\u003e* Montre les détails du cv id *=\u003e* `entreprise_show_cv`\n- `/entreprise/cvs` *=\u003e* Liste des CVs *=\u003e* `entreprise_cvs`\n- `/entreprise/creer/offre_emploi` *=\u003e* L'Employeur créé une OffreEmploi *=\u003e* `entreprise_create_offre_emploi`\n- `/entreprise/modifier/offre_emploi/{id}` *=\u003e* L'Employeur modifie l'OffreEmploi id *=\u003e* `entreprise_modify_offre_emploi`\n- `/entreprise/supprime/offre_emploi/{id}` *=\u003e* L'Employeur supprime son OffreEmploi id *=\u003e* `entreprise_delete_offre_emploi`\n- `/entreprise/offre_emploi/{id}` *=\u003e* Montre les détails de l'OffreEmploi id *=\u003e* `entreprise_show_offre_emploi`\n- `/entreprise/contrats` *=\u003e* Montre les contrats de l'utilisateur *=\u003e* `entreprise_contrats`\n\n---\n\n### Partie Particulier\n- `/particulier/inscription/particulier` *=\u003e* inscription partie particulier *=\u003e* `particulier_inscription_particulier`\n- `/particulier/inscription/auto` *=\u003e* inscription partie particulier *=\u003e* `particulier_inscription_auto`\n- `/particulier/mon_espace` *=\u003e* espace utilisateur *=\u003e* `particulier_espace`\n- `/particulier/creer/carte` *=\u003e* l'AutoEntrepreneur créé sa carte de visite *=\u003e* `particulier_create_carte`\n- `/particulier/modifier/carte/{id}` *=\u003e* l'AutoEntrepreneur modifie sa carte de visite *=\u003e* `particulier_modifier_carte_visite`\n- `/particulier/supprimer/carte/{id}` *=\u003e* l'AutoEntrepreneur supprime sa carte de visite *=\u003e* `particulier_delete_carte`\n- `/particulier/creer/annonce` *=\u003e* le Particulier créé une annonce *=\u003e* `particulier_create_annonce`\n- `/particulier/modifier/annonce/{id}` *=\u003e* Le Particulier modifie son annonce id *=\u003e* `particulier_modifier_annonce`\n- `/particulier/supprimer/annonce/{id}` *=\u003e* Le Particulier supprime son annonce id *=\u003e* `particulier_delete_annonce`\n- `/particulier/annonces` *=\u003e* Liste des annonces *=\u003e* `particulier_annonces`\n- `/particulier/annonce/{id}` *=\u003e* Montre l'annonce id *=\u003e* `particulier_show_annonce`\n- `/particulier/carte/{id}` *=\u003e* Montre les détails de la CarteVisite id *=\u003e* `particulier_show_carte`\n- `/particulier/cartes` *=\u003e* Liste des CarteVisite *=\u003e* `particulier_cartes`\n- `/particulier/contrats` *=\u003e* Montre les contrats de l'utilisateur *=\u003e* `particulier_contrats`\n\n## Documentation bdd\n\n### Neo4j\n![](neo4j.png)\n\n---\n\n### Mysql\n\n![](mysql.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgashmob%2Ffeeljob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgashmob%2Ffeeljob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgashmob%2Ffeeljob/lists"}