{"id":19002736,"url":"https://github.com/thomaspericoi/philippemarmotte","last_synced_at":"2026-07-06T18:31:10.229Z","repository":{"id":180982455,"uuid":"275137027","full_name":"ThomasPericoi/PhilippeMarmotte","owner":"ThomasPericoi","description":"Random funny french identity generator in JavaScript, mixing first names, titles and absurd last names in one-click.","archived":false,"fork":false,"pushed_at":"2026-06-21T23:56:06.000Z","size":313,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-22T02:23:45.645Z","etag":null,"topics":["french","fun","javascript","library","name-generator","static-site","web"],"latest_commit_sha":null,"homepage":"https://philippemarmotte.fr","language":"JavaScript","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/ThomasPericoi.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":"2020-06-26T11:11:23.000Z","updated_at":"2026-06-21T23:56:09.000Z","dependencies_parsed_at":"2023-07-13T15:43:45.828Z","dependency_job_id":null,"html_url":"https://github.com/ThomasPericoi/PhilippeMarmotte","commit_stats":null,"previous_names":["thomaspericoi/philippemarmotte"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/ThomasPericoi/PhilippeMarmotte","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasPericoi%2FPhilippeMarmotte","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasPericoi%2FPhilippeMarmotte/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasPericoi%2FPhilippeMarmotte/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasPericoi%2FPhilippeMarmotte/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThomasPericoi","download_url":"https://codeload.github.com/ThomasPericoi/PhilippeMarmotte/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThomasPericoi%2FPhilippeMarmotte/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35202785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["french","fun","javascript","library","name-generator","static-site","web"],"created_at":"2024-11-08T18:15:58.259Z","updated_at":"2026-07-06T18:31:10.223Z","avatar_url":"https://github.com/ThomasPericoi.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Philippe Marmotte\n\nPhilippe Marmotte est un générateur d'identités loufoques en JavaScript.\n\nLe projet assemble des prénoms, titres, préfixes, noms et suffixes pour produire\ndes identités absurdes mais étonnamment présentables : Abdel Super Zinzin,\nGandalf Laser, Didier Tam-Tam ou Professeur Webinar ne sont jamais très loin.\n\nLe projet tient volontairement dans un format compact : un site statique, une\npetite API JavaScript documentée, un build Gulp moderne et peu de dépendances.\n\n## Démo\n\n\u003chttps://philippemarmotte.thomaspericoi.com/\u003e\n\n## Fonctionnalités\n\n- Génération d'une identité aléatoire.\n- Choix du genre : mixte, masculin ou féminin.\n- Option pour utiliser un titre à la place du prénom.\n- Bouton de copie dans le presse-papiers.\n- Mode clair / mode sombre.\n- Interface statique légère, sans framework front-end.\n- Bundle CSS et JavaScript généré dans `build/`.\n- API all-in-one générée dans `dist/`.\n\n## Site\n\nLe site est une page statique située dans `source/index.html`. Le JavaScript de\nl'interface consomme l'API publique `PhilippeMarmotte`, puis affiche le résultat\ndans le DOM avec un retour accessible pour la copie.\n\nLe build du site produit :\n\n- `build/index.html`\n- `build/css/main.css`\n- `build/js/main.js`\n- `build/img/`\n\n## API JavaScript\n\nLe générateur expose un objet global `PhilippeMarmotte` dans\n`source/js/philippe-marmotte/philippe-marmotte-functions.js`.\n\nL'API expose des méthodes texte, une méthode HTML et quelques helpers pour\naccéder aux listes internes. Les listes retournées sont des copies afin d'éviter\nde modifier les données du générateur depuis l'extérieur.\n\n### Quelle fonction utiliser ?\n\n| Besoin                              | Fonction                              |\n| ----------------------------------- | ------------------------------------- |\n| Générer une identité en texte brut  | `generateIdentity(gender, title)`     |\n| Générer une identité HTML           | `generateIdentityHtml(gender, title)` |\n| Générer un prénom                   | `getRandomFirstName(gender)`          |\n| Générer un nom                      | `getRandomLastName()`                 |\n| Générer un titre                    | `getRandomTitle(gender)`              |\n| Récupérer tous les prénoms          | `listFirstNames(gender)`              |\n| Récupérer tous les noms             | `listLastNames()`                     |\n| Récupérer tous les titres           | `listTitles(gender)`                  |\n| Compter les combinaisons théoriques | `getNamesPossibilities()`             |\n| Lire la version de l'API            | `version`                             |\n\nLes genres acceptés sont :\n\n- `\"all\"` : mixte\n- `\"M\"` : masculin\n- `\"F\"` : féminin\n\n### Identités\n\n#### `PhilippeMarmotte.generateIdentity(gender = \"all\", title = false)`\n\nGénère une identité complète en texte brut.\n\n```js\nPhilippeMarmotte.generateIdentity();\n// \"Valentine Croquette\"\n\nPhilippeMarmotte.generateIdentity(\"M\");\n// \"Jonas Minecraft\"\n\nPhilippeMarmotte.generateIdentity(\"F\");\n// \"Camille Cyber-Brioche\"\n\nPhilippeMarmotte.generateIdentity(\"all\", true);\n// \"Professeur Webinar\"\n```\n\n`gender` filtre le prénom ou le titre. Le nom final reste volontairement libre,\ncar c'est lui qui donne le côté zinzin du générateur.\n\n`title` vaut `false` par défaut. S'il vaut `true`, l'identité commence par un\ntitre au lieu d'un prénom.\n\n#### `PhilippeMarmotte.generateIdentityHtml(gender = \"all\", title = false)`\n\nGénère une identité complète dans une chaîne HTML prête à intégrer.\n\n```js\nPhilippeMarmotte.generateIdentityHtml(\"M\");\n// \"\u003cspan\u003eJonas Minecraft\u003c/span\u003e\"\n```\n\nLe contenu textuel est échappé avant d'être injecté dans la chaîne HTML.\n\n### Éléments séparés\n\n#### `PhilippeMarmotte.getRandomFirstName(gender = \"all\")`\n\nGénère un prénom aléatoire.\n\n```js\nPhilippeMarmotte.getRandomFirstName();\n// \"Ross\"\n\nPhilippeMarmotte.getRandomFirstName(\"F\");\n// \"Marie-Anne\"\n```\n\n#### `PhilippeMarmotte.getRandomLastName()`\n\nGénère un nom aléatoire.\n\n```js\nPhilippeMarmotte.getRandomLastName();\n// \"Super Zinzin\"\n```\n\n#### `PhilippeMarmotte.getRandomTitle(gender = \"all\")`\n\nGénère un titre aléatoire.\n\n```js\nPhilippeMarmotte.getRandomTitle(\"M\");\n// \"Capitaine\"\n```\n\n### Listes\n\nCes helpers permettent de construire une autre interface ou son propre format de\nsortie à partir des données internes.\n\n```js\nPhilippeMarmotte.listFirstNames(\"F\");\n// Copie des prénoms féminins.\n\nPhilippeMarmotte.listLastNames();\n// Copie de tous les noms.\n\nPhilippeMarmotte.listTitles();\n// Copie de tous les titres.\n\nPhilippeMarmotte.firstNames;\nPhilippeMarmotte.lastNames;\nPhilippeMarmotte.titles;\n// Raccourcis équivalents aux listes complètes.\n```\n\n### Combinaisons et version\n\n```js\nPhilippeMarmotte.getNamesPossibilities();\n// 128842074132480\n\nPhilippeMarmotte.formatNumber(PhilippeMarmotte.getNamesPossibilities());\n// \"128 842 074 132 480\"\n\nPhilippeMarmotte.version;\n// \"1.0.0\"\n```\n\n## Distribution\n\nLe dossier `dist/` contient la version prête à réutiliser de l'API JavaScript.\nLe fichier `dist/philippe-marmotte.js` est généré par Gulp à partir de :\n\n- `source/js/philippe-marmotte/philippe-marmotte-lib.js`\n- `source/js/philippe-marmotte/philippe-marmotte-functions.js`\n\nIl embarque donc les listes de données et les fonctions de génération dans un\nseul fichier autonome.\n\nExemple d'intégration :\n\n```html\n\u003cscript src=\"philippe-marmotte.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  document.body.textContent = PhilippeMarmotte.generateIdentity(\"all\", true);\n\u003c/script\u003e\n```\n\nPour travailler depuis les sources séparées :\n\n```html\n\u003cscript src=\"philippe-marmotte-lib.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"philippe-marmotte-functions.js\"\u003e\u003c/script\u003e\n```\n\n## Utilisation\n\nInstaller les dépendances :\n\n```bash\nnpm install\n```\n\nLe projet cible Node 20 ou plus récent. Avec `nvm`, la version recommandée peut\nêtre activée avec :\n\n```bash\nnvm use\n```\n\nLancer le mode développement :\n\n```bash\nnpm run dev\n```\n\nGénérer le site :\n\n```bash\nnpm run build\n```\n\nLe build produit aussi `dist/philippe-marmotte.js`, une version autonome qui\nconcatène les données et les fonctions de génération. Cette commande garde les\nfichiers lisibles pour le développement.\n\nGénérer une version minifiée :\n\n```bash\nnpm run build:prod\n```\n\nCette commande produit les fichiers optimisés pour publication.\n\nFormater les fichiers maintenus :\n\n```bash\nnpm run format\n```\n\nVérifier le formatage :\n\n```bash\nnpm run lint\n```\n\nVérifier le build :\n\n```bash\nnpm run check\n```\n\n## Stack\n\n- HTML, SCSS et JavaScript vanilla.\n- Gulp 5 pour copier, compiler et concaténer les sources.\n- Dart Sass via `gulp-sass`.\n- `gulp-clean-css` pour minifier le CSS.\n- `gulp-terser` pour minifier le JavaScript.\n- Prettier pour garder un style cohérent.\n\n## Structure\n\n```text\nsource/\n  index.html\n  img/\n  js/\n    ascii-printer.js\n    frontend.js\n    philippe-marmotte/\n      philippe-marmotte-lib.js\n      philippe-marmotte-functions.js\n  scss/\n    _settings.scss\n    _reset.scss\n    _animations.scss\n    _ui.scss\n    _layout.scss\n    _generator.scss\n    _footer.scss\n    main.scss\nbuild/\ndist/\n  philippe-marmotte.js\n```\n\n## Licence\n\nCe projet est distribué sous licence MIT. Voir le fichier `LICENSE`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomaspericoi%2Fphilippemarmotte","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomaspericoi%2Fphilippemarmotte","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomaspericoi%2Fphilippemarmotte/lists"}