Event Management PWA (Angular, Firebase, Google Sheets) - Used by the organizing + event team during Google IO Extended KL 2018 (https://events.gdgkl.org/io/) to manage 400+ people check-in, badge collection, goodies distribution, survey & lucky draw entitlement.
Partial demo here: https://event-manager-d1559.firebaseapp.com/. In order to not breaking my bill, I have disabled sign up, and most admin features. You can test all volunteer features + view the dashboard.
Test email/password
- testa@testa.com testaaa
- testb@testb.com testbbb
- testc@testc.com testccc
Features (general)
- Signup
Features (for volunteer) - bottom menu
- Search attendee (SEARCH)
- Check-in & badge distribution management - Single / Pair Mode (CHECK-IN, BADGE)
- Goodies distribtuion (SHIRT)
- Check if attendee complete survey to get Lucky Draw entry (LUCKY)
Features (for admin) - home page menu
- Live event status update (DASHBOARD)
- Bulk loading attendee list (LOAD)
- Manage user access rights (RIGHTS)
This project use Firebase Auth, Firestore, Google Sheets API.
Firebase
- Register Firebase: https://firebase.google.com/
- Create a new Firebase project(s). (You may create 2 projects, 1 for development, 1 for production)
- Setup Authentication Sign In Method - Email / Password
- Enable Firestore as
test mode
. (Update to non test mode when deploy to production) - Install firebase npm tools
npm install -g firebase-tools
globally in your machine. - In the project, run command
firebase init hosting
to setup hosting info. public folder name should bedist/event-manager
, single page application should bey
. Refer tofirebase.json
file.
Google Sheet API
- Login to Google Cloud console: https://console.cloud.google.com/ (use the same email as Firebase)
- Search for Sheets API, enable it
- Create a Google Sheet like this one https://docs.google.com/spreadsheets/d/10U15rDEBWaDacqGfZyS4AOvmmLxAGzwqynawuSB2jbw. (sheet name should be survey, column B contains id)
- Set the sheet permission to anyone with the link can view.
There are a couple of config you need to update, wild search for todo
in the project to find them, or follow instruction below:
- Replace Firebase web config in this project
src/environments/environment.ts
andsrc/environments/environment.prod.ts
with your firebase config. - Replace Google sheet config in this project:
id
is the google sheet id, extract from the google sheet url (e.g. https://docs.google.com/spreadsheets/d/<copy_this_sheet_id>/edit)apiKey
is the same as firebase api key
- When running project for first time, go to
signup
page, enter your email and password, and tick on all checkbox to create first admin user. - Once created first admin user, disabled
setupMode
insrc/environments/environment.ts
(Set tofalse
). Enable setup mode is dangerous (whensetupMode
is enabled, user can select access rights during signup). - Load attendee list by navigate to LOAD page. Refer to instruction in this google sheet
data
tab (https://docs.google.com/spreadsheets/d/10U15rDEBWaDacqGfZyS4AOvmmLxAGzwqynawuSB2jbw) - Prepare a survey result google sheet for lucky draw entitlement. Refer to instruction in this google sheet
survey
tab (https://docs.google.com/spreadsheets/d/10U15rDEBWaDacqGfZyS4AOvmmLxAGzwqynawuSB2jbw) - Go to
dashboard
page, set total number of attendees. Once set, charts will display.
- Run
yarn
ornpm install
to install dependencies. - Run
yarn start
ornpm start
to run the project in http://localhost:4200 - Run
yarn build --prod
ornpm run build --prod
to build project - artifact indist
folder - Run
yarn deploy
ornpm run deploy
to deploy to firebase
This project was generated with Angular CLI version 6.1.5.