{"id":18430345,"url":"https://github.com/avan1235/mini-games","last_synced_at":"2025-06-19T02:33:35.286Z","repository":{"id":63564412,"uuid":"455960870","full_name":"avan1235/mini-games","owner":"avan1235","description":"Kotlin Multiplatform project that uses as much as possible of shared Kotlin code","archived":false,"fork":false,"pushed_at":"2024-03-01T12:36:52.000Z","size":5528,"stargazers_count":70,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T17:42:16.131Z","etag":null,"topics":["android","game","gradle","java","kotlin","ktor","linux","windows"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/avan1235.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2022-02-05T19:06:54.000Z","updated_at":"2025-04-02T07:06:47.000Z","dependencies_parsed_at":"2023-12-30T14:23:59.446Z","dependency_job_id":"0803ccea-0bed-4ca5-9c9e-b8cc2670969e","html_url":"https://github.com/avan1235/mini-games","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/avan1235/mini-games","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fmini-games","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fmini-games/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fmini-games/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fmini-games/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avan1235","download_url":"https://codeload.github.com/avan1235/mini-games/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fmini-games/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260672283,"owners_count":23044771,"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":["android","game","gradle","java","kotlin","ktor","linux","windows"],"created_at":"2024-11-06T05:20:24.947Z","updated_at":"2025-06-19T02:33:30.271Z","avatar_url":"https://github.com/avan1235.png","language":"Kotlin","readme":"# Mini Games\n\n[![Platforms](https://img.shields.io/badge/web-WebAssembly-blue)](https://mini-games.procyk.in)\n[![Platforms](https://img.shields.io/badge/mobile-Android%20%7C%20iOS-blue)](https://github.com/avan1235/mini-games/releases/latest)\n[![Platforms](https://img.shields.io/badge/desktop-Windows%20%7C%20macOS%20%7C%20Linux-blue)](https://github.com/avan1235/mini-games/releases/latest)\n\n[![Build](https://img.shields.io/github/actions/workflow/status/avan1235/mini-games/release.yml?label=Build\u0026color=green)](https://github.com/avan1235/mini-games/actions/workflows/release.yml)\n[![Latest Release](https://img.shields.io/github/v/release/avan1235/mini-games?label=Release\u0026color=green)](https://github.com/avan1235/mini-games/releases/latest)\n[![Google Play](https://img.shields.io/endpoint?color=green\u0026logo=google-play\u0026logoColor=green\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dml.dev.kotlin.minigames%26l%3DGoogle%2520Play%26m%3D%24version)](https://play.google.com/store/apps/details?id=ml.dev.kotlin.minigames)\n[![Docker](https://img.shields.io/docker/v/avan1235/mini-games?label=Docker%20Hub\u0026color=green)](https://hub.docker.com/repository/docker/avan1235/mini-games/tags?ordering=last_updated)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](./LICENSE.md)\n[![GitHub Repo stars](https://img.shields.io/github/stars/avan1235/mini-games?style=social)](https://github.com/avan1235/mini-games/stargazers)\n[![Fork Mini Games](https://img.shields.io/github/forks/avan1235/mini-games?logo=github\u0026style=social)](https://github.com/avan1235/mini-games/fork)\n\n## Introduction\n\nYou can find here how to:\n\n- configure build files to build for Web, Android, iOS, Linux, MacOS and Windows\n- release your application with GitHub actions\n- write and use multiplatform clients and share model code with the backend of your application with the beauty of Kotlin Multiplatform\n\n## Project description\n\nYou can find project description in [Essay](ESSAY.md).\n\n## Project presentation\n\n### Web client\n\nYou can go directly to the [Mini Games website](https://mini-games.procyk.in), where the static client of the application is deployed.\n\n### Android client\n\n![Android](https://user-images.githubusercontent.com/11787040/230712173-e8c3ff55-6d77-4fa4-a90e-4a7127732645.gif)\n\n### iOS client\n\n![iOS](https://user-images.githubusercontent.com/11787040/230871657-8b8ee025-bb77-446e-abd5-7d33023529f7.gif)\n\n### Local project compilation process\n\nhttps://user-images.githubusercontent.com/11787040/230044938-f243df3d-ecc7-47ce-b056-227405fc889b.mp4\n\n## Download and run application\n\nAndroid released version is available on\n[Google Play](https://play.google.com/store/apps/details?id=ml.dev.kotlin.minigames).\n\n\u003ca href='https://play.google.com/store/apps/details?id=ml.dev.kotlin.minigames\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e\u003cimg alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/\u003e\u003c/a\u003e\n\nYou can download compiled version of application from\n[release page](https://github.com/avan1235/mini-games/releases).\n\nClient applications are configured to work with the server deployed on test server.\nYou can download them to play with \"production\" version of application - to run it locally,\nyou should compile server and clients by yourself.\n\nPlease note that for running unsigned version of macOS application, you need to temporarily\ndisable Gatekeeper, so executing command\n\n```shell\nsudo xattr -dr com.apple.quarantine  /Applications/MiniGames.app\n```\n\nis required to be able to run the app on macOS. You can learn more about this\n[here](https://web.archive.org/web/20230318124537/https://disable-gatekeeper.github.io/).\n\nTo install Linux version run:\n\n```shell\nsudo dpkg -i  minigames.deb\n```\n\nYou can try playing with default login credentials which are publicly available:\n\n- user: **user**\n- password: **pass**\n\nYou need a fast internet connection to have a good play experience in _SnakeIO_ game.\n\n## Set up the project\n\nProject contains two parts - client app and the server app.\n\n[Intellij Ultimate](https://www.jetbrains.com/idea/download/) is highly\nrecommended when working with server app.\n\nIn both cases, open main project directory when importing the project (\nnot the `android-app`, `desktop-app` nor `server` etc.) as the main directory contains the\nconfiguration common to both projects and has to be loaded.\n\n**Remember:**\nWhen working with project use **Rebase** strategy as long as you can\nnot to create extra merge commits. You'll be asked by the IDE probably\nduring first push when some other developer also made changes.\n\n## Compile and run application\n\nTo compile client application you need Android SDK as well as JDK 17 (corretto version was used).\n\n### Server\n\n### Environment\n\nThere is a docker environment configured in [docker-compose.yml](docker-compose.yml)\nrequired to run server application. It contains Postgres database for server data.\nYou can start it with\n\n```shell\n./start.sh\n```\n\non linux or some equivalent commands on other platform.\n\n#### Run from terminal\n\nThe easiest way to run the instance of server is to start it from terminal by running\nGradle\n\n```shell\n./gradlew server:run\n```\n\nfrom the root directory of project.\n\n#### Run from Intellij\n\nTo run the server from the Intellij, go to the `Server` class and run the `main`\nfunction (starting database manually before).\n\n**Notice:**\nYou need to have environment variables loaded to build configuration to start\napplication correctly. The easiest way is to copy the content of [.env](.env)\nfile and paste it in the build configuration in Intellij as committed version\ncontains the definition of developer environment.\n\n#### Compile to JAR file\n\nJust run `./gradlew stage` to build the server distribution. Build\nresult will be located in `server/build/libs/`. You can run it with `java -jar`\ncommand, but you have to manually set the needed env variables to make application\nworking.\n\n### Desktop\n\n#### Run from terminal\n\nThe easiest way to run the instance of desktop client is to start it from terminal by running\nGradle\n\n```shell\n./gradlew desktop-app:runDistributable\n```\n\nfrom the root directory of project.\n\n### iOS\n\n#### Run from terminal\n\nTo run iOS version of client cocoapods pod needs to be compiled and installed to XCode project\nlocated in `ios-app`. The easiest way to compile and link all ios targets is to run\n\n```shell\n./gradlew linkPodReleaseFrameworkIosFat linkPodDebugFrameworkIosFat\n```\n\nfrom the root directory of project and then\n\n```shell\n./gradlew podInstall\n```\n\nto install the compiled resources to XCode.\n\nThe last step is to set up the XCode project by first changing the value of `TEAM_ID` in\n`ios-app/Configuration/Config.xcconfig` to your own and then open XCode workspace available\nin `ios-app`.\n\n### Android\n\n#### Run from Intellij\n\nThe easiest way to run the instance of android client is to start it from Android Studio by running\nGradle the generated build configuration `android-app`. It should build the debug version of application\nand deploy it on available emulator of android device. This is the only advised method of running the\nclient application for android platform.\n\n### Web\n\n#### Run from terminal\n\nThe easiest way to run the instance of wev client is to start it from terminal by running\nGradle\n\n```shell\n./gradlew web-app:wasmJsBrowserProductionRun\n```\n\nfrom the root directory of project.\n\n## Project structure\n\nProjects is configured as Gradle modules that may depend on each other.\nE.g. it contains module that is compiled to `.jar` distribution file of server\nfor the application and some other module that can be compiled to Android `.apk`\nfile.\n\n### Application modules\n\n- `build-src` - contains configuration of build logic (it's compiled before Gradle build of the other modules even\n  starts)\n- `shared` - contains common logic for `server` and `shared-client` like domain model or rest api model, depends\n  on `build-src`\n- `shared-client` - contains common logic for `android-app` (and future `ios-app`) like rest client, depends\n  on `build-src` and `shared`\n- `android-app` - targets Android, depends on `shared-client`\n- `desktop-app` - targets any JVM desktop, depends on `shared-client`\n- `web-app` - targets web, depends on `shared-client`\n- `server` - targets JVM, depends on `build-src` and `shared`\n\n### Extra directories\n\n- `dev-env` - useful tools that **should** be used by developers that are working\n  locally to test their current code and solutions\n    - docker environment with Postgres database can be run with `start.sh`\n    - `http` contains http requests definitions that can be run from Intellij. They're\n      configured by the `http-client.env.json` to switch between different environments\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favan1235%2Fmini-games","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favan1235%2Fmini-games","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favan1235%2Fmini-games/lists"}