All Projects → HackAssistant → registration

HackAssistant / registration

Licence: MIT license
✏️ Hackathon registration server

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to registration

Chronicel
Our super sweet hacker management system, built for HackTCNJ 2017+ | Used by [email protected] 2018!
Stars: ✭ 18 (-70%)
Mutual labels:  hackathon, registration
Quill
📝 Registration, for hackathons!
Stars: ✭ 390 (+550%)
Mutual labels:  hackathon, registration
hackerAPI
🐓 API for registration, live-site
Stars: ✭ 20 (-66.67%)
Mutual labels:  hackathon, registration
Registration
Powerful and extensible registration system for hackathons and other large events
Stars: ✭ 29 (-51.67%)
Mutual labels:  hackathon, registration
Python Scripts
Collection of Various Python Script's.💻
Stars: ✭ 195 (+225%)
Mutual labels:  hackathon
Adonisjs Hackathon Starter
A boilerplate for AdonisJS web framework
Stars: ✭ 142 (+136.67%)
Mutual labels:  hackathon
Tunnel
Use Ngrok In Termux With Advanced Options
Stars: ✭ 133 (+121.67%)
Mutual labels:  hackathon
Laravel Hackathon Starter
💻 A hackathon/MVP boilerplate for laravel web applications. Start your hackathons without hassle.
Stars: ✭ 1,589 (+2548.33%)
Mutual labels:  hackathon
Naver-AI-Hackathon-Speech
2019 Clova AI Hackathon : Speech - Rank 12 / Team Kai.Lib
Stars: ✭ 26 (-56.67%)
Mutual labels:  hackathon
Hackathon Starter Kit
A Node-Typescript/Express Boilerplate with Authentication(Local, Github, Facebook, Twitter, Google, Dropbox, LinkedIn, Discord, Slack), Authorization, and CRUD functionality + PWA Support!
Stars: ✭ 242 (+303.33%)
Mutual labels:  hackathon
A To Z Resources For Students
✅ Curated list of resources for college students
Stars: ✭ 13,155 (+21825%)
Mutual labels:  hackathon
Sukermariobros
SukerMarioBros. — Swift + SpriteKit Super Mario Brosers "port"
Stars: ✭ 143 (+138.33%)
Mutual labels:  hackathon
Vuejs Rails Starterkit
Vue.js + Rails Starting Kit GitHub Template to develop Hybrid Mobile Application: https://vuejs-rails-starterkit.herokuapp.com
Stars: ✭ 205 (+241.67%)
Mutual labels:  hackathon
Wifi Hacking
Cyber Security Tool For Hacking Wireless Connections Using Built-In Kali Tools. Supports All Securities (WEP, WPS, WPA, WPA2/TKIP/IES)
Stars: ✭ 138 (+130%)
Mutual labels:  hackathon
maks
Motion Averaging
Stars: ✭ 52 (-13.33%)
Mutual labels:  registration
Flutter Handbook
A go-to handbook with a curated set of resources to help the participants of any Flutter Hackathon..
Stars: ✭ 127 (+111.67%)
Mutual labels:  hackathon
Ai Hackathon 2018
"한계를 넘어 상상에 도전하자!" 네이버 AI 해커톤 2018 - 대회종료
Stars: ✭ 160 (+166.67%)
Mutual labels:  hackathon
Efi Asrock Z390 Phantom Gaming Itx
Mini ITX 4k 视频剪辑黑苹果 macOS Catalina 10.15 Clover EFI
Stars: ✭ 244 (+306.67%)
Mutual labels:  hackathon
Sign Language Interpreter Using Deep Learning
A sign language interpreter using live video feed from the camera.
Stars: ✭ 157 (+161.67%)
Mutual labels:  hackathon
M Wiz
Install Metasploit And Repair Metasploit In Termux With Easy Steps
Stars: ✭ 148 (+146.67%)
Mutual labels:  hackathon

HackAssistant


Maintainability CircleCI

📝 Hackathon registration server. Originally HackUPC/backend. With collaboration from HackCU. Medium article. User Guide

Features

  • Email sign up ✉️
  • Travel reimbursement management 💰
  • Hackathon registration form 📝
  • Check-in interface with QR scanner 📱
  • Review applications interface for organizers (includes vote) ⚖️
  • Email verification 📨
  • Forgot password 🤔
  • Automatic progress save on draft applications ⚙️
  • Internal user role management: Hacker, Organizer, Volunteer, Director and Admin ☕️
  • Automatic control of confirmation, expiration and cancellation flows 🔄
  • Django Admin dashboard to manually edit applications, reimbursement and users 👓
  • Flexible email backend (SendGrid is the default and recommended supported backend) 📮
  • (Optional) Separate applications from dubious hackers to manually contact them 🧐
  • (Optional) Automated slack invites on confirm #️⃣
  • (Optional) MyMLH sign up 📥

Demo: http://registration.gerard.space (updated from master automatically. Running on Heroku free dyno)

Setup

Needs: Python 3.X, virtualenv

  • git clone https://github.com/hackassistant/registration && cd registration
  • virtualenv env --python=python3
  • source ./env/bin/activate
  • pip install -r requirements.txt
  • (Optional) If using Postgres, set up the necessary environment variables for its usage before this step
  • python manage.py migrate
  • python manage.py createsuperuser (creates super user to manage all the app)

Dummy data

Coming soon

Available enviroment variables

  • SG_KEY: SendGrid API Key. Mandatory if you want to use SendGrid as your email backend. You can manage them here. Note that if you don't add it the system will write all emails in the filesystem for preview. You can replace the email backend easily. See more here.
  • PROD_MODE(optional): Disables Django debug mode.
  • SECRET(optional): Sets web application secret. You can generate a random secret with python running: os.urandom(24)
  • DATABASE_URL(optional): URL to connect to the database. If not sets, defaults to django default SQLite database. See schema for different databases here.
  • DATABASE_SECURE(optional): Whether or not to use SSL to connect to the database. Defaults to true.
  • DOMAIN(optional): Domain where app will be running. Default: localhost:8000
  • SL_TOKEN(optional): Slack token to invite hackers automatically on confirmation. You can obtain it here
  • SL_TEAM(optional): Slack team name (xxx on xxx.slack.com)
  • DROPBOX_OAUTH2_TOKEN(optional): Enables Dropbox as file upload server instead of local computer. (See "Set up Dropbox storage for uploaded files" below)
  • MLH_CLIENT_SECRET(optional): Enables MyMLH as a sign up option. Format is client_id@client_secret (See "Set up MyMLH" below)

Server

Local environment

  • Set up (see above)
  • python manage.py runserver
  • Sit back, relax and enjoy. That's it!

Heroku deploy

You can deploy this project into heroku for free. You will need to verify your account to use the scheduler for automatic application expirations emails. See "Use in your hackathon" for more details on using in your hackathon.

Deploy

Production environment

Inspired on this tutorial to understand and set it up as in our server.

  • Set up (see above)
  • Create server.sh from template: cp server.sh.template server.sh
  • chmod +x server.sh
  • Edit variables to match your environment and add extra if required (see environment variables available above)
  • Create restart.sh from template: cp restart.sh.template restart.sh
  • chmod +x restart.sh
  • Edit variables to match your environment and add extra if required (see environment variables available above)
  • Run restart.sh. This will update the database, dependecies and static files.
  • Set up Systemd (read next section)

Set up gunicorn service in Systemd

Needs: Systemd.

  • Edit this file /etc/systemd/system/backend.service
  • Add this content
[Unit]
Description=backend daemon
After=network.target

[Service]
User=user
Group=www-data
WorkingDirectory=/home/user/project_folder
ExecStart=/home/user/project_folder/server.sh >>/home/user/project_folder/out.log 2>>/home/user/project_folder/error.log

[Install]
WantedBy=multi-user.target

  • Replace user for your linux user.
  • Replace project_folder by the name of the folder where the project is located
  • Create and enable service: sudo systemctl start backend && sudo systemctl enable backend

Set up Postgres

Needs: PostgreSQL installed

  • Enter PSQL console: sudo -u postgres psql
  • Create database: CREATE DATABASE backend;
  • Create user for database: CREATE USER backenduser WITH PASSWORD 'password'; (make sure to include a strong password)
  • Prepare user for Django
ALTER ROLE backenduser SET client_encoding TO 'utf8';
ALTER ROLE backenduser SET default_transaction_isolation TO 'read committed';
ALTER ROLE backenduser SET timezone TO 'UTC';
  • Grant all priviledges to your user for the created database: GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
  • Exit PSQL console: \q

Other SQL engines may be used, we recommend PostgreSQL for it's robustness. To use other please check this documentation for more information on SQL engines in Django.

Automatic Dropbox backup

Hackers data is really important. To ensure that you don't lose any data we encourage you to set up automatic backups. One option that is free and reliable is using the PostgresSQLDropboxBackup script.

Find the script and usage instructions here

Set up Dropbox storage for uploaded files

This will need to be used for Heroku or some Docker deployments. File uploads sometimes don't work properly on containerized systems.

  1. Create a new Dropbox app
  2. Generate Access token here
  3. Set token as environment variable DROPBOX_OAUTH2_TOKEN

Set up MyMLH

MyMLH is a centralized login system used by MLH. It makes it easier for hackers to sign up for more events without re-entering their data every time around.

This integration allows hackers to have part of their application completed using their information from MLH.

As of the moment, MyMLH can only be used to sign up. This decision is due to the fact that MyMLH can have accounts with emails not verified. This can be a security concern as someone could create an account with someone else's email and it would totally invalidate our verification email system. In that direction the approach taken is to extract fields and use them for the application during the sign up process.

  1. Create a new MyMLH app.
  2. Add https://DOMAIN//user/callback/mlh/ as a Redirect URI. Replace DOMAIN for the domain used to deploy your system. Ex: http://registration.gerard.space/user/callback/mlh/.
  3. Set MLH_CLIENT_SECRET using the strings in Application ID and Secret fields, concatenated with a @. Ex: application_id@secret.

Note that to test locally you will need to add a line where DOMAIN is localhost:8000.

Set up nginx

Needs: Nginx

  • sudo vim /etc/nginx/sites-available/default
  • Add site:
server {
    listen 80;
    listen [::]:80;

    server_name my.hackupc.com;


    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        alias /home/user/project_folder/staticfiles/;
    }
    
    location /files/ {
        alias /home/user/project_folder/files/;
    }
    
    location / {
        include proxy_params;
        proxy_pass http://unix:/home/user/project_folder/backend.sock;
    }


}

Deploy new version

  • git pull
  • ./restart.sh
  • sudo service backend restart

Management

Automated expiration

  • Create management.sh from template: cp management.sh.template management.sh
  • chmod +x management.sh
  • Edit variables to match your environment and add extra if required (see environment variables available above)
  • Add to crontab: crontab -e
*/5 * * * * cd /home/user/project_folder/ && ./management.sh > /home/user/project_folder/management.log 2> /home/user/project_folder/management_err.log

User roles

  • is_volunteer_accepted: Allows user to check-in hackers with QR and list view
  • is_organizer: Allows user to vote, see voting ranking and check-in hackers.
  • is_director: Allows user to send invites to hackers as well as send reimbursement. Also can review dubious applications.
  • is_admin: Allows user to enter Django Admin interface
  • can_review_dubious: User can review and mark as safe applications that seem weird.
  • can_review_blacklist: User can review and mark as blacklist applications that their user seem to be in the blacklist.

Important SQL queries

Here are several queries that may be useful during the hackathon application process.

  1. source ./env/bin/activate
  2. python manage.py dbshell
  3. Run SQL query
  4. Extract results

Missing applications emails

Emails from users that have registered but have not completed the application.

SELECT u.email
FROM user_user u
WHERE NOT is_director AND NOT is_volunteer AND NOT is_organizer
AND u.id NOT IN 
(SELECT a.user_id FROM applications_application a);

Use in your hackathon

You can use this for your own hackathon. How?

Personalization

Style

Content

Update emails:

You can update emails related to

Update hackathon variables

Check all available variables at app/hackathon_variables.py.template. You can set the ones that you prefer at app/hackathon_variables.py

Update registration form

You can change the form, titles, texts in applications/forms.py

Update application model

If you need extra labels for your hackathon, you can change the model and add your own fields.

  • Update model with specific fields: applications/models.py
  • python manage.py makemigrations
  • python manage.py migrate

Want to Contribute?

Read these guidelines carefully.

By making a contribution, in any form (including, but not limited to, Issues and Pull Requests), you agree to abide by the Code of Conduct. Report any incidents to [email protected] and appropriate action will be taken against the offender after investigation.

License

MIT © Hackers@UPC

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].