The goal of the application is to quickly verify participant information and check-in ALC participants at events either on PC or mobile device.
For events other than Orientation Day, the app should be hosted on Blackbaud servers. Currently the site resides on the tofighthiv.org server.
On Orientation Day, the app should be hosted and run via a local server. A local server is required to allow admins to fetch fundraising results.
-
Install the required software.
-
Clone or download this repo.
-
Run
npm install
. -
Update (overwrite) the participant roster by running
npm run [fetch-parts-win | fetch-parts-mac]
(see Tools and Dependencies). Or, manually place a copy injs/participants.json
. The win/macnpm run ...
commands are for convenience when 50+ machines require an update on Orientation Day. -
In the
config
directory, create theluminate.config.js
file - see below. -
Orientation Day:
- Make Firefox the default browser.
- Run
npm start
to open the app. - Make sure CORS Everywhere (Firefox addon) is enabled - it's enabled if the icon is green.
-
Pre-Orientation Day:
- Upload FTP to a directory on
customerftp.convio.net
.
- Upload FTP to a directory on
- Node.js - Needed to install dependencies and run the local server.
- Git - Needed to clone the project. It's best to clone so you can fetch updates.
- Firefox - Required for Orientation Day
- CORS Everywhere (Firefox addon) - Required for Orientation Day
var luminate_config = {
// Luminate API Key
api_key: 'XXXXXXXXXXXXXXXXXX',
// The text saved to the body of the Luminate interaction
interaction_body: 'Text for the body interaction.',
// Initialize a username and password
username: 'LUMINATE ONLINE USERNAME',
password: 'LUMINATE ONLINE PASSWORD'
};
First, run the ALC Event Check-In (Build CSV to JSON) located in the Report Writer in Luminate Online.
You may edit the report to change the TeamRaiser event and the name of the report - DO NOT edit the column names in step 3 of the report builder.
Download the report as .csv
. Open the file in a plain-text editor (not Excel or another spreadsheet app). Use Mr. Data Converter to convert the file to json
format.
The shape of the output data from Mr. Data Converter should be an array of javascript objects.
Example:
[
{
"consId": 123456,
"first": "Jane",
"last": "Smith",
"alcnum": 8000,
"team": "Super Cool Team",
"type": "Roadie",
"city": "San Francisco",
"med": "false"
}
]
Blackbaud servers will not serve mixed content (files server from http and https). Scripts and style sheets must be loaded in the head of the page as js/file_name.js
not /js/file_name.js
. The later will cause the application to break.
<head>
....
<!-- AngularJS -->
<script src="node_modules/angular/angular.min.js"></script>
<script src="node_modules/angular-route/angular-route.min.js"></script>
<script src="node_modules/angular-cookies/angular-cookies.min.js"></script>
<script src="node_modules/angular-ui-bootstrap/ui-bootstrap-tpls.min.js"></script>
<!-- ALC Application -->
<link rel="stylesheet" href="css/custom.css">
...
</head>
Blackbaud's server may take up to 15 minutes to see the changes for CSS and JS files.
Installing PowerShell Core on macOS
Firebase - Read and Write Data on the Web
Invoke-RestMethod (PowerShell utility)
Using Visual Studio Code for PowerShell Development
Why do we use a report and not Blackbaud's Convio API to pull in the participant data? The Convio API returns a max of 1000 constituent records in an API. ALC TeamRaisers average 5000+ registered participants. While not impossible for the check-in app to use the Convio API, it would slow down the line and require a constant internet connection, which is not always available at ALC events.