{"id":21948546,"url":"https://github.com/thecodingcouple/gren-con-client","last_synced_at":"2026-04-11T03:15:35.504Z","repository":{"id":37986800,"uuid":"488415600","full_name":"thecodingcouple/gren-con-client","owner":"thecodingcouple","description":"Source code for https://www.gren-con.com ","archived":false,"fork":false,"pushed_at":"2022-06-13T01:29:45.000Z","size":3907,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-27T19:55:11.992Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.gren-con.com ","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/thecodingcouple.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}},"created_at":"2022-05-04T01:27:25.000Z","updated_at":"2022-05-07T05:56:26.000Z","dependencies_parsed_at":"2022-09-09T00:10:51.937Z","dependency_job_id":null,"html_url":"https://github.com/thecodingcouple/gren-con-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingcouple%2Fgren-con-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingcouple%2Fgren-con-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingcouple%2Fgren-con-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thecodingcouple%2Fgren-con-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thecodingcouple","download_url":"https://codeload.github.com/thecodingcouple/gren-con-client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244991175,"owners_count":20543627,"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":[],"created_at":"2024-11-29T05:15:45.690Z","updated_at":"2025-12-30T20:42:28.823Z","avatar_url":"https://github.com/thecodingcouple.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gren-con-client\n\nSource code for https://www.gren-con.com (Work in progress)\n\n[Click here](https://github.com/thecodingcouple/gren-con-api) to view source code for the API.\n\n## Synopsis\n\nWe are building a website for hosting information about Gren Con, one day filled with gaming! \n\nWhy go through all this effort you may ask? For learning! This is an excuse to learn new skills and become more proficient with existing skills. \n\n## Built With\n\n* [Vue 3](https://vuejs.org/)\n* [BoardGameGeek API v2](https://boardgamegeek.com/wiki/page/BGG_XML_API2) (For Game Library page)\n\n## Third Party Assets\n\n* [Dice Image](https://unsplash.com/photos/hFSnuPi0t3Q) by Joe Maldonado\n\n## Connecting to the BoardGameGeek XML API\n\n[BoardGameGeek](https://boardgamegeek.com/) has a [public XML API](https://boardgamegeek.com/wiki/page/BGG_XML_API2) for retrieving data from their site, including user game collections.  Here is a request to retrieve [townsean's game collection](https://boardgamegeek.com/collection/user/townsean?own=1\u0026subtype=boardgame\u0026ff=1):\n\n`https://boardgamegeek.com/xmlapi2/collection?username=townsean\u0026own=1`\n\nInitial requests return with the following message:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?\u003e\n\u003cmessage\u003e\n\tYour request for this collection has been accepted and will be processed.  Please try again later for access.\n\u003c/message\u003e\n```\n\nSubsequent requests will return the user's game collection:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?\u003e\n\u003citems totalitems=\"312\" termsofuse=\"https://boardgamegeek.com/xmlapi/termsofuse\" pubdate=\"Fri, 06 May 2022 01:36:22 +0000\"\u003e\n    \u003citem objecttype=\"thing\" objectid=\"35610\" subtype=\"boardgame\" collid=\"24888762\"\u003e\n        \u003cname sortindex=\"1\"\u003e3·4 = Klatsch!\u003c/name\u003e\n        \u003cyearpublished\u003e2008\u003c/yearpublished\u003e\n        \u003cimage\u003ehttps://cf.geekdo-images.com/h_hWzVKVM9qY8Dk422lVZw__original/img/udorUI1yjmfrHnxNeo_gNrPCTCA=/0x0/filters:format(jpeg)/pic322180.jpg\u003c/image\u003e\n        \u003cthumbnail\u003ehttps://cf.geekdo-images.com/h_hWzVKVM9qY8Dk422lVZw__thumb/img/0kono0ts2ttycTtzVi5zQnneYHM=/fit-in/200x150/filters:strip_icc()/pic322180.jpg\u003c/thumbnail\u003e\n        \u003cstatus own=\"1\" prevowned=\"0\" fortrade=\"0\" want=\"0\" wanttoplay=\"0\" wanttobuy=\"0\" wishlist=\"0\"  preordered=\"0\" lastmodified=\"2014-10-14 11:16:54\" /\u003e\n        \u003cnumplays\u003e3\u003c/numplays\u003e\n        \u003ccomment\u003eWhere was this game when I was memorizing the times table?  The component quality is great.  I\u0026#039;ve only played this game with adults and each game was an enjoyable experience. :)\u003c/comment\u003e\n    \u003c/item\u003e\n  \n    \u003c!-- Removed for brevity --\u003e\n  \n    \u003citem objecttype=\"thing\" objectid=\"139162\" subtype=\"boardgame\" collid=\"71332027\"\u003e\n        \u003cname sortindex=\"1\"\u003eZingo! Sight Words\u003c/name\u003e\n        \u003cyearpublished\u003e2012\u003c/yearpublished\u003e\n        \u003cimage\u003ehttps://cf.geekdo-images.com/XU7mIj2i1jIlDQ5_SJ0KlQ__original/img/h-H8XJ9wyCoCaVhXNQ_SgOv68FY=/0x0/filters:format(jpeg)/pic2047488.jpg\u003c/image\u003e\n        \u003cthumbnail\u003ehttps://cf.geekdo-images.com/XU7mIj2i1jIlDQ5_SJ0KlQ__thumb/img/ndAULDYZaaL51GfAL-VPFBMXhsE=/fit-in/200x150/filters:strip_icc()/pic2047488.jpg\u003c/thumbnail\u003e\n        \u003cstatus own=\"1\" prevowned=\"0\" fortrade=\"0\" want=\"0\" wanttoplay=\"0\" wanttobuy=\"0\" wishlist=\"0\"  preordered=\"0\" lastmodified=\"2020-05-19 22:39:44\" /\u003e\n        \u003cnumplays\u003e1\u003c/numplays\u003e\n    \u003c/item\u003e\n    \u003citem objecttype=\"thing\" objectid=\"153566\" subtype=\"boardgame\" collid=\"71332032\"\u003e\n        \u003cname sortindex=\"1\"\u003eZingo! Time-telling\u003c/name\u003e\n        \u003cyearpublished\u003e2014\u003c/yearpublished\u003e\n        \u003cimage\u003ehttps://cf.geekdo-images.com/nx67vi4AvBcEVLCBGqjkCA__original/img/tG3LLDTMHQnhRLlJtwcHzeXx878=/0x0/filters:format(jpeg)/pic2047489.jpg\u003c/image\u003e\n        \u003cthumbnail\u003ehttps://cf.geekdo-images.com/nx67vi4AvBcEVLCBGqjkCA__thumb/img/lBDu3PIGZoxady2L-YvF4y9NmVI=/fit-in/200x150/filters:strip_icc()/pic2047489.jpg\u003c/thumbnail\u003e\n        \u003cstatus own=\"1\" prevowned=\"0\" fortrade=\"0\" want=\"0\" wanttoplay=\"0\" wanttobuy=\"0\" wishlist=\"0\"  preordered=\"0\" lastmodified=\"2020-05-19 22:39:59\" /\u003e\n        \u003cnumplays\u003e0\u003c/numplays\u003e\n    \u003c/item\u003e\n    \u003citem objecttype=\"thing\" objectid=\"187515\" subtype=\"boardgame\" collid=\"44653752\"\u003e\n        \u003cname sortindex=\"1\"\u003eZooscape\u003c/name\u003e\n        \u003cyearpublished\u003e2015\u003c/yearpublished\u003e\n        \u003cimage\u003ehttps://cf.geekdo-images.com/3vDjlyTy-gaoz-cTLT9h1Q__original/img/MvvupVNRiV2VZn0PRxYiGrA1R8c=/0x0/filters:format(png)/pic3415495.png\u003c/image\u003e\n        \u003cthumbnail\u003ehttps://cf.geekdo-images.com/3vDjlyTy-gaoz-cTLT9h1Q__thumb/img/iE4U9QvqtNMnrLpDJ_Yx8hg-YTA=/fit-in/200x150/filters:strip_icc()/pic3415495.png\u003c/thumbnail\u003e\n        \u003cstatus own=\"1\" prevowned=\"0\" fortrade=\"0\" want=\"0\" wanttoplay=\"0\" wanttobuy=\"0\" wishlist=\"0\"  preordered=\"0\" lastmodified=\"2017-08-18 15:15:44\" /\u003e\n        \u003cnumplays\u003e0\u003c/numplays\u003e\n    \u003c/item\u003e\n\u003c/items\u003e\n```\n\nHere's an example to request additional details on a specific game: `https://boardgamegeek.com/xmlapi2/thing?id=35610`\n\nWhich will provide the following XML data:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003citems termsofuse=\"https://boardgamegeek.com/xmlapi/termsofuse\"\u003e\n    \u003citem type=\"boardgame\" id=\"35610\"\u003e\n        \u003cthumbnail\u003ehttps://cf.geekdo-images.com/h_hWzVKVM9qY8Dk422lVZw__thumb/img/0kono0ts2ttycTtzVi5zQnneYHM=/fit-in/200x150/filters:strip_icc()/pic322180.jpg\u003c/thumbnail\u003e\n        \u003cimage\u003ehttps://cf.geekdo-images.com/h_hWzVKVM9qY8Dk422lVZw__original/img/udorUI1yjmfrHnxNeo_gNrPCTCA=/0x0/filters:format(jpeg)/pic322180.jpg\u003c/image\u003e\n        \u003cname type=\"primary\" sortindex=\"1\" value=\"3·4 = Klatsch!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3 Times 4=Swat!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3Â·4=Â£Zas!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3Â·4=Pets!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3·4 = Klatsch\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3·4=Acchiappa!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3·4=Pets!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"3·4=£Zas!\" /\u003e\n        \u003cname type=\"alternate\" sortindex=\"1\" value=\"Multimouches\" /\u003e\n        \u003cdescription\u003eA player chooses a numbered flower on his/her turn. (\u0026amp;quot;Let's multiply by fives.\u0026amp;quot;) When everyone is ready, roll a die, and quickly multiply the numbers on each. Be the first to swat the fly card with the correct product to earn a wooden fly token. Collect eight tokens to win.\u0026amp;#10;\u0026amp;#10;Contents: 45 wooden flies, 42 fly cards, 6 fly swatters, 5 flowers, 5 flower cards, and 2 dice\u0026amp;#10;\u0026amp;#10;\u003c/description\u003e\n        \u003cyearpublished value=\"2008\" /\u003e\n        \u003cminplayers value=\"2\" /\u003e\n        \u003cmaxplayers value=\"6\" /\u003e\n        \u003cpoll name=\"suggested_numplayers\" title=\"User Suggested Number of Players\" totalvotes=\"0\"\u003e\n            \u003cresults numplayers=\"1\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"2\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"3\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"4\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"5\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"6\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n            \u003cresults numplayers=\"6+\"\u003e\n                \u003cresult value=\"Best\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Recommended\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"Not Recommended\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n        \u003c/poll\u003e\n        \u003cplayingtime value=\"10\" /\u003e\n        \u003cminplaytime value=\"10\" /\u003e\n        \u003cmaxplaytime value=\"10\" /\u003e\n        \u003cminage value=\"8\" /\u003e\n        \u003cpoll name=\"suggested_playerage\" title=\"User Suggested Player Age\" totalvotes=\"0\"\u003e\n            \u003cresults\u003e\n                \u003cresult value=\"2\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"3\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"4\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"5\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"6\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"8\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"10\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"12\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"14\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"16\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"18\" numvotes=\"0\" /\u003e\n                \u003cresult value=\"21 and up\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n        \u003c/poll\u003e\n        \u003cpoll name=\"language_dependence\" title=\"Language Dependence\" totalvotes=\"0\"\u003e\n            \u003cresults\u003e\n                \u003cresult level=\"181\" value=\"No necessary in-game text\" numvotes=\"0\" /\u003e\n                \u003cresult level=\"182\" value=\"Some necessary text - easily memorized or small crib sheet\" numvotes=\"0\" /\u003e\n                \u003cresult level=\"183\" value=\"Moderate in-game text - needs crib sheet or paste ups\" numvotes=\"0\" /\u003e\n                \u003cresult level=\"184\" value=\"Extensive use of text - massive conversion needed to be playable\" numvotes=\"0\" /\u003e\n                \u003cresult level=\"185\" value=\"Unplayable in another language\" numvotes=\"0\" /\u003e\n            \u003c/results\u003e\n        \u003c/poll\u003e\n        \u003clink type=\"boardgamecategory\" id=\"1032\" value=\"Action / Dexterity\" /\u003e\n        \u003clink type=\"boardgamecategory\" id=\"1041\" value=\"Children's Game\" /\u003e\n        \u003clink type=\"boardgamecategory\" id=\"1094\" value=\"Educational\" /\u003e\n        \u003clink type=\"boardgamecategory\" id=\"1104\" value=\"Math\" /\u003e\n        \u003clink type=\"boardgamemechanic\" id=\"2072\" value=\"Dice Rolling\" /\u003e\n        \u003clink type=\"boardgamefamily\" id=\"22783\" value=\"Admin: Better Description Needed!\" /\u003e\n        \u003clink type=\"boardgamefamily\" id=\"7589\" value=\"Animals: Flies\" /\u003e\n        \u003clink type=\"boardgamefamily\" id=\"19716\" value=\"Series: Lernspiel (HABA)\" /\u003e\n        \u003clink type=\"boardgamedesigner\" id=\"10431\" value=\"Antje Reiter\" /\u003e\n        \u003clink type=\"boardgameartist\" id=\"12738\" value=\"Martina Leykamm\" /\u003e\n        \u003clink type=\"boardgamepublisher\" id=\"384\" value=\"HABA\" /\u003e\n    \u003c/item\u003e\n\u003c/items\u003e\n```\n\n## Useful Resources\n\n* https://stripesgenerator.com/\n* https://color.adobe.com/create/color-wheel\n\n## Recommended IDE Setup\n\n[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin).\n\n## Customize configuration\n\nSee [Vite Configuration Reference](https://vitejs.dev/config/).\n\n## Project Setup\n\n```sh\nnpm install\n```\n\n### Compile and Hot-Reload for Development\n\n```sh\nnpm run dev\n```\n\n### Compile and Minify for Production\n\n```sh\nnpm run build\n```\n\n### Run Unit Tests with [Vitest](https://vitest.dev/)\n\n```sh\nnpm run test:unit\n```\n\n### Run End-to-End Tests with [Cypress](https://www.cypress.io/)\n\n```sh\nnpm run build\nnpm run test:e2e # or `npm run test:e2e:ci` for headless testing\n```\n\n### Lint with [ESLint](https://eslint.org/)\n\n```sh\nnpm run lint\n```\n\n### Deploy to gh-pages\n\n```sh\ngit add dist \u0026\u0026 git commit -m \"updating gh-pages\"\ngit subtree push --prefix dist origin gh-pages\n```\n\nor\n\n```sh\ngit push origin :gh-pages \u0026\u0026 git subtree push --prefix dist origin gh-pages\n```\n\n## Maintainers\n\n* [Ashley Grenon - @townsean](https://github.com/townsean)\n* [Brodavi - @brodavi](https://github.com/brodavi)\n* [Dickie - @DickieTheProgrammer](https://github.com/DickieTheProgrammer)\n* [Michael Grenon - @nsipid](https://github.com/nsipid)\n\n## License (MIT)\n\nMIT License\n\nCopyright (c) 2022 The 42nd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodingcouple%2Fgren-con-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecodingcouple%2Fgren-con-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodingcouple%2Fgren-con-client/lists"}