This is the Unit Elections Portal used by Occoneechee Lodge. This system allows for our lodge to track unit elections from start to finish.
Our main website allows for unit leaders to request a unit election via a form that sends an election request to a Chapter Adviser. The Chapter Adviser has an account on our unit elections portal and logs the request. The Chapter Adviser then responds to the request via email and gives the Unit Leader an access key provided by the system and a link to the unit leader page within this unit elections portal.
The Unit Leader can then access the portal and put in all the vital information about the election candidates.
Once the time comes for the unit election, the election team can turn on voting within the unit election portal and give a completely anonymous voting link to the Scouts within the unit. Once a scout vote, the system leaves a cookie on their device preventing them from voting more then once.
After voting is completed, the unit election team turns off voting and the election results are available immediately. The unit leader, election team, and lodge leadership all have access to view the results. Only lodge leadership with the Admin privilage have the ability to export the results.
- User Management
- Automated Election Results
- Anonymous Voting
- Unit Leader Dashboard with pre-election access
- LodgeMaster Exporting
-
PHP
required- Minimum version:
7.0
pdo_mysql
extension required- Recommended to enable
shell_exec
- Minimum version:
-
MySQL
required- Version
5.6+
recommended
- Version
-
Composer
required- Version
1.2.1+
recommended mbstring
anddom
php extensions required
If Composer is not installed on the system or accessible through
shell_exec
, a self-containedcomposer.phar
file located in theinstall
directory is used - Version
-
cURL
recommended- Version
7+
recommended
- Version
jQuery
- Version
3.1
- Pulled in via composer
- Version
Bootstrap
- Version
^3
- Version
PHP-Mailer
- Version
5.2
- Version
JSON Web Tokens
(JWT) (Firebase implementation)- Version
5.0
- Version
- PHP Login for User Management
- Version
3.1
- Version
- Originally Forked from eibrown12
DataTables
- Version
1.10.16
- Version
Cropper
LoadingOverlay
Multiselect
- Version
2.5.0
- Version
-
Enable SSL on your site! Get a free cert at LetsEncrypt
- Their free tool Certbot makes this process virtually painless
-
Shell access is recommended. While it is likely possible to install this library without shell access (such as on a shared web hosting provider), this is unsupported. It's highly recommended that you instead opt for a VPS provider such as DigitalOcean that allows you root shell access
-
Run
mysql_secure_installation
on server prior to app installation -
Host your database on an encrypted filesystem
-
File/directory permissions should be locked down to an appropriate level
$ git clone https://github.com/Lodge104/unit-elections.git
$ composer install --no-dev
Run Composer using SSH in the root directory that has the file composer.json
. To use this repository, your website hosting service mush allow SSH. If you do not already have Composer installed with your hosting service, you can run the composer.phar
file in the /install/ directory using the following command while your still in the root directory. Change /path/to/ to whatever your root is.
$ php /path/to/install/composer.phar install --no-dev
Open this link in your web browser (replacing [yoursite.com] with your site address)
http://{yoursite.com}/install/index.php
Select an installation option from the pop-up modal that appears: Automated
or Manual
Automated Installation Instructions
Manual Installation Instructions
Find the unitelections.sql
file in the root of this repository and import it into your MySQL database. This will create a new database called elections
. This will keep your data seperate from user management data.
Then find the unitelections-info-sample.php
file and rename it to unitelections-info.php
leaving it in the site's root. Change the values within the file to match the elections
database you just created.
* Full API documentation can be found by nagivating to: {yoursite.com}/docs/api/index.html