Code Monkey home page Code Monkey logo

bingo-box's Introduction

๐Ÿ‘ต๐Ÿฟ ๐Ÿ‘ด๐Ÿป Bingo box

Bingo box is an implementation of a bingo system, where the organizers can create and host a bingo game by printing id-assigned bingo cards and at the same time easily check if a given bingo card matches the wining patterns.

Note: This system is only suited for 90-ball bingo, which is considered the "normal" kind of bingo in Denmark where i live ๐Ÿ‡ฉ๐Ÿ‡ฐ

Motivation ๐Ÿƒ๐Ÿƒ

This is a project that I'm doing for fun, and at the same time it is a way for me to express my current level of Go understanding. But that is not the whole story. In my late highschool years, I was in charge for arranging and organizing a annual christmas bingo. I found it really frustrating to host the event, because of the immense time used on checking a potential winners bingo card pattern (one line, two lines and at last, the full plate). It was hard to hear every number shouted across the room, and maybe some number was not quite right, so then we would have to recite the whole pattern until we could confirm whether or not the player had won. Back then, in 2018, I built a bingo system to solve the problem, which is still in use to this day. But I have now desired to retire my old code and to develop a new system as the old codebase suffered from some hardcoding issues. This time with a backend built in Go instead of Node.js. The frontend will also get an overhaul, but will still be built in React as a single-page application.

Project structure ๐Ÿ› 

Frontend

The frontend is made in React, trying to adhere to the current best practices. The folder structure is made as flat as possible, to be as understandable as possible.

Lives inside /ui folder.

Backend

The project is structured with a domain-driven approach. All the data structures related to the domain will be in the root bingo package. All interactions with the domain will be made through interfaces and no dependencies will be made to to other places than the standard library from the root packge. While implementation details will be organized in packages according to their context. E.g http package is for everything related to the REST API.

Project Layout is inspired by Ben B. Johnsons way of structuring a Golang application. Read more about it here or look at the example source code application here

Lives inside /server folder.

Running the app ๐Ÿš€

As a natural first step to running this project, you have to clone this repository:

git clone https://github.com/nohns/bingo-box.git

For running the project, try one of the following methods

Docker

For running all the components of this app the easiest way would be to use the Docker compose. Run the following command in the terminal of your choice:

docker-compose up

This will launch the both the server, database and the UI. Please go to localhost:4000 to view the user interface

Kubernetes (Helm chart)

Run following helm package

bingo-box's People

Contributors

nohns avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.