ScyCasino is a demo project showcasing the operation of distributed systems in real-time gaming environments.
The project highlights the identification flow (enrollment/registration) using the OIDC protocol, real-time communication for room and game state management via WebSockets and SignalR, and audio/video streaming in a serverless format using WebRTC. It also demonstrates inter-service transactions with compensation through Routing Slips.
The project is designed following principles of Domain-Driven Design, Clean Architecture, CQRS, and more.
- To demonstrate real-time dependent communication (SignalR) in distributed systems.
- To showcase the use of Routing Slip in MassTransit.
- To explore integrating a new identity server solution: Authentik.
- To conduct field testing for ScyScaff.
The initial template was scaffolded using Scylin's Scaffolder.
- Create a
.env
file with the required values:
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" >> .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" >> .env
- Run the following command:
docker-compose up -d
- Wait for Authentik to complete all migrations.
- Set up an admin profile at:
http://localhost:9000/if/flow/initial-setup/
- Assign the profile the roles "ScyCasino Member/Administrator"
- Alternatively, register a new profile via the Frontend.
- Access the Frontend at:
http://localhost:4200/
- Log in to your profile.
This repository is distributed under the CC BY-NC 4.0 license, which prohibits any form of commercial use. It was created purely for demonstration purposes and fun.