GithubHelp home page GithubHelp logo

skautdevs / kissj Goto Github PK

View Code? Open in Web Editor NEW
9.0 4.0 13.0 11.74 MB

Keep it Simple Stupid Jamboree registration system

Home Page: https://kissj.net

License: GNU General Public License v3.0

PHP 71.56% CSS 2.03% Dockerfile 0.32% Hack 0.20% Shell 0.03% Twig 23.73% Makefile 0.06% Go 2.06%
php php-slim-framework docker helm

kissj's Introduction

kissj - Keep It Simple Stupid for Jamborees!

kissj is scouts registration system for national and international Scout Jamborees with simple idea - it has to be stupidly simple!

Core features:

  • get information from participants as easy as possible
  • administrator one-click approving with automatic payment generation
  • one-click exporting health, logistic and full information for later usage
  • currently supporting roles:
    • IST (International Service Team)
    • Patrol - Patrol Leader + number of Participants, registered all by Patrol Leader
    • Troops - Troop Leader + number of Troop Participants, all registering separately and joingin into one Troop after
    • guests
  • full administration for event registration team - access to participants data with edit possibility
  • no use of unsafe or forgettable passwords in process of registration - you need just an email or Skautis account!

KISSJ is not:

  • User Event Management system
  • System for food distribution, health information or safety incidents repository
  • accountancy software
  • bloatware

Useful links

Local development

Prerequisites

  • Installed docker
  • Installed docker-compose
  • Installed make

Setup

  1. Clone this repository: git clone https://github.com/SkautDevs/kissj.git
  2. Setup environment (dotenv) cp .env.example .env
  3. Run the make target, so you don't have to do install manually: make local-dev-postgresql
  4. add line 127.0.0.1 kissj.local to your /etc/hosts file
  5. Open http://kissj.local/v2/event/test-event-slug/ in your browser and you are good to go!

Devstack

Backlog & roadmap

Backlog is in project GitHub issues, roadmap is in project GitHub milestones

Possible problems & fixes

STMP connection error

  • if TLS is not working correctly (for gmail especially), try set 'SMTPAuth' => false and/or 'disable_tls' => true

Local mail service

  • use Mailhog at http://localhost:8025/

HOWTOs

How to change docker image

  • for PHP edit file deploy/container_images/php/Containerfile-ubi
  • run build docker build . -f deploy/container_images/php/Containerfile-ubi -t quay.io/kissj/php-ubi
  • pull new images from server docker-compose pull

External deals usage

Kissj can be used to collect data from external deals, momentarily from Google Forms. From paid user you can click to "Fill up some form" and it will redirect you to Google Form with your TIE code used as user handle. After filling up the form, the data is sent back to Kissj. Data is sent by script, which is triggered by Google Forms on submit event.

Example of the script is below - dont forget to change POST_URL and DEAL_SLUG to correct values.

//var POST_URL = "https://yess.requestcatcher.com/";
var POST_URL = "https://staging.kissj.net/v3/deal/";
var DEAL_SLUG = "sfh";
var MAX_POINTS = 2;
var AUTH_KEY = 'kissj-event-auth-key';

function onSubmit(e) {
  var form = FormApp.getActiveForm();
  var allResponses = form.getResponses();
  var latestResponse = allResponses[allResponses.length - 1];
  var response = latestResponse.getItemResponses();
  var payload = {};

  for (var i = 0; i < response.length; i++) {
    var question = response[i].getItem().getTitle();
    var answer = response[i].getResponse();
    payload[question] = answer;
  }
  payload['slug'] = DEAL_SLUG;

  var grade = e?.response.getGradableItemResponses().reduce((p, e) => p += e.getScore(), 0);

  if (grade < MAX_POINTS) {
    payload['enoughPoints'] = false;
  } else {
    payload['enoughPoints'] = true;
  }

  var options = {
    "method": "post",
    "headers": {
      "Authorization": "Bearer " + AUTH_KEY,
    },
    "contentType": "application/json",
    "payload": JSON.stringify(payload)
  };

  UrlFetchApp.fetch(POST_URL, options);
};

How to use the script

  • Go to your chosen form and from three-dot menu click "<> Script editor"
  • Paste the script into the editor (overwrite pre-filled code)
  • In the same window, choose newly created test and click "Run" - if not working, check permissions on popup window
  • If it works (kissj should return http 4xx code), you are on the good way!
  • Next, click "Triggers" from the left menu
  • Click "Create a new trigger"
  • Make sure that on "Select event source" is Form, select on "Select event type" item "On form submit" and click "Save"
  • Try to fill up the form and check if the data is sent to kissj in "Executions" from the left menu
  • if not working, check permissions by clicking "Run" button again and allow needed permissions

kissj's People

Contributors

addshore avatar antalafilip avatar ctenar avatar dependabot[bot] avatar ieldresti avatar kaplan-michael avatar misakstvanu avatar paaton avatar peci1 avatar racinmat avatar tomtomklima avatar vojtastanek avatar vojtechmares avatar vprouza avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

kissj's Issues

Just small documentation improvement

Hi Guys,
I used your system, it is great. I would like to recommend to add this command in installation instructions sqlite3 db.sqlite < sql/init.sql You will made it simpler for most users :-)

add summary

content of post on side, so you may click and get there

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.