{"id":16694543,"url":"https://github.com/foxfriends/minigames","last_synced_at":"2026-01-11T03:04:46.374Z","repository":{"id":37177171,"uuid":"433225884","full_name":"foxfriends/minigames","owner":"foxfriends","description":"Minigames bot for Discord servers","archived":false,"fork":false,"pushed_at":"2023-01-20T23:34:41.000Z","size":1043,"stargazers_count":0,"open_issues_count":34,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T23:28:07.105Z","etag":null,"topics":["bot","discord","game"],"latest_commit_sha":null,"homepage":"https://party.cameldridge.com","language":"Rust","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/foxfriends.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"foxfriends","patreon":null,"open_collective":null,"ko_fi":"foxfriends","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-11-29T23:14:32.000Z","updated_at":"2022-01-16T17:31:06.000Z","dependencies_parsed_at":"2023-02-12T06:46:35.102Z","dependency_job_id":null,"html_url":"https://github.com/foxfriends/minigames","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/foxfriends/minigames","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxfriends%2Fminigames","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxfriends%2Fminigames/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxfriends%2Fminigames/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxfriends%2Fminigames/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/foxfriends","download_url":"https://codeload.github.com/foxfriends/minigames/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/foxfriends%2Fminigames/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28274300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T02:08:32.518Z","status":"ssl_error","status_checked_at":"2026-01-11T02:08:32.093Z","response_time":60,"last_error":"SSL_read: 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":["bot","discord","game"],"created_at":"2024-10-12T16:46:38.736Z","updated_at":"2026-01-11T03:04:46.354Z","avatar_url":"https://github.com/foxfriends.png","language":"Rust","funding_links":["https://github.com/sponsors/foxfriends","https://ko-fi.com/foxfriends"],"categories":[],"sub_categories":[],"readme":"# Minigames\n\n[Roadmap][] | [Guide][] | [Manual][] | [Install][]\n\n[Roadmap]: https://github.com/users/foxfriends/projects/2\n[Guide]: ./GUIDE.md\n[Manual]: ./USAGE.md\n[Install]: https://party.cameldridge.com/install\n\nMinigames and leaderboard for Discord servers. Challenge your friends to games, and determine who is\nthe best (mini)gamer once and for all.\n\n## Development Environment Setup\n\n### Preparation\n\nBefore running the project by any method, the following setup steps must be completed:\n\n1.  On the [Discord Developer Portal][], Create an application, and then a bot within that application.\n2.  Set up an OAuth2 redirect for the `/oauth2` route of where you will be running the server (likely `http://localhost:8000/oauth2`)\n3.  Copy `bot/.env.example` to `bot/.env` and put the appropriate values in.\n4.  Copy `server/.env.example` to `server/.env` and put the appropriate values in.\n5.  Use [OpenSSL][] to generate the RS256 key for signing JWTs:\n    ```sh\n    openssl genrsa -out server/jwt.pem\n    ```\n6.  Add the bot to the Discord server you wish to add it to by visiting the link that is output by `bot/scripts/add`.\n\n[OpenSSL]: https://www.openssl.org/\n[Discord Developer Portal]: https://discord.com/developers/\n\n### Docker\n\nFor those who are *only planning on building games* (and not modifying the bot or server),\nthe `docker-compose.yml` in the root of this repository describes everything required to run the\nbot and server. Install [Docker][] and [docker-compose][] and you will be able to run the server\nwith just `docker-compose up`.\n\n[Docker]: https://www.docker.com/\n[docker-compose]: https://docs.docker.com/compose/\n\nThis `docker-compose.yml` uses the images published on the GitHub container registry. When run\nthis way, they have nothing to do with the source code on your system. __Using Docker for\ndeveloping the server and bot is not recommended for that reason__. Instead, follow the\ninstructions below to run the bot and server directly on your machine.\n\nThere is an additional file `docker-compose.src.yml`, which can be used to run the source\nversions, instead of the published versions. This file is still not recommended for\ndeveloping the server or bot, as rebuilding the Docker containers takes a long time. This\nfile is mainly intended for testing the that the Docker images actually work before\npublishing a release.\n\n### Server and Bot\n\nThe server uses [Rust][] (1.56) and [PostgreSQL][] (14). The bot uses [Deno][] (1.16).\nInstall all of those however you like.\n\nOnce installed, use `cargo` to further install [sqlx-cli][] (with at least the `postgres` feature),\nthen you can set up the database:\n1.  Create the database with `sqlx database create`.\n2.  Migrate the database with `sqlx migrate run`.\n\n[Node.js]: https://nodejs.org/en/\n[Deno]: https://deno.land/\n[Rust]: http://rust-lang.org/\n[PostgreSQL]: https://www.postgresql.org/\n[sqlx-cli]: https://crates.io/crates/sqlx-cli\n\nOnce all preparation and database setup steps have been completed, you can run the app. To have it\nfully working requires that PostgreSQL is running already, then:\n1.  *If migrations have changed*, before starting the server run `sqlx migrate run`.\n2.  Run the server with `cargo run` in the `server` directory.\n3.  Run the bot with `bot/scripts/bot`.\n\n### Games\n\nGames are developed independently of the server, and can really be built in any way you choose, so long\nas it can interact with the server via HTTP and WebSocket.\n\nFor now, games have only been developed using [Node.js][] (17), so ensure that is installed before\nattempting to work on them.\n\nFrom there, follow the directions in each game's individual README to get them set up and running:\n*   [Tic-tac-toe](./games/tictactoe/README.md)\n*   [Dots and Boxes](./games/dots-and-boxes/README.md)\n\nFor more information on how to build a game and connect it with a running server, see the [Guide][].\n\n[Guide]: GUIDE.md\n\n## Contributing\n\nPull Requests and Issues are always welcome. Do note that this project is in very early stages\nso things will be moving quickly. You may want to wait until it settles down a bit. If you want\nto get involved though, do reach out and a roadmap can be set out.\n\nDo keep to a consistent style, as enforced by CI. The projects within this repository are set up\nwith standard linting and formatting practices for their respective languages.\n\nPull requests will not be accepted until CI passes. For each type of project, these are the commands\nyou need to ensure succeed:\n\n```sh\n# Rust\ncargo clippy\ncargo fmt\ncargo check\ncargo sqlx prepare\n\n# Deno\ndeno lint\ndeno fmt\n\n# Node\nnpm run lint\nnpm run stylelint\nnpm run fmt\nnpm run build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxfriends%2Fminigames","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffoxfriends%2Fminigames","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffoxfriends%2Fminigames/lists"}