We Build SG
We Build SG automatically curates a list of free public developer / design events from Facebook / Meetup / Eventbrite / ICS url / manual and open source projects from Github for the curious folks who love to make things in a particular city.
clone this project and install dependancies:
git clone firstname.lastname@example.org:webuildsg/webuild.git && cd webuild gem install foreman thor tmuxinator gem install dotenv -v 0.11.1 gem install dotenv-deployment -v 0.0.2 npm install -g bower grunt-cli npm i && bower install
Setup environment variables. Refer Environment Variables section for more details.
cp .env.sample .env
Start the website locally with
Repositories curated automatically every hour:
- Github repositories
- user location contains
- repos with more than 50 watchers
- repos pushed date less than 3 months ago
- user location contains
Events curated automatically every hour:
- Facebook selected groups
- Meetup.com / Eventbrite event category
Technology, free, has a valid location
- ICS url
- Manually added events
The events, repositories and podcasts data feeds are available in public as JSON format. Please refer to the list of API endpoints
Set the following environment variables on your system:
- WEBUILD_API_SECRET (required) Used as a password when remotely refreshing the feeds.
- MEETUP_API_KEY (required) Used to list available meetup events in Singapore.
- EVENTBRITE_TOKEN (required) Used to list available eventbrite events in Singapore.
- WEBUILD_AUTH0_CLIENT_ID (required): Used to retrive facebook events in Singapore. Auth0 takes care of OAuth2 social logins.
- WEBUILD_AUTH0_CLIENT_SECRET (required): Same as above.
- PORT (optional, default: 4000) Configures the port used by the web server.
- LOCATION (optional, default: Singapore) The GitHub feed shows only repositories owned by developers in this area. Matches the GitHub "Location" property in user profiles.
- MAX_USERS (optional, default: 1000) Show only repositories belonging to developers in this ranking. Only the last updated repository of a user is shown.
- MAX_REPOS (optional, default: 50) Show up to this many total repositories.
- GITHUB_CLIENT_ID (optional) App OAuth client ID for GitHub.
- GITHUB_CLIENT_SECRET (optional) App OAuth client secret for GitHub.
- NODE_ENV Environment variable. By default it is
stagingand for production it is
- BOT_TOKEN This token is used by the We Build SG Bot to store the api endpoint responses for repos and events to the archives every day. Generate a token for the Github user We Build SG Bot.
Use an external "web cron" service to periodically refresh the GitHub data feed. Keep in mind that due to GitHub API rate limiting it may take >15 minutes to retrieve the entire feed. Register a GitHub OAuth application and configure the
GITHUB_CLIENT_* environment variables (see above) to increase the rate limit. Do not refresh the feed too often or the rate limit will cause it to take longer.
Create an Auth0 account (you get one free app) and a Facebook app and link them with these instructions. Configure the
WEBUILD_AUTH0_CLIENT_* environment variables (see above) and add your callback url in auth0. Run the app and if all is configured well, add your fb aceess token by logging in at
Firebase related environment variables
- Open a Firebase account
- Create a new app for this project
Login & Auth>
- Note the email, password, user uid and firebase unique app url for the following variables:
- FIREBASE_EMAIL (required): .
- FIREBASE_PASSWORD (required)
- FIREBASE_UID (required)
- FIREBASE_URL (required)
Please see CONTRIBUTING.md for details.
Every production code has a version following the Semantic Versioning guidelines. Run the
grunt bump:minor or
grunt bump:major command to bump the version accordingly and then push to production with
git push production master.
We Build is released under the MIT License.