Tarbik Map

Multi-player web game where the players have to guess the location of a random image shown.


Source code available at GitHub.

Example web app runs at https://tarbikmap.azurewebsites.net.

Used Technologies

  • ASP.NET Core
  • React
  • TypeScript
  • Docker
  • NetTopologySuite
  • xUnit.net
  • SignalR
  • Selenium
  • Jenkins Pipeline
  • OpenStreetMap APIs (Nominatim, Overpass)
  • Google APIs (Street View Static API, Geocoding API)
  • Wikidata

Implementation Details and Challenges

This project was an opportunity to try current technologies and some strict code quality ideas (as of 2020):

  • using modern and statically typed languages - C# for server and TypeScript for client
  • static code analysis - using nullable reference types, .NET Analyzers and StyleCop
  • automatic code formatting enabled across all programming languages (to avoid unnecessary differences in formatting)
  • building in Docker containers for stable and reproducible building environment
  • development in Docker containers (using Visual Studio Code, Remote - Containers extension) for stable and reproducible development environment (containers with all technologies needed for development are automatically configured, including separate Selenium Hub container)
  • complete continuos delivery pipeline (using Jenkins) including code static analysis, unit tests, UI tests (Selenium); really executing after each commit and automatically deploying the application at the end if tests pass
  • simple and clean configuration management - all changing configuration is stored in one place, without any default values or fallbacks at arbitrary places