Coder Social home page Coder Social logo

mayk93 / channels-obstruction Goto Github PK

View Code? Open in Web Editor NEW

This project forked from codyparker/channels-obstruction

1.0 2.0 0.0 272 KB

A simple game of Obstruction created to explore Django + Django Channels + ReactJS

License: MIT License

Python 50.26% CSS 1.90% HTML 14.87% JavaScript 32.96%

channels-obstruction's Introduction

channels-obstruction

A simple game of Obstruction created to explore Django + Django Channels + ReactJS Blog Post and Tutorial at: http://www.codyparker.com/django-channels-with-react

Synopsis

I started this project to explore the Django Channels, which is an upcoming core app that adds asynchronous WebSocket support to the wonderful Django Framework. Channels makes it very easy to build "real-time" apps in pure Django and Python, providing a great way to develop applications that require features such as "real-time" collaboration or chat for example.

Obstruction is a 2-player pen and paper game which involves players taking turns claiming free spots on a grid. The spot they choose, and all surrounding spots are then claimed for that player and can no longer be claimed by another player. The play continues back-and-forth until there are no free spots to claim. The last player to successfully claim a spot, wins the game.

This project also uses React to handle the reactive, client-side components. I picked React because I like it, but it could be swapped out with Angular/Vue/Knockout/etc....

Features

  • Full game functionality:
    • Authentication - Signup / Login
    • Game Lobby with live updating list of available games
    • Ability to create a game that will show up in other users' availiable games list
    • Gameboard that enforces Obstruction rules and allows players to take turns and see the results in real-time
    • Game log that tracks all moves and reports them live as they occur
    • Players can chat in the game log
  • Lobby and Gameboard are made up of ReactJS components on the client-side
  • Examples of how to mix standard Django templating with ReactJS
  • Webpack integration to create separate bundles needed for different parts of the application
  • Django Rest Framework used to help serialize data needed by React as well as provides API endpoints for client-side data calls
  • Mixed use of DRF, standard Django context sent from the view, as well as communication through channels to demostrate multiple ways to interact with data and the Django backend

Requirements

Installation

  • Fork and clone this repository
  • Create a Python virtual environemnt
  • In that environment, run pip install -r requirements.txt inside your project
  • Install node modules with npm install
  • Create the local database with python manage.py migrate
  • Run webpack to build the components with npm run webpack
  • Run Django development server on port 8080 - python manage.py runserver 8080

License

MIT License

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.