https://github.com/a1unade/tictactoe
https://github.com/a1unade/tictactoe
asp-net-core csharp docker-compose jwt masstransit mongodb postgersql rabbitmq react signalr typescript
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/a1unade/tictactoe
- Owner: a1unade
- License: mit
- Created: 2025-02-10T14:45:22.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-02-11T21:01:45.000Z (8 months ago)
- Last Synced: 2025-04-02T07:17:43.822Z (6 months ago)
- Topics: asp-net-core, csharp, docker-compose, jwt, masstransit, mongodb, postgersql, rabbitmq, react, signalr, typescript
- Language: C#
- Homepage:
- Size: 1.64 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Крестики-нолики
После создания игры, нужно обновить страницу, чтобы она появилась в списке игр (такой вот косяк) ...
### Условия:
Создатель игры сидит и ждет когда кто-то к нему присоединится. Когда игрок2 присоединился, игра стартует автоматически. Кто первый, определяется рандомно. Должна соблюдаться очередность хода - т.е. ходят строго по очереди. Любой кто подключился (игрок3 и так далее) не могут вмешаться в игру, а только наблюдают (видят чат, если он есть).
После окончания игры игрокам нужно начислить рейтинг:
- за победу, +3 победителю
- за ничью, +0 каждому
- за поражение, -1 проигравшемуПосле окончания игры игра должна перезапуститься через несколько секунд и продолжиться с теми же участниками.
### Детали разработки:
Все должно быть сделано в одном “компоузнике”. Должно быть (использование каждого обязательно для полного балла):
- UI - react- бэк для UI (WebApi) - обязательно CQRS (MediatR - Запрещен, нужно самописный), DDD - по желанию
- бд - на выбор MSSQL, PostgreSQL
- rabbit - для взаимодействия игры
- rabbit consumer - для взаимодействия игры
- mongo - для сохранения рейтинга
- SignalR - для чата и взаимодействия игры
- по желанию добавить отдельный сервис который закрывает пустые комнаты или придумать свою реализацию. “Закрывает” - ставит статус “окончено”
### Как запускать проект:
Весь проект запускается с помощью `docker-compose`.
Чтобы полностью пересобрать проект, можно воспользоваться командами:
```shell
docker-compose down --rmi all -v
docker-compose up --build -d
```также были добавлены сценарии для сборки через `Makefile`:
```shell
make docker
``````shell
make docker-rebuild
```После выполнения команд результат должен быть примерно таким: