Tradepot - это многопользовательский симулятор торговли на бирже в реальном времени. Игроки соревнуются друг с другом, пытаясь заработать как можно больше на волатильном рынке.
| Welcome Screen | Game Screen |
|---|---|
Самый простой способ запустить проект (с использованием встроенного фронтенда)"
.env файл в корне проекта:TRADEPOT_EMBED="1"
TRADEPOT_JWT_SECRET="your-secret" // jwt
cd client
bun install # npm install
bun run build # npm run build
cd ..
go run .
http://localhost:8080 в браузере.Для работы
go embedпапкаclient/distдолжна существовать. Если вы не хотите билдить фронт каждый раз, используйте режим разработки.
Для комфортной работы над кодом рекомендуется запускать части проекта раздельно:
.env файл в корне проекта, и установитье TRADEPOT_EMBED="0":TRADEPOT_EMBED="0"
TRADEPOT_JWT_SECRET="your-secret" // jwt
cd ..
go run .
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 Отчет в браузере
Подробнее о том, как устроена тестовая среда, написано в тестировании.
Проект разделен на две основные части:
Где что лежит:
internal/ содержит логику, транспорт, сокеты.client/src/lib содержит основной код фронтенда (компоненты, сторы, API).docs/ содержит более подробные гайды по каждому разделу.В папке docs/ лежат более подробные гайды по каждому из разделов, чтобы в проекте было легче разобраться:
Read/WritePump и схему движения данных.