Durak logo

our team

  • team lead
  • experienced backend engineer
  • devops master
  • game designer
  • bug hunter
  • best teammate on Earth
  • public representative
  • jack of all trades
  • working horse

Project complexity

GIF illustrating project complexity

1000+ commits

Number of commits in the project

283 pull requests

Number of pull requests in the project

10k+ lines of TypeScript code

Number of lines of code in the project

1000+ lines of code for game logic

Simpson meme about bugs in game logic

gentoosiast's contribution chart

gentoosiast contributions to the project

tech stack

Nest.js

  • good modular architecture out of the box
  • dependency injection pattern (inspired by Angular)
  • first-class TypeScript support
  • dozens of built-in modules that help you easily integrate with common technologies and concepts
  • higher learning curve in comparison to Express

Socket.IO

  • disconnect detection and automatic reconnect
  • rooms support out of the box
  • first class support of TypeScript
  • very good official documentation
  • none (for our use case)

TypeORM

  • easy integration with Nest.js
  • it can be used with both relational databases, and NoSQL like MongoDB
  • good documentation
  • none (for our use case)

SQLite

  • easy to integrate into the project (just npm install)
  • doesn't require much configuration
  • lacks many features of more advanced databases

React

  • powerful and versatile
  • huge community
  • lots of 3rd party components for every use case
  • none (for our use case)

Zustand

  • very lightweight
  • can be used with other frameworks or vanilla JavaScript
  • no need for any context wrapper
  • documentation doesn’t cover all of the use cases

Phaser

  • good community
  • lots of examples on official site
  • good official documentation
  • many examples cover outdated version 2
  • very little info about integrating Phaser with React
  • animation stop when user minimizes window / switches to another tab

Back-end

Back-end Map

Front-end

kitten playing with laptop

login page

Login page

registration page

Registration page

Create/Join room

Create room / Join existing room page

rating page

Rating page

history page

History page

profile page

Profile page

rules page

Rules page

game UI

playing card illustration

Yandex version / Our version

Game scene

Game scene

Game scene

the game starts

the game is on

the game is on

the game is on

the game is on

the game is on

the game is on

the game is on

the game is on

the game ends

the game ends

the game ends

the game ends

1. lay cards

2. zoom out

3. dealer cards

4. highlight cards

5. highlight cards

6. take cards

7.discard pile

workflow

eat sleep code cycle

RACI matrix

shopot sinastya gentoosiast
Phaser game design I R AI
game logic on backend AC I R
testing game logic I R AI
bugfixes for game logic C AI R
UI design R AI I
backend work R I AI
frontend work AC I R
deployment R A

Code quality tools

  • EditorConfig
  • ESLint
  • Prettier
  • Stylelint
  • "strict": true in tsconfig.json

Team discord server

Screenshot of team's Discord server

Trello columns

Screenshot of Trello columns

Trello columns

Screenshot of Trello columns

One of Trello cards

Screenshot of Trello card
Contributors to the project

Sample from the list of commits

List of commits

One of Pull Requests

Pull Request example

Discussion of Pull Request

Discussion inside Pull Request

Approval of Pull Request

Approval of Pull Request

Thanks for your attention

GIF which thanks audience for their attention