TradePot Svelte Themes

Tradepot

Tradepot - симулятор торговли в реальном времени, где игроки соревнуются за прибыль на волатильном рынке.

Tradepot

Tradepot - это многопользовательский симулятор торговли на бирже в реальном времени. Игроки соревнуются друг с другом, пытаясь заработать как можно больше на волатильном рынке.

Welcome Screen Game Screen

Быстрый старт

Самый простой способ запустить проект (с использованием встроенного фронтенда)"

  1. Создайте .env файл в корне проекта:
TRADEPOT_EMBED="1"
TRADEPOT_JWT_SECRET="your-secret" // jwt
  1. Соберите фронтенд:
cd client
bun install # npm install
bun run build # npm run build
  1. Запустите бекенд:
cd ..
go run .
  1. Откройте http://localhost:8080 в браузере.

Для работы go embed папка client/dist должна существовать. Если вы не хотите билдить фронт каждый раз, используйте режим разработки.

Режим разработки

Для комфортной работы над кодом рекомендуется запускать части проекта раздельно:

  1. Создайте .env файл в корне проекта, и установитье TRADEPOT_EMBED="0":
TRADEPOT_EMBED="0"
TRADEPOT_JWT_SECRET="your-secret" // jwt
  1. Запустите бекенд:
cd ..
go run .
  1. Запустите фронтенд:
cd .\client\
bun run dev # npm run dev

Тестирование

Для тестирования мы используем стандартный инструментарий Go и SQLite в памяти для быстрых и изолированных тестов.

  • Запуск тестов бекенда:

    go test ./... # запустить все тесты
    go test -v ./... # запустить с подробным выводом логов
    
  • Проверка покрытия:

    go test -coverprofile=coverage.out ./... # генерируется отчет
    go tool cover -func=coverage.out # показывает статистику в консоли
    go tool cover -html=coverage.out # открывает html Отчет в браузере
    

Подробнее о том, как устроена тестовая среда, написано в тестировании.

Архитектура проекта

Проект разделен на две основные части:

  • Бекенд (Go) - сервер. Использует SQLite для хранения данных и WebSockets для реалтайм синхронизации.
  • Фронтенд (Svelte 5) - SPA (single page app) с использованием рун для реактивности. Весь стейт игры управляет через кастомные сторы, которые слушают сокеты.

Где что лежит:

  • internal/ содержит логику, транспорт, сокеты.
  • client/src/lib содержит основной код фронтенда (компоненты, сторы, API).
  • docs/ содержит более подробные гайды по каждому разделу.

Подробная документация

В папке docs/ лежат более подробные гайды по каждому из разделов, чтобы в проекте было легче разобраться:

  • Фронтенд - про Svelte 5, руны, структуру сторов и навигацию
  • Бекенд - про архитектуру комнат, отсутствие мьютеров, Read/WritePump и схему движения данных.
  • Тестирование - как запускать тесты, как устроены моки и как проверить покрытие кода.

Top categories

Loading Svelte Themes