tkshill / Quarto

A working example of the Quarto board game using Elm and Netlify. An exploration of game development, OSS, and functional programming.
https://elmquarto.netlify.app/
MIT License
15 stars 16 forks source link
board-game elm elm-lang example frontend functional-programming game game-development hacktoberfest hacktoberfest2021 open-source quarto

banner

Help Wanted MIT License Netlify Status Contributors Open Issues Virtual Coffee Hacktoberfest

Welcome to Quarto!

What is Quarto?

Hey, thanks for stopping by. This is an open-source, digital representation of the Quarto board game written in the Elm programming language.

Why a random board game?

This project was mainly created to provide an example of a fully functional, professional, accessible web app created entirely in Elm. It is also a space where people interested with working with Elm and/or are interested in open-source have a safe environment to practise with the help and guidance of the project maintainers. We happily accept anyone and everyone who wants to contribute, provided they abide by the code of content (link in the Table of Contents below).

Check out the live Demo!

Table of Contents

Roadmap

The plan is to create both a single player and multiplayer representation of the game. The front elm will be primarily designed using the Elm programming language. All the code will be freely available for use and reuse where possible.

This will likely be a long running project, with many software themes explored. Some of the concepts we hope to cover are:

Phase 1 - October 1st, 2020 to October 31st, 2020 - (Complete)

Phase 2 - October 1st, 2021 - October 31st, 2021 (Active)

Phase 3 - November 1st, 2021 - December 31st, 2021 (Upcoming)

Phase 4 - April 1st, 2021 - July 31st (Upcoming)

Run and Install

  1. If you don't have it already, download and install NODE.js
  2. If you don't have it already, install the appropriate git for your OS.
  3. Download and install Elm
  4. Create a local copy of this repo on your machine. You do not have to fork.
  5. In a shell terminal/command line, navigate to the Quarto folder in the repository
  6. Run the live development server with:
    npm start
  7. Navigate to the localhost port indicated by the server. (Default should be localhost:8000)
  8. While not required, it is HIGHLY recommended that you install the Elm tooling plugin for your Code Editor/Integrated Develoment Environment if you wish to write Elm locally on your own machine. If you're using VSCode, you can find the Elm tooling plugin in the extensions (you'll want the blue Elm tooling one, not the Elm one, which has been deprecated).

A more in-depth guide can be found in the CONTRIBUTING

Tests

Coming Soon!

Contributing

The incentive to start this project was out of a desire to learn more about good front-end desire and accessiblity, but also as part of the 2020 [Hacktoberfest]() initiative. This is an open source project that accepts anyone and everyone who is willing to help out. If you are unsure how to do your first contributions, please check out the contributing file that lays out exactly how to get involved in open source.

Code of Conduct

This is an inclusive space for education, learning and healthy communication. We ask that before you engage with the repository, please check out the Code of Conduct. This repo will serve as a learning experience not only in functional programming and UI design, but also in good community interactions. As much as possible, all contributors should feel safe, respected, and appreciated for their efforts.

What is Quarto

Quarto Board and Pieces

CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=114552

From Wikipedia, the free encyclopedia -

Quarto is a board game for two players invented by Swiss mathematician Blaise Müller. It is published and copyrighted by Gigamic.

The game is played on a 4×4 board. There are 16 unique pieces to play with, each of which is either:

tall or short; red or blue (or a different pair of colors, e.g. light- or dark-stained wood); square or circular; and hollow-top or solid-top. Players take turns choosing a piece which the other player must then place on the board. A player wins by placing a piece on the board which forms a horizontal, vertical, or diagonal row of four pieces, all of which have a common attribute (all short, all circular, etc.).

You can think of it as tic tac toe for adults. It's honestly a brilliant game that strikes just the right balance of strategy but also fun and ease of pickup.

Affiliations

This app has no affiliation with the official Quarto game, and will never ever become any sort've profit-seeking venture based on the Quarto IP. This is strictly for educational and entertainment purposes. If you wish to purchase the official game (we highly recommend it), you can do so here at the official Gigamic website.

Hacktoberfest!

This project was part of the 2020 Hacktoberfest initiative, designed to get more developers, especially newbies, involved in open source projects and remote contributions.

A few key points on what this means:

Tech Stack (current)

F.A.Q.

Why not a library/package like other OSS projects

This repository seeks to address the lack of beginner resources on project management and tooling in the programming community. There are many language tutorials and articles highlighting coding styles and techniques, but a dearth of full fledged applications that are parsable for new and junior developers, and fewer still that are geared toward learning how to build end to end applications. Every part of the development of this project will be kept public and avaialable and everyone and anyone are encouraged to be a part of its development. For the better part of a year ideally, this will exist as a living example of a elm based project, and follow as closely as possible modern, professional design and deployment techniques for web applications.

Why Elm?

We like Elm. A lot. We're kind of obsessed.

But really, we genuinely like functional programming, and we love Elm, which we feel to be an accessible way to learn and develop robust software with functional programming. The maintainers are dedicated to making Elm accessible for anyone who wants to learn (a value echoed by the greater elm programming community at large) and we are will to pair with anyone who wishes to use this codebase as an introduction to use the language on a real project.

How flexible are the project goals?

We really want to open up user input as to the direction of certain aspects of project design and functionality, but some parts of the scope are unchanging. At this point, we can say with a fair amount of certainty:

We feel like this is the bare minimum that allows the maintainers to realize the project goals and also provides some stability for the people who wish to contribute. However, this still leaves a lot of things we are flexible on (and actively encourage contributions in)

If any of that sounds interesting, don't hesistate to take a look at one of our issues and dive in.

For more details on Project Goals, please check out the Quarto Github Project where tasks, thoughts, bugs, and features are tracked.

For more long form, in depth content, check out the project wiki where you can find blog style posts and articles about technology and project management.

Contact

The main way of submitting questions, comments, concerns, or kudos about this project is through the submission of issues. Alternatively, you can reach the author at @tkshillinz on Twitter or tkshillinz@icloud.com

Authors

This library was authored by Kirk Shillingford, who is a big nerd.

Contributors

Core Contributors

Our other core contributor is Dominic Duffin.

General Contributors

Acknowledgments

A huge thank you to the Virtual Coffee community who have encouraged, supported, and contributed to this project.

License

This repository uses the MIT license