Coder Social home page Coder Social logo

68040 / kyela Goto Github PK

View Code? Open in Web Editor NEW

This project forked from abienvenu/kyela

0.0 1.0 0.0 893 KB

Participation polls for group events

Home Page: http://kyela.net

License: GNU Affero General Public License v3.0

PHP 76.71% CSS 1.67% JavaScript 0.54% HTML 20.77% Makefile 0.32%

kyela's Introduction

Kyela

Scrutinizer Code Quality Build Status Code Climate Latest Stable Version License SensioLabsInsight

Participation polls for group events

Features

  • Create one or many polls
  • Each poll has a randomized URL; only people who get the link can have access
  • Suggest one or many dates
  • Customize the choices (text and color), add more choices
  • User comments
  • Simple usage, no authentication
  • Mobile friendly
  • No ad, no fee, no spying, just OpenSource

Basic Usage

  • Point your browser to a website hosting the Kyélà application, like http://kyela.net
  • Create a new poll
  • Bookmark the URL of the poll
  • Add participants and events
  • Share the URL of the poll with your friends
  • Enjoy!

Server Installation

Maybe you want your own private Kyélà server firewalled somewhere to protect your super-secret meetings. Or Maybe you want to run a customized, cooler version, for your private team of even for the public. Anyway, your are free to do it in the frame of the AGPL license, and you have two options: Docker (the easy one), or native (for more experienced admins).

Docker

The simplest way to get your very own Kyélà instance is to use the Docker image.

Simple container

This is the very simplest way to have Kyélà running, suitable for test or demo purpose:

  • Install docker
  • Download and run the application :
$ docker run -d --name kyela -p 8042:80 abienvenu/kyela

After a reboot, you may want to start the application again:

$ docker start kyela

To update the code to the latest Symfony and Kyélà version, run:

$ docker commit kyela # in case the update goes wrong
$ docker exec kyela composer update

NOTE: In this case, all the data lives inside the container, including polls created by your users. Good point: if you move the container somewhere else, the data goes with it. However, if you remove the container, the data is DELETED.

Container with a named volume

Using a named volume is more suitable for production use. You should also set the CONTACT_EMAIL environment variable, so your instance users can contact you through the contact form.

$ docker volume create --name kyela-data
$ docker run -d --name kyela -p 8042:80 -v kyela-data:/var/www/kyela/data -e [email protected] --restart always abienvenu/kyela

The named volume can be easily backed up (cf. https://docs.docker.com/engine/tutorials/dockervolumes/#/backup-restore-or-migrate-data-volumes). This technique enables you to pull newer Docker images of the kyela application, remove the old container, and instanciate a new one using the same data volume:

$ docker pull abienvenu/kyela
$ docker stop kyela
$ docker rm kyela
$ docker run -d --name kyela -p 8042:80 -v kyela-data:/var/www/kyela/data -e [email protected] --restart always abienvenu/kyela

Native

You can install Kyélà like in the good old days. This is quiet a longer way though...

  • Install Symfony 2.8
  • Install Composer
  • In the folder where you installed Symfony, edit composer.json and add in the "config" section:
        "component-dir": "web/components"
  • Download and install the Kyélà bundle :
$ composer require "abienvenu/kyela dev-master"
  • Add the bundle and its depedencies in your AppKernel.php :
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Symfony\Bundle\AsseticBundle\AsseticBundle(),
        new Abienvenu\KyelaBundle\KyelaBundle(),
    );
}
  • Include the route from your app/config/routing.yml :
kyela:
    resource: "@KyelaBundle/Resources/config/routing.yml"
    prefix: /kyela
  • Configure your database parameters in app/config/parameters.yml
  • Include the config from your app/config/config.yml :
    imports:
	- { resource: "@KyelaBundle/Resources/config/config.yml" }
  • Add Kyela to the bundles handled by assetic in app/config/config.yml :
assetic:
    bundles:        [ 'KyelaBundle' ]
    filters:
        cssrewrite: ~
  • Dump the assets :
$ app/console assetic:dump

Loading examples

Fixtures are available to automatically load examples (concert and picnic).

  • Install DoctrineFixturesBundle :
$ composer require "doctrine/doctrine-fixtures-bundle ^2.2"
  • Register the bundle :
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
    );
}
  • Load the fixtures :
$ php app/console doctrine:schema:create
$ php app/console doctrine:fixtures:load --append

Customisation

To edit or extend the FAQ or About page, you just have to add entries in Resources/translations/faq.en.yml (or about.en.yml).

For further customisation, you have to edit the templates or the code. Because of the licence (GNU Affero GPL-3.0), you must publish the modified code as soon as your project is publicly online. If you made cool features, feel free to send pull request to the project: https://github.com/abienvenu/Kyela

CHANGELOG

  • 1.6.3 :
    • Added German translation (thanks to NoodleBB)
  • 1.6.2 :
    • Bootstrap and Jquery are no longer included in the source code, but fetched via composer
  • 1.6.1 :
    • The email contact is now configurable via an environment variable
    • Fix for empty event names
  • 1.6.0 :
    • Participations are now set using AJAX, without reloading the whole poll page
  • 1.5.10 :
    • Fixed the Head lines and Bottom lines that would be reset to blank as soon as you edit a poll
    • Unit tests are now in Dockerfile, so we should not have any more broken Docker images
    • Removed deprecated code
  • 1.5.8 :
    • Embedded Dockerfile with the application source code
  • v1.5.6 :
    • Bugfix for date comparison with Sqlite
  • v1.5.5 :
    • Added limit for "Archives" to avoid memory outages
  • v1.5.4 :
    • Better documentation
    • Docker compatibility
  • v1.5.0 :
    • Code refactoring: replaced traits by controller inheritance
  • v1.4.2 :
    • Fix : do not display "add comment" if there is no participant
  • v1.4.1 :
    • Added protection against dumb crawlers
    • Explained cookie policy
  • v1.4 :
    • Content enhancements on Homepage/Faq/About
    • New example: holidays
    • Ability to add dates without specifying name nor time
  • v1.3 :
    • Added placeholders
    • Date and time are now optional
  • v1.2 :
    • Added ability to add an icon for each choice
    • Removed the idea of a separate file about-me.en.yml and faq-me.en.yml - just edit the files
  • v1.1 : Many small improvements
    • Ability to add a participant directly from poll view
    • Hide Choice priority, this is purely internal data
    • Better ergonomy for choice reordering
    • Fixed the bug when creating a Poll/Comment/Participant/Event with only spaces
    • Fixed choice ordering in poll view
  • v1.0 : Added ability to add comments
  • v0.9 : Added ability to lock a poll
  • v0.8 : Added ability to add custom HTML above and below the poll
  • v0.7.1 : Critical fix for creating choices
  • v0.7 : Added access to past events
  • v0.6 : Added fixtures and images for examples
  • v0.5 : Added ability to reorder choices
  • v0.4 : Added ability to switch language English/French
  • v0.3.2 : Added time widget
  • v0.3 : Added deletion confirmation, autofocus, fixed poll deletion
  • v0.2 : Added contact page, default URL and choices for new polls
  • v0.1 : First (mostly) working release

TODO

  • Timezones ?
  • Sort participants alphabetically ?
  • Make a knpbundles readme
  • Code improvements (see Scrutinizer)

BUGS

FUTURE (MAY BE) FEATURES

  • Descriptive placeholders
  • Put Glyphicons on every button, including standard "Save", "Cancel"...
  • For a Poll, customize "Total" color cell at certain thresholds
  • Notification subscriptions
  • Syndication
  • Easy integration from remote websites
  • Aggregate/Anonymous mode, for events with lots of participants: the grid only displays total numbers, you can add yourself, then you get a personal link to modify/delete your participation
  • Integration with personal agendas (Google, Yahoo...)
  • Make a logo, a decent favicon
  • Integrate to Travis-CI

SensioLabsInsight knpbundles.com

kyela's People

Contributors

abienvenu avatar scrutinizer-auto-fixer avatar

Watchers

68k 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.