# Galaxy Galaxy is a turn-based strategy game which took place in space. At the highest level Game has a Backend service and an UI Client. ## Backend service Backend service is presented by several "microservices" with a different set of responsibilities. - AuthN Proxy Service: handles all incoming requests, immediately rejects not-authenticated requests and passes authenticated request to the next service. - AuthZ Service: checks permissions avaliable to the authenticated user and passes request to the next service if user is authorized to use specific game api. - Games Orchestrator Service: - finds appropriate Game Server according to Client's request data, - passes user's commands to the selected Game Server, - reads response and bounces it back up to request chain to the Client, - manages Game Server state for health monitoring and making next turn. - Game Servers: several instances of ongoing games with avaliable unprotected API ready to receive Player's and Administrator's commands. ## UI Client UI Client is capable of: - Register a new player and login for an existing player using only e-mail and one-time codes, - Enlist to a new Game from available onboard Games list, - Request list of Games in which Player participating, - Request, store and display particular Game data, - Use push-like mechanism for receiving asynchronous updates from Server, - Offline mode when no internet connection is available or user desired to work offline.