A React web application that allows club administrators to review applicants from Google Sheets, with the ability to vote on candidates and track voting results.
Before running this application, you'll need:
- Node.js (version 16 or higher)
fork the repository
cd applicant_reviewer
npm run install-allrun the backend with:
node server/index.js
run the frontend with:
npm start
This project has 2 .env files you need to fill in. One in the root directory (/env.example) and one in the client directiry (/client/env.example)
We use https://dashboard.render.com/ to host the server and frontend. Our account is with wie@engsoc.uwaterloo.ca.
Frontend:
Backend:
Google cloud is needed for Google Auth and in order to access the Sheets spreadhseets. This was already set up once so you should only be reading this if something is broken with our google cloud platform. Our account uses the email wie@engsoc.uwaterloo.ca
- Go to Google Cloud Console
- Locate the WiE Applicant Reviewer project
- Enable the following APIs:
- Google Sheets API
- Google+ API (for OAuth)

- Go to "APIs & Services" > "OAuth consent screen"
- Choose "External" user type (unless you have a Google Workspace organization)
- Fill in the required information:
- App name: "Applicant Reviewer" (or your preferred name)
- User support email: Your email address
- Developer contact information: Your email address
- Click "Save and Continue"
- On "Scopes" page, click "Save and Continue"
- On "Test users" page, add your email address as a test user
- Click "Save and Continue"
- Review and click "Back to Dashboard"
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "OAuth client ID"
- Choose "Web application" as application type
- Add authorized redirect URIs:
http://localhost:5001/auth/google/callback(for development)https://yourdomain.com/auth/google/callback(for production) - note our domain is https://wie-application-reviewer.onrender.com
- Click "Create"
- Note down your Client ID and Client Secret
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "Service Account"
- Fill in the service account details:
- Service account name: "applicant-reviewer-sheets" (or your preferred name)
- Service account ID: Will auto-generate
- Description: "Service account for accessing Google Sheets in Applicant Reviewer app"
- Click "Create and Continue"
- Permissions (optional): Click "Select a role"
- Search for and select: "Google Sheets API > Sheets API > Sheets API Reader"
- This gives read-only access to Google Sheets
- Click "Continue"
- Principals with access (optional): Leave this blank - no additional users need access
- Click "Done"
- Click on your newly created service account
- Go to "Keys" tab
- Click "Add Key" > "Create new key"
- Choose "JSON" format
- Download the JSON key file
- Note down the
client_emailandprivate_keyfrom the JSON
Important: Update your Google Cloud Console OAuth settings to include your production domain in the authorized redirect URIs.
Your Google Sheet must have these columns:
- Name: Applicant's full name
- First Choice Directorship: The role they're applying for (this is used for grouping)
- Email: Applicant's email address
- Any other columns: Will be displayed but not used for grouping
Example structure:
| Timestamp | Name | Email | First Choice Directorship | Are you an undergraduate student? | Other Info |
|-----------|------|-------|---------------------------|-----------------------------------|------------|
| 2024-01-15 | John Doe | john@email.com | Marketing Director | Yes | Additional details |
| 2024-01-15 | Jane Smith | jane@email.com | Events Coordinator | No | More info |