explaingit

heroiclabs/nakama

12,597GoAudience · developerComplexity · 4/5Setup · moderate

TLDR

An open-source backend server for multiplayer games and social apps that provides user accounts, friend lists, real-time chat, leaderboards, and matchmaking out of the box.

Mindmap

mindmap
  root((nakama))
    Features
      User accounts
      Real-time chat
      Matchmaking
      Leaderboards
    Custom Logic
      Lua scripts
      TypeScript code
      Native Go plugins
    Setup
      Docker compose
      PostgreSQL required
      Cloud deployment docs
    Audience
      Game studios
      Mobile developers
      Indie developers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Deploy a ready-made multiplayer backend for a mobile game without building account, chat, or matchmaking systems from scratch.

USE CASE 2

Add real-time leaderboards and seasonal tournaments to an existing game.

USE CASE 3

Write custom game server logic in Lua or TypeScript that runs server-side inside Nakama.

USE CASE 4

Validate in-app purchases and send push notifications from a single self-hosted backend.

Tech stack

GoPostgreSQLCockroachDBDockerLuaTypeScriptJavaScript

Getting it running

Difficulty · moderate Time to first run · 1h+

Requires Docker and a PostgreSQL or CockroachDB database, a single docker-compose command starts both services together.

In plain English

Nakama is an open-source backend server for games and social apps. It provides the infrastructure that multiplayer games and interactive apps typically need: user accounts, data storage, friend lists, group chats, real-time multiplayer sessions, leaderboards, and matchmaking. Rather than building all of these systems from scratch, a game studio can deploy Nakama and use its built-in features via client libraries. The feature list includes user registration and login through social networks, email, or device ID, storage collections for saving game state or user settings, a social graph for tracking friend connections, one-on-one, group, and global chat with persistent message history, both real-time and turn-based multiplayer, dynamic and seasonal leaderboards, tournament brackets that can be chained into leagues, team-based party play, in-app purchase validation, and push notifications to connected clients. Custom server logic can be added using Lua scripts, TypeScript/JavaScript, or native Go code. The server requires CockroachDB or a Postgres-compatible database to store its data. The quickest way to start a local development environment is with Docker: a single docker-compose command downloads the server and database images and starts them together. Native binary downloads are also available for running without Docker. Client libraries are available for several platforms so that games can connect to the server from their existing tech stack. The server is built for production scale and is described as being used by game studios worldwide. Detailed documentation covering configuration, deployment to cloud providers, and all API features is hosted on the Heroic Labs website. A community forum exists for developer questions and discussion.

Copy-paste prompts

Prompt 1
Using the Nakama Go client SDK, write code to create a user account, log in, and join a real-time multiplayer match.
Prompt 2
How do I write a Nakama server-side Lua script that runs custom logic when a match ends and updates the leaderboard?
Prompt 3
Set up a local Nakama development environment with Docker Compose and connect a Unity game client to it.
Prompt 4
How do I configure Nakama matchmaking to group players by skill rating for a turn-based mobile game?
Open on GitHub → Explain another repo

← heroiclabs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.