Огромное цифровое полотно, где каждый игрок может закрасить только один пиксель раз в определнное время. Главная цель — оставить свой след, создавая рисунки, объединяясь в команды с другими людьми. Это битва за пространство, где важно не только творить, но и защищать созданное от других игроков.
- Хранение доски происходит в оперативной памяти. Максимально допустимый размер доски - 256x256 пикселей
- Регистрация и авторизация пользователя в системе на базе JWT
- Получение обновлений с сервера и отправка сообщений с помощью подключения по websocket
- Сообщения хранятся в очереди и рассылаюся по всем пользователям раз в заданное время. Сообщения хранят: текущий онлайн, изменения пикселей на доске, количество изменений раз в заданное время
- Интерфейс с регистрацией и авторизацией, отрисовкой полотна и изменения пикселей, получение изменения пикселей других пользователь и отрисовка в реальном времени, выбор цвета и счетчик онлайна
- Хранение доски в постоянном хранилище с историей изменения каждого пикселя
- Рефакторинг и доработка frontend части для лучшего пользовательского опыта
- Ввод системы чанков для увеличения размера полотна из-за ограничений байтовых сообщений
- Вести историю изменения каждого пользователя для отката изменений
- Добавление админ-панели для модерации полотна
POST /auth/login
- Описание: авторизация пользователя
- Тело запроса:
{
"login": "example",
"password": "example"
}- Успешный ответ (200 OK):
{
"statuscode": 200,
"message": "token"
}POST /auth/signin
- Описание: регистрация пользователя
- Тело запроса:
{
"login": "example",
"password": "example"
}- Успешный ответ (200 OK):
{
"statuscode": 200,
"message": "OK"
}GET /board
- Описание: получение доски в виде матрицы
- Тело ответа (200 OK): массив байт
GET /index
- Описание: получение страницы с отображением доски
- Успешный ответ (200 ОК): HTML страница
GET /login
- Описание: получение страницы для авторизации пользователя
- Успешный ответ (200 ОК): HTML страница
- База данных: PostgreSQL
- Драйвер: postgres
# DEV PROD
SERVER_MODE="PROD"
# server port
PORT="3030"
# min 1 max 256
BOARD_HEIGHT=16
# min 1 max 256
BOARD_WEIGHT=16
# user can push pixel
USER_CALLDOWN=30
# send push
MESSAGE_CALLDOWN=60
# DB
CONNECTION_STRING="postgres://pixel_user:pixel_password@localhost:5432?sslmode=disable"
# DB NAME
DB_NAME="pixel_db"
# JWT key base64
SECRET_KEY="MTIzNDU2Nzg5MA===="git clone https://github.com/theforps/Pixel_Battle_Go_Fullstack.git
cd Pixel_Battle_Go_Fullstack
- Скопировать конфигурацию переменных окружения:
cp .env.example .env
- Установить зависимости:
go mod download
go mod verify
- Запустить сервис:
# Запустить код
go run cmd/main.go
# Создать исполняемый файл и запустить
go build -o api cmd/main.go
./api
Сервис будет запущен по ссылке: http://localhost:3030