Super-Serve
Backend services for a lite social-presence system for online-games using Go.
Overview
This microservice is designed to provide a robust, scalable backend system for online-games that have the social experience as one of the core aspects of itself. It is implemented using:
- Go, as the main programming language.
- Echo : HTTP-Web Request Handling Framework
- gRPC : gRPC Communication Framework
- MongoDriver : MongoDB driver for Go
- Redigo/Redis : Redis driver for Go
- Google/UUID : UUID generation for Player creation
- Teris-IO/ShortID : Short unique-ID generation for Party codes
- Logrus : Logging solution
- MongoDB, as the primary data store for existing player data.
- Redis, as the fast, in-memory cache solution to provide seamless updates.
- Docker, as the packaging and containerization platform for the application.
- Kubernetes/MiniKube, as the orchestration provider for the packaged containers.
Features
-
Player features
- Player registration.
- Player login.
- Fetch friends info, along with each of their current statuses.
-
Friend features
- Add a player as a friend using their player-id.
- Accept a pending friend request in your inbox from some other player.
- Reject a friend request in your inbox.
- Remove existing friends from your friend list.
-
Live Features
- Status features, get live notifications on when your friend (f) / party-member (pm) statuses change, like:
- ONLINE (f).
- AWAY (f).
- IN-PARTY (f).
- OFFLINE (f).
- INVITES (f).
- ACCEPT (pm).
- REJECT (pm).
- JOINED (pm).
- LEAVE (pm).
- KICKED (pm).
- Party features, get access to features that evolve your gaming experience with your group, like:
- Party creation.
- Sending party invites.
- Receiving party invites.
- Accepting party invites.
- Rejecting party invites.
- Leaving a joined party.
- Kicking out rogue agents (players), only if you are the leader.
Getting Started
Follow these instructions to get the project up and running on your local machine for development and testing purposes.
Prerequisites
Installation
Clone the repository
Usage
Just use the make
command along with the options below:
run
, for running it with Docker on local.
run-and-deploy
, for doing the setup using MiniKube, if installed in your local machine.
API Documentation
Use the below API collections from POSTMAN to interact with the running server :
License
This project is licensed under the MIT License - see the LICENSE.md file for details.