kissj is scouts registration system for national and international Scout Jamborees with simple idea - it has to be stupidly simple!
- 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!
- User Event Management system
- System for food distribution, health information or safety incidents repository
- accountancy software
- bloatware
- main page: https://kissj.net/
- sentry: https://skautdevs.sentry.io/discover/homepage/
- Installed
docker
- Installed
docker-compose
- Installed
make
- Clone this repository:
git clone https://github.com/SkautDevs/kissj.git
- Copy
deploy/dev/compose.env.example
todeploy/dev/compose.env
and fill in the values - Run the make target dev-up, so you don't have to do it manually:
make dev-up
- add line
127.0.0.1 kissj.local
to your/etc/hosts
file(optional) - Open
http://kissj.local/v2/event/test-event-slug/
in your browser and you are good to go! - To stop the containers and remove them, run
make dev-down
(data should be preserved)
- Slim framework 4 - handles routing and middleware
- LeanMapper as ORM
- Phinx for database migrations
- PostgreSQL as database
- php-di for dependency injection
- PHPUnit for unit and functional tests
- PHPStan for static typechecking
- & more in
composer.json
Backlog is in project GitHub issues, roadmap is in project GitHub milestones
- if TLS is not working correctly (for gmail especially), try set
'SMTPAuth' => false
and/or'disable_tls' => true
- use Mailhog at
http://localhost:8025/
- 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
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);
};
- 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