{"id":28385067,"url":"https://github.com/hamvocke/doppelkopf","last_synced_at":"2025-06-26T03:32:59.016Z","repository":{"id":32292099,"uuid":"110366675","full_name":"hamvocke/doppelkopf","owner":"hamvocke","description":"A \"Doppelkopf\" card game - in your browser ♣️♠️♥️♦️","archived":false,"fork":false,"pushed_at":"2024-12-01T10:52:47.000Z","size":6422,"stargazers_count":62,"open_issues_count":8,"forks_count":10,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-30T11:02:57.572Z","etag":null,"topics":["card-game","cardgame","doppelkopf","flask","game","javascript","javascript-game","python","vue","vuejs"],"latest_commit_sha":null,"homepage":"https://doppelkopf.party","language":"TypeScript","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/hamvocke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2017-11-11T17:46:28.000Z","updated_at":"2025-03-13T17:28:20.000Z","dependencies_parsed_at":"2024-01-15T19:00:17.455Z","dependency_job_id":"cb65cb9e-4fd4-48ed-9e74-0cc0b30c37c0","html_url":"https://github.com/hamvocke/doppelkopf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hamvocke/doppelkopf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamvocke%2Fdoppelkopf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamvocke%2Fdoppelkopf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamvocke%2Fdoppelkopf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamvocke%2Fdoppelkopf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hamvocke","download_url":"https://codeload.github.com/hamvocke/doppelkopf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hamvocke%2Fdoppelkopf/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261994609,"owners_count":23242043,"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":["card-game","cardgame","doppelkopf","flask","game","javascript","javascript-game","python","vue","vuejs"],"created_at":"2025-05-30T09:41:10.641Z","updated_at":"2025-06-26T03:32:58.997Z","avatar_url":"https://github.com/hamvocke.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doppelkopf\n[![Build \u0026 Test](https://github.com/hamvocke/doppelkopf/actions/workflows/build-and-test.yml/badge.svg)](https://github.com/hamvocke/doppelkopf/actions/workflows/build-and-test.yml) [![codecov](https://codecov.io/gh/hamvocke/doppelkopf/branch/master/graph/badge.svg?token=00G78SO5HF)](https://codecov.io/gh/hamvocke/doppelkopf)\n\nAn in-browser implementation of the traditional German [Doppelkopf](https://en.wikipedia.org/wiki/Doppelkopf) card game.\n\n## Live Demo\n[![Screenshot](https://i.imgur.com/qQPyE3I.png)](https://doppelkopf.party)\n\n\u003ch3 align=\"center\"\u003e\u003ca href=\"https://doppelkopf.party/\"\u003eTry the Live Demo at doppelkopf.party\u003c/a\u003e\u003c/h3\u003e\n\n## Features\n\nThis game has been in development for a while and still isn't feature complete. While you'll get a pretty solid experience of the basic game, you will see that some things you might expect from a Doppelkopf game are still missing. Also, note that this game is strictly desinged to be a single player game. You won't be able to play against real humans with this game.\n\nThings that are not yet part of the game but are planned to be built eventually include:\n\n* [ ] Playing solo\n* [ ] Weddings (\"Hochzeit\")\n* [ ] Custom rules: \"Karlchen\", \"Zweite Dulle sticht die erste\", \"Schweinchen\", etc.\n\n## Development\nThe game is implemented using Typescript and [vue.js](https://vuejs.org/). It's a small, frontend-only standalone web application that can be hosted anywhere you can host static websites. It's using [Vite](https://vitejs.dev/) for building, bundling, and running the application locally.\n\n### Getting Started\n\nTo work on the application, check out this repository and open the root of this repo in your terminal.`s\n\nMake sure you use the latest node LTS version.\n\nInstall dependencies:\n\n    npm install\n\nServe the development server on [localhost:5173](http://localhost:5173).\n\n    npm run dev\n\nRun the tests before and after making changes:\n\n    npm run test\n\nFormat your code via:\n\n    npm run format\n\nLint your code via:\n\n    npm run lint\n\nAnd build for production (with minification) using:\n\n    npm run build\n\n### Code Style\nWe're using vue's single-file components with `\u003cscript setup\u003e`. Check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more about this pattern.\n\nWe're using [composition style API](https://vuejs.org/guide/introduction.html#api-styles) for vue components.\n\nVue components are strictly only doing UI work. The entire game logic lives outside of vue components and is completely framework-agnostic. The game code shouldn't know whether the game is running in a browser or any other environment. The `models/` directory is the home of the game logic exclusively. Separating UI from game logic allows us to test-drive our game logic's implementation and makes the game independent of any chosen frontend technology. There are no plans to use anything else than vue for the foreseeable future, but keeping that option is good and helps us keep the codebase healthy in the long-term.\n\n### Testing\nWe're very serious about testing. All bug fixes and new features should come with new tests. Unit tests with [Jest](https://jestjs.io/) (we're using [Vitest](https://vitest.dev) but the API is compatible). End-to-End tests are not a thing at the moment (we used to have a few, but our unit tests seem to be sufficient for now).\n\n### IDE Setup\nIf you want to set up your development environment, here are a few helpful pointers:\n\nFor [VSCode](https://code.visualstudio.com/), use the [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) plugin to work with vue seamlessly.\n\nWe're using [prettier](https://prettier.io/) to format the code. Either set up your editor of choice to integrate prettier or make sure to run prettier before committing changes via `npm run format`.\n\nWe're also using [eslint](https://eslint.org/) for static code analysis and to point out and find potential problems and inconsistencies. You can run it via `npm run lint` or by setting up your editor of choice correctly.\n\n## Contributing\nContributions in the form of feature requests, bug reports, and small bug fixes are welcome. I am **not** looking for pull requests that introduce new or change existing functionality in a non-trivial way. See [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamvocke%2Fdoppelkopf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhamvocke%2Fdoppelkopf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhamvocke%2Fdoppelkopf/lists"}