⬢ hexil.org: The libre online alternative to Settlers of Catan

Related tags

Utilities rust
Overview

Hexer

Deploy badge

Getting started for developers

Backend

  1. Install Rust and Cargo, for example using rustup.

  2. Navigate to the back directory. Then start the backend:

    cargo run

Frontend

  1. Install nodejs.

  2. Navigate to the front directory. Then first install the dependencies:

    npm install
  3. Start a local development server:

    npm start

License

Hexer is licensed under the GNU Affero General Public License 3 or any later version at your choice. See copying for details.

Comments
  • Run GitHub actions on push

    Run GitHub actions on push

    Currently, workflows are only run whenever an event in a pull_request occurs. I think we also should run the workflows on the push event to get more immediate feedback about the code we are working on, without having to make a pull request for it.

    type/enhancement subject/ci cd 
    opened by marijnvanwezel 8
  • Fix badge in README

    Fix badge in README

    Right now, the badge links to https://github.com/hexil-org/hexer/actions/workflows/check.yaml. But it should link to https://github.com/hexil-org/hexer/actions/workflows/deploy.yaml instead.

    subject/ci cd type/bug subject/documentation 
    opened by Stef-Gijsberts 2
  • Implement basic turn system

    Implement basic turn system

    When three players are connected, a game should start. A random permutation of players should be generated.

    Then the first player gets the turn. When the first player ends the turn, the second player gets the turn. And so forth.

    When a player disconnects, the game ends.

    subject/mvp 
    opened by Stef-Gijsberts 1
  • Add Github Action for backend test coverage

    Add Github Action for backend test coverage

    Depends on #5.

    We will need a program to check the coverage.

    Options:

    • grcov (by Mozilla, kinda big, is not only for Rust, crossplatform)
    • tarpaulin (looks like it's easy to use, only linux)
    • cargo-llvm-cov (simple installation, simple usage (just run cargo llvm-cov), only line coverage, crossplatform)
    opened by Stef-Gijsberts 1
  • Define and document `HSN`: hexil state notation

    Define and document `HSN`: hexil state notation

    The following information should be encapsulated in HSN:

    • The map / static part of the board:

      • Which tile kinds where
      • Which resource numbers where
      • Which harbors where
    • The dynamic part of the board:

      • The location of the robber
      • Which villages/cities are placed where
      • Which roads are placed where
    • About the players (including the bank as player 0):

      • The resources that each player holds

      • The development cards each player holds (excluding any cards bought in the current turn)

      • The number of knights each player used

      • Which player has the largest army

      • Which player has the longest road

    • About the current turn:

      • The turn number
      • Whether or not the current player already rolled
      • Whether or not a development card was played
      • Whether or not the current player must steal now
      • Whether or not the current player must move the robber now
      • Which players still must discard half their cards now
      • Which development cards were bought this turn
      • Which items (roads, cities, villages) the player may place immediately (road building card)
      • Which items (roads, cities, villages) the player must place immediately (start of game, buying)
    type/enhancement subject/documentation 
    opened by Stef-Gijsberts 0
  • Change the current implementation to send HAN `E`

    Change the current implementation to send HAN `E`

    Send the HAN E on the end of the turn, instead of using a custom message for that. Ignore any other HAN messages for now.

    The client of the current player may send the action E to the backend. In that case, the action E will be broadcasted to all clients, and it's the next players turn.

    opened by Stef-Gijsberts 0
  • Use Laravel Mix

    Use Laravel Mix

    This pull request changes the asset bundler from Webpack to Laravel Mix. Laravel Mix is an abstraction on top op Webpack, making it easier to use. It still provides low level control over the resulting Webpack config through its API.

    opened by marijnvanwezel 0
  • Use 'process.env.NODE_ENV' instead of comparing the URI

    Use 'process.env.NODE_ENV' instead of comparing the URI

    According to the Webpack documentation (https://webpack.js.org/guides/production/):

    Technically, NODE_ENV is a system environment variable that Node.js exposes into running scripts. It is used by convention to determine dev-vs-prod behavior by server tools, build scripts, and client-side libraries.

    opened by marijnvanwezel 0
  • Change TypeScript target from ECMAScript 5 to ECMAScript 6

    Change TypeScript target from ECMAScript 5 to ECMAScript 6

    The current transpilation target set in front/tsconfig.json is ECMAScript 5. The benefit of using ECMAScript 5 is that compatibility with older browsers is better, however, for this we give up on performance and many modern features (such as the let and const keyword). Since we already use ECMAScript 6 as the module, all these features have to be transpiled into ES5 code, which can introduce several issues. For example, I was working on a custom element for the frontend, and eventhough the TypeScript compiled, the target JavaScript was not valid and gave errors when ran in a browser.

    If we look at the caniuse.com matrix for ECMAScript, we see it is supported by the following major browsers:

    • Chrome 51 or higher (2016)
    • Edge 15 or higher (2017)
    • Safari 10 or higher (2016)
    • Firefox 54 or higher (2017)
    • Opera 38 or higher (2016)
    • Some other minor/mobile browsers...

    The total support percentage is 98.34%. The notable exception is that ECMAScript 6 is not fully supported by Internet Explorer.

    type/enhancement 
    opened by marijnvanwezel 0
  • Use `npm ci` instead of `npm install`

    Use `npm ci` instead of `npm install`

    Use npm ci instead of npm install in the docker build (front/Dockerfile).

    https://docs.npmjs.com/cli/v8/commands/npm-ci:

    This command is similar to npm install, except it's meant to be used in automated environments such as test platforms, continuous integration, and deployment -- or any situation where you want to make sure you're doing a clean install of your dependencies.

    type/enhancement subject/build automation 
    opened by Stef-Gijsberts 1
  • Prepare for client-side routing

    Prepare for client-side routing

    In order to make Hexil a one-page webapp, we need to make a client-side router. In order to facilitate this, we need to make a few configuration changes in the server:

    • All routes need to be routed to index.html
    • With the exception of certain routes such as /static/*
    opened by marijnvanwezel 0
  • Create a minimal frontend

    Create a minimal frontend

    The frontend should at any time show:

    • which player you are
    • which player's turn it is right now

    If it's currently your turn, it must present you with the option to end that turn.

    type/enhancement subject/mvp 
    opened by Stef-Gijsberts 0
Owner
Hexil
⬢ hexil.org: The libre online alternative to Settlers of Catan
Hexil
Online-statistics is crate 🦀 for Blazingly fast, generic and serializable online statistics

Online statistics in Rust ?? for Blazingly fast, generic and serializable online statistics. Quickstart Let's compute th

Adil Zouitine 29 Dec 30, 2022
A random.org client library for Rust

random.org A https://random.org client library. The randomness comes from atmospheric noise, which for many purposes is better than the pseudo-random

Victor Polevoy 7 Mar 10, 2022
Search lyrics from tononkira.serasera.org.

Tononkira CLI A command line interface for tononkira.serasera.org. Installation Simply run: $ cargo install tononkira macOS/Linux $ brew install tsiry

Tsiry Sandratraina 10 Sep 1, 2022
Render cargo dependency tree in online

Cargo Tree Online Check out rendered page Render cargo dependency tree in online. Usage trunk serve Copy and paste the content of Cargo.lock file to

Kangwook Lee (이강욱) 2 Sep 23, 2021
Self-Hosted alternative to GitHub Gists

Gists Self-Hosted GitHub Gists Features Upload code snippets Syntax Highlighting Comments Versioning through Git Fork gists Gist privacy: public, unli

Aravinth Manivannan 52 Dec 22, 2022
Alternative StreamMap fork of tokio-stream

streammap-ext This is a fork of StreamMap from tokio-stream crate. The only difference between the implementations is that this version of StreamMap n

MetalBear 5 Aug 18, 2022
Alternative future adapters that provide cancel safety.

cancel-safe-futures Alternative futures adapters that are more cancel-safe. What is this crate? The futures library contains many adapters that make w

Oxide Computer Company 12 Jul 2, 2023
A digital audio workstation for all platforms that is libre, gratis, and awesome

?? Dawsome [WIP] A DAW build on React + Rust + WASM Available Scripts In the project directory, you can run: pnpm dev Tauri will open a new window wit

Noah Bennett 9 Dec 14, 2022
fast rust implementation of online nonnegative matrix factorization as laid out in the paper "detect and track latent factors with online nonnegative matrix factorization"

ONMF status: early work in progress. still figuring this out. code still somewhat messy. api still in flux. fast rust implementation of online nonnega

null 2 Apr 10, 2020
Online-statistics is crate 🦀 for Blazingly fast, generic and serializable online statistics

Online statistics in Rust ?? for Blazingly fast, generic and serializable online statistics. Quickstart Let's compute th

Adil Zouitine 29 Dec 30, 2022
Mirror of https://gitlab.redox-os.org/redox-os/redox

Redox is an operating system written in Rust, a language with focus on safety and high performance. Redox, following the microkernel design, aims to b

Redox OS 14.3k Jan 3, 2023
This project now lives on in a rewrite at https://gitlab.redox-os.org/redox-os/parallel

MIT/Rust Parallel: A Command-line CPU Load Balancer Written in Rust This is an attempt at recreating the functionality of GNU Parallel, a work-stealer

Michael Murphy 1.2k Nov 20, 2022
Mirror of https://gitlab.redox-os.org/redox-os/ion

Introduction Ion is a modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust, which greatly increases the ov

Redox OS 1.3k Jan 4, 2023
Mirror of https://gitlab.redox-os.org/redox-os/termion

Documentation Examples Changelog Tutorial Termion is a pure Rust, bindless library for low-level handling, manipulating and reading information about

Redox OS 1.9k Dec 31, 2022
MessagePack implementation for Rust / msgpack.org[Rust]

RMP - Rust MessagePack RMP is a pure Rust MessagePack implementation. This repository consists of three separate crates: the RMP core and two implemen

Evgeny Safronov 840 Dec 30, 2022
Mirror of https://gitlab.redox-os.org/redox-os/rusttype

RustType RustType is a pure Rust alternative to libraries like FreeType. The current capabilities of RustType: Reading OpenType formatted fonts and fo

Redox OS 567 Dec 5, 2022
A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (né Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

Zola 10.1k Jan 5, 2023
A fast static site generator in a single binary with everything built-in. https://www.getzola.org

zola (né Gutenberg) A fast static site generator in a single binary with everything built-in. Documentation is available on its site or in the docs/co

Zola 10.1k Jan 10, 2023
Msgpack serialization/deserialization library for Python, written in Rust using PyO3, and rust-msgpack. Reboot of orjson. msgpack.org[Python]

ormsgpack ormsgpack is a fast msgpack library for Python. It is a fork/reboot of orjson It serializes faster than msgpack-python and deserializes a bi

Aviram Hassan 139 Dec 30, 2022
Opening explorer for lichess.org

lila-openingexplorer3 Personal opening explorer under development. Usage EXPLORER_LOG=lila_openingexplorer3=debug cargo run --release -- --lila https:

Niklas Fiekas 5 Dec 29, 2021