kissj is scouts registration system for national and international Scout Jamborees with simple idea - it has to be stupidly simple!
docker
docker-compose
make
git clone https://github.com/SkautDevs/kissj.git
deploy/dev/compose.env.example
to deploy/dev/compose.env
and fill in the valuesmake dev-up
127.0.0.1 kissj.local
to your /etc/hosts
file(optional)http://kissj.local/v2/event/test-event-slug/
in your browser and you are good to go!make dev-down
(data should be preserved)composer.json
Backlog is in project GitHub issues, roadmap is in project GitHub milestones
'SMTPAuth' => false
and/or 'disable_tls' => true
http://localhost:8025/
deploy/container_images/php/Containerfile-ubi
docker build . -f deploy/container_images/php/Containerfile-ubi -t quay.io/kissj/php-ubi
docker-compose pull
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);
};