{"id":17882352,"url":"https://github.com/mgjules/tic-tac-toe","last_synced_at":"2025-03-22T12:32:22.607Z","repository":{"id":57692325,"uuid":"332086851","full_name":"mgjules/tic-tac-toe","owner":"mgjules","description":"TicTacToe is a simple Go microservice for the famous TicTacToe game.","archived":false,"fork":false,"pushed_at":"2023-08-21T15:48:42.000Z","size":957,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T11:11:31.466Z","etag":null,"topics":["firebase","go","golang","microservice","rest-api","tic-tac-toe"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgjules.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}},"created_at":"2021-01-22T23:31:01.000Z","updated_at":"2023-07-03T05:42:26.000Z","dependencies_parsed_at":"2024-06-20T13:02:13.105Z","dependency_job_id":null,"html_url":"https://github.com/mgjules/tic-tac-toe","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/mgjules%2Ftic-tac-toe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Ftic-tac-toe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Ftic-tac-toe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgjules%2Ftic-tac-toe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgjules","download_url":"https://codeload.github.com/mgjules/tic-tac-toe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244959444,"owners_count":20538625,"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":["firebase","go","golang","microservice","rest-api","tic-tac-toe"],"created_at":"2024-10-28T12:52:01.780Z","updated_at":"2025-03-22T12:32:22.283Z","avatar_url":"https://github.com/mgjules.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TicTacToe\n\n[![Go Doc](https://img.shields.io/badge/godoc-reference-blue.svg?style=for-the-badge)](https://godoc.org/github.com/mgjules/tic-tac-toe)\n[![License](https://img.shields.io/badge/Apache%202.0-green.svg?style=for-the-badge)](LICENSE)\n\nTicTacToe is a small microservice that acts as the backend for a tic tac toe game by using the Firebase realtime database.\n\n## Contents\n- [TicTacToe](#tictactoe)\n  - [Contents](#contents)\n  - [Requirements](#requirements)\n  - [Getting started](#getting-started)\n  - [API Documentation](#api-documentation)\n  - [Implementation Status](#implementation-status)\n\n## Requirements\n\n- Go v1.15.x installed\n- [golangci-lint](https://github.com/golangci/golangci-lint) installed on your local machine\n  - used for linting and detecting common errors\n\n## Getting started\n\n1. Download the Go dependencies\n  \n    ```console\n    $ go mod download\n    ```\n2. Clone (i.e make a copy) `.env.example` to `.env` and modify it as needed  \n3. Build and execute the microservice\n\n    ```console\n    $ make buildrun\n    ```\n\n## API Documentation\n\nThe microservice exposes a [Swagger UI](https://swagger.io/tools/swagger-ui/) interface on `http://${HOST}:${PORT}/swagger/index.html`.\n\n## Implementation Status\n- [x] Allow only one move per player, i.e. one after the other\n- [x] Detect if a ‘POST /move’ call was made by a player or the Firebase function\n- [x] Serve correct status codes and descriptive response bodies for invalid input\n- [x] Sanity check input and game state\n- [ ] Bonus points for detecting if a game will result in a draw / deadlock early on\n  - *Detection does not happen **early on**.*\n- [x] Provide unit tests","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgjules%2Ftic-tac-toe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgjules%2Ftic-tac-toe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgjules%2Ftic-tac-toe/lists"}