GithubHelp home page GithubHelp logo

seyi / apollo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maliesa96/apollo

0.0 1.0 0.0 3.62 MB

Real-time polling application built using Django Channels and Redis.

Python 91.63% CSS 0.97% JavaScript 2.18% HTML 4.98% Shell 0.23%

apollo's Introduction

Apollo

Apollo admin view

Apollo is an open source, real-time polling application akin to platforms such as Poll Everywhere and Survey Monkey. It uses Django Channels to add websocket support to Django and Redis as the websocket channel layer. The end goal is to have a reliable, easy to setup web application that can be installed on a Raspberry Pi and will serve as a viable alternative to the paid services mentioned, particularly in academic and corporate environments.

At this time Apollo's functionality is limited to:

  • Starting either a multiple choice, binary (yes/no), or numeric poll
  • viewing real-time responses in a bar graph/pie chart
  • exporting and downloading the results in CSV format

Usage

If you want devices on the network to be able to access Apollo, you'll have to make sure your server's LAN IP address is added to ALLOWED_HOSTS for Django to allow connections to it. In your settings.py file:

ALLOWED_HOSTS = [
  "192.168.1.10", //Replace with your IP address
  "127.0.0.1",
  "0.0.0.0"
]

Make sure you have redis installed via docker, then run:

docker run -p 6379:6379 -d redis:2.8

This starts the redis server. We then use daphne to listen for both HTTP and Websocket requests on 0.0.0.0:8001.

daphne -p 8001 -b 0.0.0.0 apollo.asgi:application

Thats all there is to it. You can now create a poll by navigating to your server's IP address. In the above example, entering http://192.168.1.10:8001 in the browser would take you to Apollo's home page. From here, you can enter your poll's title and options, and Apollo will automatically generate a room ID, shown in the top right corner of the admin page. Users can join this room and vote by entering in the URL manually (ex. http://192.168.1.10:8001/xyz123) or by going the home page and typing in the room ID with a hashtag (ex. #xyz123) in the input field.

Note that the admin page can only be accessed from the same browser session for now. In the future, the admin page will be linked to the poll creator's account.

TODO:

  • Add login functionality
  • implement the private and anonymous poll options
  • implement the poll history page
  • implement the recent polls column

apollo's People

Contributors

maliesa96 avatar

Watchers

 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.