GithubHelp home page GithubHelp logo

bbeck / puzzles-with-chat Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 3.03 MB

Web frontend and Twitch bot for solving puzzles collaboratively with chat

License: Apache License 2.0

CSS 2.14% JavaScript 10.92% HTML 0.03% Dockerfile 0.57% Makefile 0.16% Go 86.18%

puzzles-with-chat's Introduction

Puzzles With Chat

This is an application + twitch.tv bot that allows a group of users in a channel to collaboratively solve a puzzle together. Currently, the supported puzzle types are crosswords (including cryptic crosswords) and spelling bees.

How does it work? (For streamers)

The application consists of three main components the UI, API and bot. As a streamer you navigate a web browser to the website hosting the application and setup a video capture of the contents of that browser window for your stream to see. Using the web site you can select a puzzle for your stream to solve. One a puzzle has been selected a twitch.tv bot (PuzzlesWithChat) will join your stream's chatroom and listen for commands from yourself and viewers. As the application is instructed to fill in parts of the puzzle solution they will automatically appear in the UI of the application for your viewers to see. They can then build upon each other's answers in order to fully solve the puzzle.

Streamers using this application

While originally written for jeffxvx's stream, several other streamers have successfully used the app in the past. Below are links to their streams, please note they may not be regular users of the application.

If you'd like to use the application as part of your stream, please feel free to do so, it is free for everyone to use. If you need help or support in figuring out how to use it, have discovered a bug, have a feature request, or have discovered a novel way to use the application that you'd like to share then feel free to submit a GitHub issue in this repo or send a whisper to MistaeksWereMade on Twitch. Additionally feel free to reach out if you'd like your channel listed above.

Architecture

The architecture of the application is one that is composed of microservices. There is an API service that acts as the integration point for both the UI and bot services. There is also a redis data store that the API uses for storing all data that requires persistence.

The API generally provides RESTful URLs for selecting puzzles, updating settings or providing answers to parts of the active puzzle. The API also provides several event based URLs (powered by server sent events) where events about the state of the application are sent. There are SSE endpoints that indicate which puzzles are being solved as well as endpoints for monitoring the progress of a specific solve. These endpoints are used by both the UI and bot services.

Development environment

The requirements for a working development environment are minimal. Only Docker and Docker Compose are expected to be installed on the development machine. There is a docker-compose.yml file in the root of the repository as that defines each of the services and wires them together and runs them in development mode (a mode where changes to source files transparently recompile and restart the relevant application). There is also a Dockerfile in each service directory that describes how to build that particular service's container.

A Makefile is also provided that provides helpers for invoking Docker Compose. make help will show all supported commands as well as a description of what each does.

Once running the UI will be visible on http://puzzles-with-chat.localhost.

Contributions

Contributions are always welcome, however if you plan on making an architectural or other large or wide sweeping change, please reach out first before doing the work -- a GitHub issue is a great way to start that conversation. There is a specific vision for the direction of the project and not all changes align with that. Let's have a discussion before you commit your valuable time to make sure your proposal is something that can ultimately become part of the project.

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.