JavaScript CSS HTML Ruby
Switch branches/tags
Nothing to show
Latest commit 6c71bb9 Dec 14, 2017 @shiftkey shiftkey Merge pull request #839 from andy5995/rmw
rmw: update tags and description
Permalink
Failed to load latest commit information.
_data/projects Merge pull request #839 from andy5995/rmw Dec 15, 2017
_includes Merge pull request #710 from Motardo/filter-by-name Oct 25, 2017
_layouts remove old hacks for prefix May 19, 2016
assets optimize png images using zopflipng Jul 16, 2016
images optimize png images using zopflipng Jul 16, 2016
javascripts Add filter by name Aug 28, 2017
licenses Removed ProjectsDataGenerator plugin and moved the tag extraction to js Dec 4, 2013
scripts cast the exception to a string Oct 30, 2016
stylesheets take out background-* for hovering on links closes #486 Oct 27, 2016
tests Fixed issue with filters and tags with special characters. Fixed a ty… Mar 28, 2014
.editorconfig Add .editorconfig Jun 15, 2015
.gitattributes Add .gitattributes Jun 15, 2015
.gitignore Added Jekyll, moved project data to seperate .yml file Nov 23, 2013
.travis.yml bump travis to use a more recent version of ruby Jul 12, 2016
CNAME Create CNAME Nov 20, 2013
Dockerfile Create Dockerfile Sep 17, 2016
Gemfile updated gems to latest github-pages version Dec 20, 2015
Gemfile.lock #682 - Added functionality to allow external project links open in a … Aug 3, 2017
LICENSE tweaks Oct 13, 2015
README.md #682 - Added functionality to allow external project links open in a … Aug 3, 2017
_config.yml exclude new content from publishing Nov 2, 2015
_run-jekyll.bat Style update Dec 1, 2015
apple-touch-icon-114x114.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-120x120.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-144x144.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-152x152.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-57x57.png use optipng to recompress png imgs(lossless) Feb 23, 2016
apple-touch-icon-60x60.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-72x72.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-76x76.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon-precomposed.png optimize png images using zopflipng Jul 16, 2016
apple-touch-icon.png optimize png images using zopflipng Jul 16, 2016
bike_md.yml Update bike_md.yml May 15, 2017
browserconfig.xml Additional style updates based on feedback and post-rebase fixup Dec 1, 2015
docker-compose.yml Create docker-compose.yml Sep 17, 2016
favicon-128.png optimize png images using zopflipng Jul 16, 2016
favicon-160x160.png optimize png images using zopflipng Jul 16, 2016
favicon-16x16.png optimize png images using zopflipng Jul 16, 2016
favicon-196x196.png optimize png images using zopflipng Jul 16, 2016
favicon-32x32.png use optipng to recompress png imgs(lossless) Feb 23, 2016
favicon-96x96.png use optipng to recompress png imgs(lossless) Feb 23, 2016
favicon.ico Forgot one little favicon file Dec 1, 2015
index.html Additional style updates based on feedback and post-rebase fixup Dec 1, 2015
mstile-144x144.png optimize png images using zopflipng Jul 16, 2016
mstile-150x150.png optimize png images using zopflipng Jul 16, 2016
mstile-310x150.png optimize png images using zopflipng Jul 16, 2016
mstile-310x310.png optimize png images using zopflipng Jul 16, 2016
mstile-70x70.png optimize png images using zopflipng Jul 16, 2016
passthief.yml Added passthief Dec 10, 2017
robots.txt Added robots.txt. Jun 8, 2014

README.md

up-for-grabs.net

Do you run or participate in an open-source project? Submit a Pull Request to add it to the list!

Visit the website: up-for-grabs.net

Add a project

Each of the projects is a file in the projects folder - to add a new one, create a new file named after the project, ending in .yml. Ensure all spaces and special characters are replaced with -, to make everyone's life easier. This guide shows you how to create the file directly in the browser, without cloning the repository in the command line.

The contents of the file are just some details about the project:

name: *project name*
desc: *a brief description of the project*
site: *home page or repository URL*
tags:
# Note: these are tags categorizing the project, not issue labels.
- *tags*
- *to*
- *search*
- *on*
upforgrabs:
  name: *the label associated with the up-for-grabs tasks -- e.g. "help needed" (without the quotes)*
  link: *URL where users can view the tasks -- e.g. https://github.com/username/project/labels/up%20for%20grabs*

Check out the up-for-grabs file for an example of this project structure.

Use the Yeoman Generator

If you'd like to use a generator to create the project's file, you can certainly do so!

Install the generator, then run it and walk through the steps.

npm install -g generator-up-for-grabs
yo up-for-grabs

Testing the site locally

If you haven't already, clone the repository to your machine:

git clone https://github.com/up-for-grabs/up-for-grabs.net.git

If you have a fork of the repository, change up-for-grabs into your GitHub account name above.

You need Ruby and Bundler installed to test the site - you can confirm these are present by running these commands:

ruby -v
bundle -v

If you're happy with that, run these commands in the directory where you cloned the up-for-grabs repository:

bundle install
jekyll serve --watch

Alternatively, the application can be run in a Docker container:

docker-compose up

Then open your browser to localhost:4000 to view the site.

How This All Works

We use a few great features of Jekyll and GitHub Pages to host this entire site for free.

  • We are using a file called scripts.html which is an include file. When we publish the site, Jekyll uses this to concatenate and generate the scripts that will actually be downloaded when a user visits the site.
  • Within the scripts.html template, we're referencing site.data.projects, which gives us access to the entire directory of .yml files as a set of variables. We combine this with the jsonify liquid transformer to turn them into a JSON object. This means that the raw data is generated once, so it downloads very quickly as static data.
  • When the web page is opened, our startup JS processes each project in the array of projects and pushes it into the array that the rest of the site uses.
  • We use travis-ci to run a custom ruby script, cibuild, that checks all the .yml files to make sure they can be appropriately parsed. This makes sure we don't merge any incorrectly formed project files.

What this means is that, when a pull request is merged, GitHub Pages automatically builds the site via Jekyll and publishes it to our GitHub -- no database or hosting needed. (Thanks, GitHub!)