Follow us on Twitter • Join Our Community
WNB.rb is a virtual community for women and non-binary Rubyists. This is the repo for WNB.rb's website, built by and for our community.
All contributors to this repository must follow the WNB.rb code of conduct. Those who violate the code of conduct will be reported to GitHub support and banned from all WNB.rb platforms, including GitHub and Slack.
Before you try to set up this app, make sure you have the following installed on your machine:
- Ruby (3.3.4)
- Node (16.3.0) + Yarn
- Postgres (13.3)
- Foreman for managing multiple servers
You must also fork and clone this repository.
For help getting set up, refer to the Contributor Resources section of this document.
To install dependencies and setup the database, run:
make setup
Running the job board locally requires two environment variables. To set up your environment variables, run the following command:
cp .env.template .env
Then, edit .env
and set the following environment variables:
JOB_BOARD_PASSWORD
: this determines the password for the job boardJWT_HMAC_SECRET
: this sets the secret key used to encode the token for job board authentication
- To run the backend tests:
rspec
- To run the frontend tests:
yarn jest app/javascript
To start both the frontend and backend servers at the same time, run:
foreman start -f Procfile.dev
In your browser, navigate to localhost:5000
to see the app in action!
Alternatively, you may run the frontend and backend servers separately with these two commands:
rails s
bin/shakapacker-dev-server
This may be helpful for debugging, but generally should not be necessary.
To execute rake tasks, run:
foreman run rake [NAMESPACE]:[TASK_NAME]
If you want to implement Google Sheets and interact with the form for joining new users, follow the instructions below to enable reCAPTCHA v3 and set up the Google Sheets API and Google Drive API.
reCAPTCHA helps protect your sites from fraudulent activities, spam, and abuse. To start using reCAPTCHA, follow these steps:
-
Sign up for an API key pair for your site by visiting the reCAPTCHA admin page. Generate your
SITE KEY
andSECRET KEY
. -
Set the environment variables by editing the
.env
file. Replace the values with the following:
RECAPTCHA_ENABLED
: Enable or disable Recaptcha ('true'
or'false'
).RECAPTCHA_SITE_KEY
: Use this key in your JSX files.RECAPTCHA_SECRET_KEY
: Use this key to verify the user's response.
To interact with Google Sheets, you need to set up the Google Sheets API and Google Drive API. Follow these steps:
-
Go to the Google Cloud API Console and create a new project.
-
Enable the Google Drive API by clicking on "Enable API" and searching for the Google Drive API.
-
Create credentials for a Web Server to access Application Data.
-
Name the service account and grant it a Project Role of Editor.
-
Download the JSON file that contains your credentials.
-
Move the downloaded JSON file to the location where
google-credentials.json.template
is located in this project. Rename the file togoogle-credentials.json
. -
In the Google Cloud API Console, also enable the Google Sheets API (this step is important).
-
Create a Google Spreadsheet file in your Google Drive. Copy the title or key of the spreadsheet and paste it in
lead_registration_service.rb
. -
Share the document with the email address found inside the
google-credentials.json
file (theclient_email
value).
For better understanding, you can refer to the following guides:
- https://www.twilio.com/blog/google-spreadsheets-ruby-html
- https://github.com/wnbrb/google-drive-ruby/blob/master/doc/authorization.md#service-account
1. Assign yourself an issue from our Issues tab
- Check out the
good first issue
tag if you're just getting started! - If you want to work on something that isn't listed in our Issues, please create a new issue.
- Note that your pull request may require one or more tests. Tests are required for almost all backend changes, and all frontend logic-related changes. Style or copy changes do not require you to write a test.
- For a style or copy change, please provide side-by-side screenshots showing how the app looks before and after your changes.
- When working on the admin area, controllers for the admin area should inherit from
AdminController
so the layout is properly applied.
Need some help contributing to our app? Check out the resources below for more information about installing and using various third-party tools.
- Forking and cloning a repository
- Working with forks
- Creating and deleting branches
- Commit guide
- Creating a pull request from a fork
To report a bug or request a new feature, please open an issue.