diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..c17efd8
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,29 @@
+name: Build
+
+on:
+ push:
+ branches: [master]
+ pull_request:
+
+permissions:
+ contents: read
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ env:
+ JEKYLL_ENV: production
+ JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ steps:
+ - uses: actions/checkout@v7
+ - uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: '3.3'
+ bundler: '2.6.9'
+ bundler-cache: true
+ - run: bundle exec jekyll build --strict_front_matter
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index add540e..18782cf 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,7 +1,7 @@
Contributing
============
-The https://www.ruby-grape.org site is work of [many contributors](https://github.com/ruby-grape/ruby-grape.github.io/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/ruby-grape/ruby-grape.github.io/pulls) and [propose topics](https://github.com/ruby-grape/ruby-grape.github.io/issues). When in doubt, ask a question in the [Grape Google Group](http://groups.google.com/group/ruby-grape).
+The https://www.ruby-grape.org site is work of [many contributors](https://github.com/ruby-grape/ruby-grape.github.io/graphs/contributors). You're encouraged to submit [pull requests](https://github.com/ruby-grape/ruby-grape.github.io/pulls) and [propose topics](https://github.com/ruby-grape/ruby-grape.github.io/issues). Ask Grape usage questions in the [Grape issue tracker](https://github.com/ruby-grape/grape/issues); website issues belong in this repository.
#### Fork the Project
@@ -25,10 +25,11 @@ git checkout -b my-feature-branch
#### Bundle Install and Run Jekyll
-Ensure that you can build the project and run tests.
+Use Ruby 3.3 or newer and the committed GitHub Pages-compatible bundle. Ensure that the production site builds before submitting a pull request.
```
bundle install
+JEKYLL_ENV=production bundle exec jekyll build --strict_front_matter
bundle exec jekyll serve
```
@@ -38,6 +39,14 @@ Navigate to http://localhost:4000.
Create markdown content.
+#### Maintain Releases and Project Listings
+
+Update versions and the verification date in `_data/releases.yml` using [RubyGems](https://rubygems.org/gems/grape/versions). Confirm that each versioned README or upgrade-guide tag exists. The default branch may describe an unreleased version; do not advertise that as a published release. Keep current, previous, and legacy release lines distinct without implying identical support policies.
+
+List only non-archived projects with recent substantive maintenance. Inspect default-branch commits, compatibility work, releases, and runnable setup instructions rather than relying on repository metadata timestamps or an isolated automated workflow bump. Apply the same standard to third-party integrations and examples, retain canonical repository links, and let each project define its own supported versions.
+
+Keep historical talks and tutorials clearly labeled rather than presenting them as current setup guidance. Preserve existing page paths and the `CNAME` custom domain. Keep Markdown paragraphs on one line.
+
#### Commit Changes
Make sure git knows your name and email address:
@@ -71,15 +80,10 @@ If you've been working on a change for a while, rebase with upstream/master.
```
git fetch upstream
git rebase upstream/master
-git push origin my-feature-branch -f
+git push --force-with-lease origin my-feature-branch
```
-Amend your previous commit and force push the changes.
-
-```
-git commit --amend
-git push origin my-feature-branch -f
-```
+Keep the pull request focused and never force-push the default branch.
#### Be Patient
diff --git a/Gemfile b/Gemfile
index 7c7a7ff..60c43b4 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,4 +1,4 @@
-source 'http://rubygems.org'
-
-gem 'github-pages'
+source 'https://rubygems.org'
+gem 'github-pages', '~> 232'
+gem 'webrick', '~> 1.8'
diff --git a/Gemfile.lock b/Gemfile.lock
index c33d66e..f240353 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,224 +1,301 @@
GEM
- remote: http://rubygems.org/
+ remote: https://rubygems.org/
specs:
- activesupport (4.2.8)
- i18n (~> 0.7)
- minitest (~> 5.1)
- thread_safe (~> 0.3, >= 0.3.4)
- tzinfo (~> 1.1)
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
+ activesupport (8.1.4)
+ base64
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ json
+ logger (>= 1.4.2)
+ minitest (>= 5.1)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ uri (>= 0.13.1)
+ addressable (2.9.0)
+ public_suffix (>= 2.0.2, < 8.0)
+ base64 (0.3.0)
+ bigdecimal (4.1.3)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
colorator (1.1.0)
- ethon (0.14.0)
+ commonmarker (0.23.12)
+ concurrent-ruby (1.3.8)
+ connection_pool (3.0.2)
+ csv (3.3.7)
+ dnsruby (1.74.0)
+ base64 (>= 0.2)
+ logger (~> 1.6)
+ simpleidn (~> 0.2.1)
+ drb (2.2.3)
+ em-websocket (0.5.3)
+ eventmachine (>= 0.12.9)
+ http_parser.rb (~> 0)
+ ethon (0.19.0)
ffi (>= 1.15.0)
- execjs (2.7.0)
- faraday (1.8.0)
- faraday-em_http (~> 1.0)
- faraday-em_synchrony (~> 1.0)
- faraday-excon (~> 1.1)
- faraday-httpclient (~> 1.0.1)
- faraday-net_http (~> 1.0)
- faraday-net_http_persistent (~> 1.1)
- faraday-patron (~> 1.0)
- faraday-rack (~> 1.0)
- multipart-post (>= 1.2, < 3)
- ruby2_keywords (>= 0.0.4)
- faraday-em_http (1.0.0)
- faraday-em_synchrony (1.0.0)
- faraday-excon (1.1.0)
- faraday-httpclient (1.0.1)
- faraday-net_http (1.0.1)
- faraday-net_http_persistent (1.2.0)
- faraday-patron (1.0.0)
- faraday-rack (1.0.0)
- ffi (1.15.4)
+ logger
+ eventmachine (1.2.7)
+ execjs (2.10.2)
+ json (>= 2)
+ faraday (2.15.1)
+ faraday-net_http (>= 2.0, < 3.6)
+ json
+ logger
+ faraday-net_http (3.5.0)
+ net-http (~> 0.5)
+ ffi (1.17.4)
+ ffi (1.17.4-arm64-darwin)
+ ffi (1.17.4-x86_64-linux-gnu)
forwardable-extended (2.6.0)
- gemoji (3.0.0)
- github-pages (139)
- activesupport (= 4.2.8)
- github-pages-health-check (= 1.3.3)
- jekyll (= 3.4.3)
- jekyll-avatar (= 0.4.2)
- jekyll-coffeescript (= 1.0.1)
- jekyll-default-layout (= 0.1.4)
- jekyll-feed (= 0.9.2)
- jekyll-gist (= 1.4.0)
- jekyll-github-metadata (= 2.3.1)
- jekyll-mentions (= 1.2.0)
- jekyll-optional-front-matter (= 0.1.2)
+ gemoji (4.1.0)
+ github-pages (232)
+ github-pages-health-check (= 1.18.2)
+ jekyll (= 3.10.0)
+ jekyll-avatar (= 0.8.0)
+ jekyll-coffeescript (= 1.2.2)
+ jekyll-commonmark-ghpages (= 0.5.1)
+ jekyll-default-layout (= 0.1.5)
+ jekyll-feed (= 0.17.0)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.16.1)
+ jekyll-include-cache (= 0.2.1)
+ jekyll-mentions (= 1.6.0)
+ jekyll-optional-front-matter (= 0.3.2)
jekyll-paginate (= 1.1.0)
- jekyll-readme-index (= 0.1.0)
- jekyll-redirect-from (= 0.12.1)
- jekyll-relative-links (= 0.4.0)
- jekyll-sass-converter (= 1.5.0)
- jekyll-seo-tag (= 2.2.3)
- jekyll-sitemap (= 1.0.0)
- jekyll-swiss (= 0.4.0)
- jekyll-theme-architect (= 0.0.4)
- jekyll-theme-cayman (= 0.0.4)
- jekyll-theme-dinky (= 0.0.4)
- jekyll-theme-hacker (= 0.0.4)
- jekyll-theme-leap-day (= 0.0.4)
- jekyll-theme-merlot (= 0.0.4)
- jekyll-theme-midnight (= 0.0.4)
- jekyll-theme-minimal (= 0.0.4)
- jekyll-theme-modernist (= 0.0.4)
- jekyll-theme-primer (= 0.2.1)
- jekyll-theme-slate (= 0.0.4)
- jekyll-theme-tactile (= 0.0.4)
- jekyll-theme-time-machine (= 0.0.4)
- jekyll-titles-from-headings (= 0.1.5)
- jemoji (= 0.8.0)
- kramdown (= 1.13.2)
- liquid (= 3.0.6)
- listen (= 3.0.6)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.16.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.3)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.8.0)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.2.0)
+ jekyll-theme-cayman (= 0.2.0)
+ jekyll-theme-dinky (= 0.2.0)
+ jekyll-theme-hacker (= 0.2.0)
+ jekyll-theme-leap-day (= 0.2.0)
+ jekyll-theme-merlot (= 0.2.0)
+ jekyll-theme-midnight (= 0.2.0)
+ jekyll-theme-minimal (= 0.2.0)
+ jekyll-theme-modernist (= 0.2.0)
+ jekyll-theme-primer (= 0.6.0)
+ jekyll-theme-slate (= 0.2.0)
+ jekyll-theme-tactile (= 0.2.0)
+ jekyll-theme-time-machine (= 0.2.0)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.13.0)
+ kramdown (= 2.4.0)
+ kramdown-parser-gfm (= 1.1.0)
+ liquid (= 4.0.4)
mercenary (~> 0.3)
- minima (= 2.1.1)
- rouge (= 1.11.1)
+ minima (= 2.5.1)
+ nokogiri (>= 1.16.2, < 2.0)
+ rouge (= 3.30.0)
terminal-table (~> 1.4)
- github-pages-health-check (1.3.3)
+ webrick (~> 1.8)
+ github-pages-health-check (1.18.2)
addressable (~> 2.3)
- net-dns (~> 0.8)
- octokit (~> 4.0)
- public_suffix (~> 2.0)
- typhoeus (~> 0.7)
- html-pipeline (2.6.0)
+ dnsruby (~> 1.60)
+ octokit (>= 4, < 8)
+ public_suffix (>= 3.0, < 6.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
- i18n (0.8.4)
- jekyll (3.4.3)
+ http_parser.rb (0.8.1)
+ i18n (1.15.2)
+ concurrent-ruby (~> 1.0)
+ jekyll (3.10.0)
addressable (~> 2.4)
colorator (~> 1.0)
+ csv (~> 3.0)
+ em-websocket (~> 0.5)
+ i18n (>= 0.7, < 2)
jekyll-sass-converter (~> 1.0)
- jekyll-watch (~> 1.1)
- kramdown (~> 1.3)
- liquid (~> 3.0)
+ jekyll-watch (~> 2.0)
+ kramdown (>= 1.17, < 3)
+ liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
- rouge (~> 1.7)
+ rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- jekyll-avatar (0.4.2)
- jekyll (~> 3.0)
- jekyll-coffeescript (1.0.1)
+ webrick (>= 1.0)
+ jekyll-avatar (0.8.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.2.2)
coffee-script (~> 2.2)
- jekyll-default-layout (0.1.4)
- jekyll (~> 3.0)
- jekyll-feed (0.9.2)
- jekyll (~> 3.3)
- jekyll-gist (1.4.0)
+ coffee-script-source (~> 1.12)
+ jekyll-commonmark (1.4.0)
+ commonmarker (~> 0.22)
+ jekyll-commonmark-ghpages (0.5.1)
+ commonmarker (>= 0.23.7, < 1.1.0)
+ jekyll (>= 3.9, < 4.0)
+ jekyll-commonmark (~> 1.4.0)
+ rouge (>= 2.0, < 5.0)
+ jekyll-default-layout (0.1.5)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-feed (0.17.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-gist (1.5.0)
octokit (~> 4.2)
- jekyll-github-metadata (2.3.1)
- jekyll (~> 3.1)
- octokit (~> 4.0, != 4.4.0)
- jekyll-mentions (1.2.0)
- activesupport (~> 4.0)
+ jekyll-github-metadata (2.16.1)
+ jekyll (>= 3.4, < 5.0)
+ octokit (>= 4, < 7, != 4.4.0)
+ jekyll-include-cache (0.2.1)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-mentions (1.6.0)
html-pipeline (~> 2.3)
- jekyll (~> 3.0)
- jekyll-optional-front-matter (0.1.2)
- jekyll (~> 3.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
- jekyll-readme-index (0.1.0)
- jekyll (~> 3.0)
- jekyll-redirect-from (0.12.1)
- jekyll (~> 3.3)
- jekyll-relative-links (0.4.0)
- jekyll (~> 3.3)
- jekyll-sass-converter (1.5.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.16.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.3)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
+ rubyzip (>= 1.3.0, < 3.0)
+ jekyll-sass-converter (1.5.2)
sass (~> 3.4)
- jekyll-seo-tag (2.2.3)
- jekyll (~> 3.3)
- jekyll-sitemap (1.0.0)
- jekyll (~> 3.3)
- jekyll-swiss (0.4.0)
- jekyll-theme-architect (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-cayman (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-dinky (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-hacker (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-leap-day (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-merlot (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-midnight (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-minimal (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-modernist (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-primer (0.2.1)
- jekyll (~> 3.3)
- jekyll-theme-slate (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-tactile (0.0.4)
- jekyll (~> 3.3)
- jekyll-theme-time-machine (0.0.4)
- jekyll (~> 3.3)
- jekyll-titles-from-headings (0.1.5)
- jekyll (~> 3.3)
- jekyll-watch (1.5.1)
+ jekyll-seo-tag (2.8.0)
+ jekyll (>= 3.8, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.6.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.2.0)
+ jekyll (> 3.5, < 5.0)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-watch (2.2.1)
listen (~> 3.0)
- jemoji (0.8.0)
- activesupport (~> 4.0)
- gemoji (~> 3.0)
+ jemoji (0.13.0)
+ gemoji (>= 3, < 5)
html-pipeline (~> 2.2)
- jekyll (>= 3.0)
- kramdown (1.13.2)
- liquid (3.0.6)
- listen (3.0.6)
- rb-fsevent (>= 0.9.3)
- rb-inotify (>= 0.9.7)
+ jekyll (>= 3.0, < 5.0)
+ json (3.1.0)
+ kramdown (2.4.0)
+ rexml
+ kramdown-parser-gfm (1.1.0)
+ kramdown (~> 2.0)
+ liquid (4.0.4)
+ listen (3.10.1)
+ logger
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.7.0)
mercenary (0.3.6)
- mini_portile2 (2.8.6)
- minima (2.1.1)
- jekyll (~> 3.3)
- minitest (5.10.2)
- multipart-post (2.1.1)
- net-dns (0.9.0)
- nokogiri (1.16.5)
+ mini_portile2 (2.8.9)
+ minima (2.5.1)
+ jekyll (>= 3.5, < 5.0)
+ jekyll-feed (~> 0.9)
+ jekyll-seo-tag (~> 2.1)
+ minitest (6.0.6)
+ drb (~> 2.0)
+ prism (~> 1.5)
+ net-http (0.10.0)
+ net-protocol (>= 0.3.0)
+ uri (>= 0.11.1)
+ net-protocol (0.4.0)
+ timeout
+ nokogiri (1.19.4)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
- octokit (4.21.0)
- faraday (>= 0.9)
- sawyer (~> 0.8.0, >= 0.5.3)
+ nokogiri (1.19.4-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.19.4-x86_64-linux-gnu)
+ racc (~> 1.4)
+ octokit (4.25.1)
+ faraday (>= 1, < 3)
+ sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (2.0.5)
- racc (1.7.3)
- rb-fsevent (0.11.0)
- rb-inotify (0.10.1)
+ prism (1.9.0)
+ public_suffix (5.1.1)
+ racc (1.8.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
ffi (~> 1.0)
- rouge (1.11.1)
- ruby2_keywords (0.0.5)
+ rexml (3.4.4)
+ rouge (3.30.0)
+ rubyzip (2.4.1)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
- sawyer (0.8.2)
+ sawyer (0.9.3)
addressable (>= 2.3.5)
- faraday (> 0.8, < 2.0)
+ faraday (>= 0.17.3, < 3)
+ securerandom (0.4.1)
+ simpleidn (0.2.3)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
- thread_safe (0.3.6)
- typhoeus (0.8.0)
- ethon (>= 0.8.0)
- tzinfo (1.2.10)
- thread_safe (~> 0.1)
- unicode-display_width (1.2.1)
+ timeout (0.6.1)
+ typhoeus (1.7.0)
+ ethon (>= 0.19.0, < 0.20.0)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
+ unicode-display_width (1.8.0)
+ uri (1.1.2)
+ webrick (1.9.2)
PLATFORMS
+ arm64-darwin-23
ruby
+ x86_64-linux
DEPENDENCIES
- github-pages
+ github-pages (~> 232)
+ webrick (~> 1.8)
BUNDLED WITH
- 1.15.1
+ 2.6.9
diff --git a/README.md b/README.md
index b2fd2a6..8976082 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,17 @@

-Grape is an opinionated framework for creating REST-like APIs in Ruby.
-This is the Jekyll source for the site at https://www.ruby-grape.org.
+Jekyll source for [www.ruby-grape.org](https://www.ruby-grape.org), the Grape community website. It highlights released versions, maintained ecosystem projects, and runnable examples.
-Please contribute to this site, see [CONTRIBUTING](CONTRIBUTING.md).
+Release numbers live in `_data/releases.yml` so the homepage, project directory, and documentation links stay consistent. Existing page URLs and the `CNAME` custom domain are preserved.
+
+Use Ruby 3.3 or newer:
+
+```sh
+bundle install
+JEKYLL_ENV=production bundle exec jekyll build --strict_front_matter
+bundle exec jekyll serve
+```
+
+Open [localhost:4000](http://localhost:4000). The bundle remains compatible with GitHub Pages' branch-based deployment; pull requests run a production build.
+
+See [CONTRIBUTING](CONTRIBUTING.md) for release verification, project curation, and contribution instructions.
diff --git a/_config.yml b/_config.yml
index ecff98f..a404c4b 100644
--- a/_config.yml
+++ b/_config.yml
@@ -2,10 +2,11 @@ title:
long: Ruby Grape | An opinionated framework for creating REST-like APIs in Ruby.
short: Ruby Grape
locale: en_US
+url: https://www.ruby-grape.org
sass:
sass_dir: _sass
style: compressed
-gems:
+plugins:
- jekyll-sitemap
kramdown:
input: GFM
@@ -13,7 +14,7 @@ owner:
name: Ruby Grape
avatar: logo.png
info: An opinionated framework for creating REST-like APIs in Ruby.
- email: ruby-grape@googlegroups.com
+ support: https://github.com/ruby-grape/grape/issues
disqus-shortname:
twitter: grapeframework
facebook:
diff --git a/_data/releases.yml b/_data/releases.yml
new file mode 100644
index 0000000..c8ff33f
--- /dev/null
+++ b/_data/releases.yml
@@ -0,0 +1,14 @@
+checked_on: '2026-10-28'
+grape:
+ current: '4.0.1'
+ previous: '3.3.5'
+ legacy: '2.4.0'
+extensions:
+ grape-entity: '1.1.0'
+ grape-rabl: '0.6.0'
+ grape-roar: '0.5.0'
+ grape-active_model_serializers: '2.0.1'
+ grape-swagger: '2.2.0'
+ grape-swagger-rails: '2.0.1'
+ grape-swagger-entity: '0.7.1'
+ grape-swagger-representable: '0.3.0'
diff --git a/_includes/_footer.html b/_includes/_footer.html
index 86bfdee..c8d0b27 100644
--- a/_includes/_footer.html
+++ b/_includes/_footer.html
@@ -1,5 +1,5 @@
© 2010-{{ site.time | date: '%Y' }} {{ site.owner.name }}. |
- Powered by Jekyll based on the Minimal Mistakes theme. |
+ Powered by Jekyll based on the Minimal Mistakes theme. |
Suggest an Edit
diff --git a/_includes/_head.html b/_includes/_head.html
index 18436bd..2f8ec10 100644
--- a/_includes/_head.html
+++ b/_includes/_head.html
@@ -12,8 +12,7 @@
{% endif %}
{% if site.owner.bing-verify %}{% endif %}
-{% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
-
+
{% if site.owner.google.plus %}{% endif %}
diff --git a/_includes/_links.html b/_includes/_links.html
index 1dc4f81..83864d5 100644
--- a/_includes/_links.html
+++ b/_includes/_links.html
@@ -15,14 +15,14 @@
{{ author.info }}
-{% if author.email %} Help{% endif %}
-{% if author.twitter %} Twitter{% endif %}
+{% if author.support %} Help{% endif %}
+{% if author.twitter %} Twitter{% endif %}
{% if author.facebook %} Facebook{% endif %}
{% if author.google.plus %} Google+{% endif %}
{% if author.linkedin %} LinkedIn{% endif %}
{% if author.instagram %} Instagram{% endif %}
{% if author.tumblr %} Tumblr{% endif %}
-{% if author.github %} Github{% endif %}
+{% if author.github %} GitHub{% endif %}
{% if author.stackoverflow %} Stackoverflow{% endif %}
{% if author.lastfm %} Last.fm{% endif %}
{% if author.dribbble %} Dribbble{% endif %}
diff --git a/_includes/_navigation.html b/_includes/_navigation.html
index 7708930..f81e50a 100644
--- a/_includes/_navigation.html
+++ b/_includes/_navigation.html
@@ -6,5 +6,4 @@
{{ site.owner.info }}
-
diff --git a/_includes/_open-graph.html b/_includes/_open-graph.html
index 137ea57..05a3be3 100644
--- a/_includes/_open-graph.html
+++ b/_includes/_open-graph.html
@@ -8,12 +8,12 @@
{% else %}
-
+
{% endif %}
{% if page.excerpt %}{% endif %}
-
+
diff --git a/_sass/typography.scss b/_sass/typography.scss
index 17da453..df4225d 100644
--- a/_sass/typography.scss
+++ b/_sass/typography.scss
@@ -144,3 +144,19 @@ pre {
line-height: 1.5;
overflow-x: auto;
}
+
+#index > table,
+.article-wrap > table {
+ width: 100%;
+ margin-bottom: $indent-var;
+ border-collapse: collapse;
+ table-layout: fixed;
+
+ th, td {
+ padding: .5em;
+ border-bottom: 1px solid $border-color;
+ text-align: left;
+ vertical-align: top;
+ overflow-wrap: anywhere;
+ }
+}
diff --git a/examples/index.md b/examples/index.md
index a5205f0..25b4fb4 100644
--- a/examples/index.md
+++ b/examples/index.md
@@ -5,30 +5,29 @@ tags: [examples]
comments: false
---
-* [Grape API Mounted on Rack w/ Static Pages](https://github.com/ruby-grape/grape-on-rack): A sample Grape app mounted on Rack along with [a blog post](http://code.dblock.org/grape-api-mounted-on-rack-w-static-pages)) explaining how to go about mounting a basic API for a Rack app that can also serve static pages.
-* [Grape API Mounted on Rack w/ Dummy API data](https://github.com/kunovsky/Grape_on_rack_sqlite3): A sample Grape app mounted on Rack using Sqlite3 and a custom ORM.
-* [Grape API Mounted on Rails](https://github.com/ruby-grape/grape-on-rails): A sample Grape app mounted on Rails.
-* [Grape API Mounted behind Goliath](https://github.com/ruby-grape/grape-on-goliath): A sample Grape app mounted behind the Goliath web server.
-* [Grape API Mounted on Padrino](https://github.com/ruby-grape/grape-on-padrino): A sample Grape app mounted on the Padrino web framework.
-* [Grape on Goliath on Heroku with Postgres](https://github.com/djones/grape-goliath-example): An example app using Goliath and Grape running on Heroku with Postgres, using a non-blocking flavor of ActiveRecord and the non-blocking Postgres database adapter.
-* [Goliath + Grape + MongoDB, on Heroku](https://github.com/lgs/GGM): Experimenting with Goliath asyncronous ruby web server framework, Grape APIs, gitwatcher.com data on MongoLAB/MongoDB and Heroku PAAS.
-* [ConfAsk Source](https://github.com/mbleigh/conf_ask): Source for the example Grape application demonstrated in the Grapes of Rapid talk at RubyConf 2010.
-* [A Sample Blogging API](https://github.com/bloudraak/grape-sample-blog-api): An API for an over-simplified blogging system that directly interacts with the database models.
-* [A Grape w/ Warden Sample](https://github.com/dblock/grape_warden): A Grape API mounted on Rack with very simple authentication using Warden.
-* [Grape on Rack w/ ActiveRecord](https://github.com/cutalion/grape-api-example): Grape API mounted on Rack, using ActiveRecord, Roar Representers, Swagger and FDoc.
-* [Grape API v1 inside API v2](https://github.com/dblock/grape-on-rack-v1-inside-v2): Evolve a Grape API v1 into API v2, explain in [this blog post](http://code.dblock.org/evolving-apis-using-grape-api-versioning).
-* [Grape with ROAR](https://github.com/ruby-grape/grape-with-roar): A demo of using Grape with Roar and some non-trivial HAL presenters.
-* [Grape with ROAR](https://github.com/alwinmark/grape-roar-example): Example of Grape using Roar with header versioning, API inheritance and Swagger.
-* [Grape with Paperclip](http://omarfouad.com/blog/2013/08/18/file-upload-api-with-grape-and-rails): Example of a Grape API mounted on Rails, to upload files with Paperclip & pure AJAX.
-* [Grape ToDo API](https://github.com/mateuszkosmider/todo-grape-api): A ToDo application.
-* [Grape w/ Rack-OAuth2](https://github.com/balauru/grape-oauth2-sample): Rack app running a Grape API and secured via OAuth2 via rack-oauth2.
-* [Grape Doorkeeper](https://github.com/sethherr/grape-doorkeeper): Rails, Doorkeeper (OAuth2 provider), Grape & Swagger.
-* [Accept-Version Header example](https://github.com/williamn/notes): Grape app mounted on Rails with `:accept_version_header` versioning strategy.
-* [Rails-Grape-Entity](https://github.com/philcallister/rails-grape-entity): a TODO app with grape and grape-entity.
-* [Grape w/ Rack + MongoDB](https://github.com/thiagogsr/grape-bootstrap): a bootstrap app to help you to start a Grape application without Rails
-* [GitLab](https://gitlab.com/gitlab-org/gitlab-foss): Real world example of working grape API.
-* [Grape API Bootstrap Application](https://github.com/Oliveirakun/grape-bootstrap): Basic API application with ActiveRecord, RSpec, Swagger UI and Docker.
-* [Grape API boilerplate](https://github.com/duffn/grape-api-boilerplate): A full fledged, production ready, and easy to understand API boilerplate.
+These applications have recent maintenance and runnable setup instructions. Check each repository's README and CI matrix for supported versions and required services rather than assuming every example uses the same Ruby, Rack, or Grape release.
+
+### Community Examples
+
+| Example | What it demonstrates |
+|---|---|
+| [grape-on-rack](https://github.com/ruby-grape/grape-on-rack) | Mount a Grape API on Rack alongside static pages. |
+| [grape-on-rails](https://github.com/ruby-grape/grape-on-rails) | Mount a Grape API in Rails. |
+| [grape-on-goliath](https://github.com/ruby-grape/grape-on-goliath) | Run Grape behind the Goliath web server. |
+| [grape-on-padrino](https://github.com/ruby-grape/grape-on-padrino) | Integrate a Grape API with Padrino. |
+| [grape-with-roar](https://github.com/ruby-grape/grape-with-roar) | HAL presenters, JSON writes, and hypermedia clients with Roar. |
+
+#### Grape with Roar: Three Active Variants
+
+* [`master`](https://github.com/ruby-grape/grape-with-roar/tree/master): ActiveModel with generated data and nonpersistent writes.
+* [`with-mongoid`](https://github.com/ruby-grape/grape-with-roar/tree/with-mongoid): MongoDB persistence with string IDs and cursor-based pagination.
+* [`with-activerecord`](https://github.com/ruby-grape/grape-with-roar/tree/with-activerecord): PostgreSQL persistence with integer IDs and page-based pagination.
+
+### Third-Party Applications
+
+* [grape-api-boilerplate](https://github.com/duffn/grape-api-boilerplate): A maintained application skeleton with ActiveRecord, Swagger documentation, authentication, Docker, and tests.
+
+Older one-off demos and abandoned applications are no longer featured as current starting points. See [resources](/resources) for clearly labeled historical talks and tutorials, or [community projects](/projects) for maintained libraries and generators.
### Contribute
diff --git a/index.md b/index.md
index 29fe896..d32dcd7 100644
--- a/index.md
+++ b/index.md
@@ -3,21 +3,34 @@ layout: default
comments: false
---
-[Community Projects](/projects)
-
Grape ecosystem projects.
+## Build APIs with Grape
-[Resources](/resources)
-
Useful resources.
+Grape is a REST-like API framework for Ruby. Build Rack applications or mount an API alongside Rails and other frameworks, with a DSL for routing, parameters, validation, versioning, and content negotiation.
-[Examples](/examples)
-
Working projects using Grape.
+## Latest Releases
-[Users](/users)
-
Who uses Grape?
+Stable releases verified against RubyGems on {{ site.data.releases.checked_on | date: "%B %-d, %Y" }}:
-[History, Team and Contributing](/team)
-
Who maintains Grape? How can I contribute?
+| Release line | Latest version | Minimum Ruby | Documentation |
+|---|---|---|---|
+| Current: 4.x | [{{ site.data.releases.grape.current }}](https://rubygems.org/gems/grape/versions/{{ site.data.releases.grape.current }}) | 3.3 | [Released README](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.current }}/README.md) |
+| Previous: 3.x | [{{ site.data.releases.grape.previous }}](https://rubygems.org/gems/grape/versions/{{ site.data.releases.grape.previous }}) | 3.3 | [Released README](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.previous }}/README.md) |
+| Legacy: 2.x | [{{ site.data.releases.grape.legacy }}](https://rubygems.org/gems/grape/versions/{{ site.data.releases.grape.legacy }}) | 2.7 | [Released README](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.legacy }}/README.md) |
-[Need help?](https://groups.google.com/forum/#!forum/ruby-grape)
-
Please join and use the ruby-grape Google group for all questions.
+Start new applications with the current release. Previous and legacy versions are listed for existing applications, not as a promise of ongoing support. Consult the released README and [upgrade guide](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.current }}/UPGRADING.md) for compatibility and breaking changes; the default branch can document unreleased work.
+```sh
+bundle add grape --version '~> 4.0'
+```
+
+## Explore the Ecosystem
+
+* [Community projects](/projects): Maintained libraries for serialization, documentation, data access, and more, with current extension releases.
+* [Examples](/examples): Actively maintained Rack, Rails, Goliath, Padrino, and HAL applications.
+* [Resources](/resources): Released documentation, API reference, upgrade guidance, and historical talks.
+* [Users](/users): Community-reported adoption, including historical examples.
+* [History, team, and contributing](/team): How Grape is maintained and how to get involved.
+
+## Get Help and Contribute
+
+Use the [Grape issue tracker](https://github.com/ruby-grape/grape/issues) for questions and bug reports. For an extension or example, open an issue in its own repository. Contributions are welcome; see [Grape's contribution guide](https://github.com/ruby-grape/grape/blob/master/CONTRIBUTING.md) and our [code of conduct](/code_of_conduct).
diff --git a/projects/index.md b/projects/index.md
index 6a3ffa8..a477aef 100644
--- a/projects/index.md
+++ b/projects/index.md
@@ -5,102 +5,40 @@ tags: [projects]
comments: false
---
-### Core
-
-* [grape](https://github.com/ruby-grape/grape): An opinionated framework for creating REST-like APIs in Ruby.
-* [ruby-grape.github.io](https://github.com/ruby-grape/ruby-grape.github.io): The ruby-grape community site.
-
-### Entities and Representers
-
-* [grape-entity](https://github.com/ruby-grape/grape-entity): An API focused facade that sits on top of an object model.
-* [grape-rabl](https://github.com/ruby-grape/grape-rabl): Use Rabl templates.
-* [grape-roar](https://github.com/ruby-grape/grape-roar): Use Roar with Grape.
-* [grape-active_model_serializers](https://github.com/ruby-grape/grape-active_model_serializers): Use active_model_serializers.
-* [grape-msgpack](https://github.com/rosylilly/grape-msgpack): Message pack formatter.
-
-### Caching
-
-* [garner](https://github.com/artsy/garner): A RACK-based cache implementation that works with Grape.
-* [grape-cache_control](https://github.com/karlfreeman/grape-cache_control): Cache-Control and Expires helpers.
-* [grape-rails-cache](https://github.com/monterail/grape-rails-cache): HTTP and server side cache integration with Rails.
-* [grape-shaman_cache](https://github.com/wjp2013/grape-shaman_cache): HTTP and server side cache integration for a non-Rails application and Jbuilder.
-* [grape-cache](https://github.com/AlexYankee/grape-cache): Another Grape middleware-style caching gem.
-* [grape-present_cache](https://github.com/u2/grape-present_cache): Grape fragment cache.
-
-### Data
-
-* [otr-activerecord](https://github.com/jhollinger/otr-activerecord): A simple way to use ActiveRecord with your Grape apps.
-* [api-pagination](https://github.com/davidcelis/api-pagination): Pagination with [will_paginate](https://github.com/mislav/will_paginate) or [kaminari](https://github.com/amatsuda/kaminari).
-* [grape-kaminari](https://github.com/monterail/grape-kaminari): [Kaminari](https://github.com/amatsuda/kaminari) paginator integration.
-
-### HTTP
-
-* [grape-cors](https://github.com/adamluzsi/grape-cors): Ruby Grape Api extension with Cross-origin resource sharing.
-* [grape-throttle](https://github.com/xevix/grape-throttle): Provides a simple endpoint-specific throttling mechanism.
-* [grape-batch](https://github.com/c4mprod/grape-batch): Rack middleware which extends Grape::API to support request batching.
-
-### Idempotency
-
-* [grape-idempotency](https://github.com/jcagarcia/grape-idempotency): Gem for supporting idempotency in your Grape APIs.
-
-### Routing
-
-* [grape-route-helpers](https://github.com/reprah/grape-route-helpers): Path helpers for Grape APIs, similar to Rails' named path helpers.
-* [grape-raketasks](https://github.com/reprah/grape-raketasks): Rake task to print out Grape API routes, similar to Rails' rake routes.
-
-### Logging
-
-* [grape_logging](https://github.com/aserafin/grape_logging): Provides simple request logging capabilities (response code, path, parameters, request time, etc).
-* [grape-middleware-logger](https://github.com/ridiculous/grape-middleware-logger): Middleware that logs the request path, endpoint name, parameters, response status, errors and duration.
-
-### Authentication and Authorization
-
-* [grape-doorkeeper](https://github.com/fuCtor/grape-doorkeeper): Grape integration with Doorkeeper.
-* [grape_api_signature](https://github.com/faber-lotto/grape_api_signature): A RACK-Based AWS Style signature authentication for grape API.
-* [wine_bouncer](https://github.com/antek-drzewiecki/wine_bouncer): Doorkeeper OAuth2 authorization middleware for grape APIs.
-* [grape_token_auth](https://github.com/mcordell/grape_token_auth): Grape token auth gem for frontend JavaScript apps ([ng-token-auth](https://github.com/lynndylanhurley/ng-token-auth) compatible).
-* [grape_oauth2](https://github.com/nbulaj/grape_oauth2): Flexible, fully customizable and simple OAuth2 provider for Grape API.
-
-### Documentation
-
-* [grape-swagger](https://github.com/ruby-grape/grape-swagger): Provides an autogenerated documentation for your Grape API.
-* [grape-swagger-rails](https://github.com/ruby-grape/grape-swagger-rails): Swagger UI as Rails Engine for grape-swagger gem.
-* [grape-swagger-ui](https://github.com/kendrikat/grape-swagger-ui): Integrates swagger-ui with the Rails asset pipeline.
-* [grape-apiary](https://github.com/connexio-labs/grape-apiary): Generate an Apiary Blueprint for you Grape API.
-* [grape-swagger-entity](https://github.com/ruby-grape/grape-swagger-entity): Provides grape-entity models parsing for swagger autogenerated documentation.
-* [grape-swagger-representable](https://github.com/ruby-grape/grape-swagger-representable): Provides representable models parsing for swagger autogenerated documentation.
-
-### Monitoring, Performance & Instrumentation
-
-* [grape-librato](https://github.com/seanmoon/grape-librato): Librato metrics.
-* [grape-appsignal](https://github.com/aai/grape-appsignal): Integration with AppSignal.
-* [grape-oink](https://github.com/xevix/grape-oink): Identify routes which significantly increase VM heap size using [oink parser](https://github.com/noahd1/oink).
-* [skylight](https://github.com/skylightio/skylight-ruby): Integration with Skylight, [documentation](https://docs.skylight.io/grape).
-
-### Development
-
-* [grape-reload](https://github.com/AlexYankee/grape-reload): Expiremental approach for providing reloading of Grape-based rack applications in dev.
-
-### Testing
-
-* [grape-entity-matchers](https://github.com/agileanimal/grape-entity-matchers): Shoulda-style matchers to help with testing Grape entities.
-
-### Generators
-
-* [grape-scaffold](https://github.com/icicletech/grape-scaffold): An API scaffold generator for Rails.
-* [grape-api-generator](https://github.com/vinh0604/grape-api-generator): Some rails generators to help quickly bootstrap new Grape API structure.
-* [gris](https://github.com/artsy/gris): A framework (and generators) for building [hal+json hypermedia](http://stateless.co/hal_specification.html) API services using Rack, Grape, Roar, RSpec, and ActiveRecord.
-* [grape-starter](https://github.com/LeFnord/grape-starter) Quickly create a API skeleton using Rack, Grape, Grape Swagger and Sequel or ActiveRecord.
-* [grapethor](https://rawongithub.github.io/grapethor) Grape REST-like API application generator based on Thor.
-
-### Opinionated Frameworks
-
-* [grape_ape_rails](https://github.com/mepatterson/grape_ape_rails): Wrap the various best practices of integrating your API within the context of a Rails app.
-* [napa](https://github.com/bellycard/napa): A simple framework for building Rack based APIs using Grape, Roar and ActiveRecord to feel similar to what you would expect from a Rails app.
-* [grape-transformations](https://github.com/codescrum/grape-transformations): A gem that works with Rails and Grape to organize and make possible the use of multiple Grape entities per model, while at the same time, decoupling them from your models.
+This directory highlights projects with recent substantive maintenance, reviewed on {{ site.data.releases.checked_on | date: "%B %-d, %Y" }}. Each project defines its own Ruby, Rack, Rails, and Grape compatibility; being listed here does not guarantee support for every current version.
+
+### Core and Community Extensions
+
+| Project | Latest release | Purpose |
+|---|---|---|
+| [grape](https://github.com/ruby-grape/grape) | [{{ site.data.releases.grape.current }}](https://rubygems.org/gems/grape/versions/{{ site.data.releases.grape.current }}) | Framework for REST-like APIs in Ruby. |
+| [grape-entity](https://github.com/ruby-grape/grape-entity) | [{{ site.data.releases.extensions['grape-entity'] }}](https://rubygems.org/gems/grape-entity) | Entity-based API representations. |
+| [grape-rabl](https://github.com/ruby-grape/grape-rabl) | [{{ site.data.releases.extensions['grape-rabl'] }}](https://rubygems.org/gems/grape-rabl) | Rabl template rendering. |
+| [grape-roar](https://github.com/ruby-grape/grape-roar) | [{{ site.data.releases.extensions['grape-roar'] }}](https://rubygems.org/gems/grape-roar) | Roar representers and HAL responses. |
+| [grape-active_model_serializers](https://github.com/ruby-grape/grape-active_model_serializers) | [{{ site.data.releases.extensions['grape-active_model_serializers'] }}](https://rubygems.org/gems/grape-active_model_serializers) | ActiveModelSerializers integration. |
+| [grape-swagger](https://github.com/ruby-grape/grape-swagger) | [{{ site.data.releases.extensions['grape-swagger'] }}](https://rubygems.org/gems/grape-swagger) | Swagger/OpenAPI 2.0 documentation generation. |
+| [grape-swagger-rails](https://github.com/ruby-grape/grape-swagger-rails) | [{{ site.data.releases.extensions['grape-swagger-rails'] }}](https://rubygems.org/gems/grape-swagger-rails) | Swagger UI packaged as a Rails engine. |
+| [grape-swagger-entity](https://github.com/ruby-grape/grape-swagger-entity) | [{{ site.data.releases.extensions['grape-swagger-entity'] }}](https://rubygems.org/gems/grape-swagger-entity) | Schema generation from grape-entity models. |
+| [grape-swagger-representable](https://github.com/ruby-grape/grape-swagger-representable) | [{{ site.data.releases.extensions['grape-swagger-representable'] }}](https://rubygems.org/gems/grape-swagger-representable) | Schema generation from Representable models. |
+
+### Maintained Third-Party Projects
+
+| Project | Purpose |
+|---|---|
+| [otr-activerecord](https://github.com/jhollinger/otr-activerecord) | ActiveRecord setup outside Rails. |
+| [api-pagination](https://github.com/davidcelis/api-pagination) | Pagination integration for API applications. |
+| [grape-idempotency](https://github.com/jcagarcia/grape-idempotency) | Idempotent request handling. |
+| [grape_logging](https://github.com/aserafin/grape_logging) | Request logging and instrumentation. |
+| [Skylight](https://github.com/skylightio/skylight-ruby) | Performance monitoring with [Grape integration](https://docs.skylight.io/grape). |
+| [grape-starter](https://github.com/LeFnord/grape-starter) | Generate Rack-based Grape API skeletons. |
+| [grapethor](https://github.com/rawongithub/grapethor) | Thor-based application, API, and endpoint generators. |
+
+See [maintained example applications](/examples) for complete runnable projects. Archived adapters, dormant integrations, and abandoned generators are not recommended here; historical entries remain available in this site's Git history.
### Contribute
Please [contribute a project](https://github.com/ruby-grape/ruby-grape.github.io/blob/master/CONTRIBUTING.md) to [this page](https://github.com/ruby-grape/ruby-grape.github.io/blob/master/projects/index.md).
-We encourage you to develop and support your Grape ecosystem project, expand its maintainers and help a community thrive. Some projects do become quite popular and you might want to donate them to the community at large. If you want to move a project to the [ruby-grape Github organization](https://github.com/ruby-grape) please make a succinct proposal on [the mailing list](https://groups.google.com/forum/#!forum/ruby-grape). A member of the [core team](/team) will make the call.
+Include a short description, canonical repository link, supported versions, and evidence of recent maintenance when proposing an entry. A recent metadata timestamp or automated workflow bump alone is not sufficient.
+
+We welcome maintained ecosystem projects into the [ruby-grape organization](https://github.com/ruby-grape). Propose a transfer in a [website issue](https://github.com/ruby-grape/ruby-grape.github.io/issues) so the maintainers can discuss ownership, releases, and ongoing support.
diff --git a/resources/index.md b/resources/index.md
index 2790038..41178d8 100644
--- a/resources/index.md
+++ b/resources/index.md
@@ -5,7 +5,20 @@ tags: [resources]
comments: false
---
-* [Google Group](https://groups.google.com/group/ruby-grape): Get Grape help here.
+### Current Documentation and Help
+
+* [Released Grape README](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.current }}/README.md): Installation, usage, and compatibility for {{ site.data.releases.grape.current }}.
+* [API reference](https://www.rubydoc.info/gems/grape/{{ site.data.releases.grape.current }}): Versioned reference documentation.
+* [Upgrade guide](https://github.com/ruby-grape/grape/blob/v{{ site.data.releases.grape.current }}/UPGRADING.md): Breaking changes and migration guidance for the current release.
+* [RubyGems versions](https://rubygems.org/gems/grape/versions) and [Git tags](https://github.com/ruby-grape/grape/tags): Published releases, rather than the unreleased version on the default branch.
+* [Grape issues](https://github.com/ruby-grape/grape/issues): Questions and bug reports. Extension-specific issues belong in that extension's repository.
+* [Contributing to Grape](https://github.com/ruby-grape/grape/blob/master/CONTRIBUTING.md): How to contribute code, documentation, and fixes.
+
+### Historical Talks and Tutorials
+
+These resources document earlier versions of Grape and its ecosystem. They are retained for context, not as current installation, authentication, or deployment guidance.
+
+* [Google Group archive](https://groups.google.com/group/ruby-grape): Historical community discussions.
* [Anatomy of a Ruby Gem: Grape](https://vimeo.com/98830727): A screencast digging through the internals of Grape.
* [The Grapes of Rapid](https://www.youtube.com/watch?v=C7beg3OzxC4): RubyConf 2010 presentation about Grape and [slides](https://github.com/downloads/ruby-grape/grape/The%20Grapes%20of%20Rapid.pdf).
* [API Authentication w/ Devise](http://code.dblock.org/grape-api-authentication-w-devise): A tutorial on how to use Grape with Devise/Warden authentication.
diff --git a/team/index.md b/team/index.md
index 531f65f..6249269 100644
--- a/team/index.md
+++ b/team/index.md
@@ -6,48 +6,13 @@ comments: false
---
### History
-Grape was created by [Michael Bleigh](https://github.com/mbleigh) at [Intridea](http://www.intridea.com/) and [made its debut at RubyConf 2010 in New Orleans](http://confreaks.tv/videos/rubyconf2010-the-grapes-of-rapid). [Jerry Cheung](https://github.com/jch) had later joined development. Grape left the Intridea home on August 3rd, 2015 and became an independent project that belongs to the Ruby community. Today Grape is maintained by [Daniel Doubrovkine](https://github.com/dblock) and consists of [numerous projects](/projects), each individually maintained by a growing group that is defined by rough concensus and running code. Grape is used by many thousands of developers and numerous commercial and non-commercial applications. [Grape itself](https://github.com/ruby-grape/grape) had 6,462 stars and 726 forks on Github as of August 3rd, 2015.
+Grape was created by [Michael Bleigh](https://github.com/mbleigh) at Intridea and [made its debut at RubyConf 2010 in New Orleans](https://confreaks.tv/videos/rubyconf2010-the-grapes-of-rapid). [Jerry Cheung](https://github.com/jch) later joined development. Grape left Intridea on August 3, 2015 and became an independent project belonging to the Ruby community.
-### Organization Maintainers
+Today, the [ruby-grape organization](https://github.com/ruby-grape) maintains the framework and [ecosystem projects](/projects) through individual project teams, rough consensus, and running code.
-* [Daniel Doubrovkine, @dblock](https://github.com/dblock), CTO at [Artsy.net](https://www.artsy.net), New York, USA.
-* [Michael Bleigh, @mbleigh](https://github.com/mbleigh): CEO at [DivShot](https://www.divshot.com), Los Angeles, USA.
+### Maintainers and Contributors
-### Individual Project Maintainers
-
-#### [grape](https://github.com/ruby-grape/grape)
-
-* [Dmitry Dedov, @dm1try](https://github.com/dm1try): Minsk, Belarus.
-* [Adam Gotterer, @adamgotterer](https://github.com/adamgotterer): New York, USA.
-* [Vladimir Kochnev, @marshall-lee](https://github.com/marshall-lee): Saint Petersburg, Russia.
-* [Kunpei Sakai, @namusyaka](https://github.com/namusyaka): Tokyo, Japan.
-
-#### [grape-entity](https://github.com/ruby-grape/grape-entity)
-
-* [Vladimir Kochnev, @marshall-lee](https://github.com/marshall-lee): Saint Petersburg, Russia.
-* [Mark Madsen, @idyll](https://github.com/idyll): The Great White North.
-
-#### [grape-swagger](https://github.com/ruby-grape/grape-swagger)
-
-* [Tim Vandecasteele, @tim-vandecasteele](https://github.com/tim-vandecasteele): Gent, Belgium.
-* [Craig S. Cottingham, @CraigCottingham](https://github.com/CraigCottingham): Olathe, Kansas, USA.
-* [Peter Scholz, @le_fnord](https://github.com/LeFnord): Leipzig, Germany.
-* [Kirill Zaitsev, @Bugagazavr](https://github.com/Bugagazavr): Moscow, Russia.
-
-#### [grape-swagger-rails](https://github.com/ruby-grape/grape-swagger-rails)
-
-* [Alexander Logunov, @unloved](https://github.com/unloved): Cheboksary, Russia.
-* [Andrew Schuster, @aschuster3](https://github.com/aschuster3): Atlanta, Georgia, USA.
-
-#### [grape-rabl](https://github.com/ruby-grape/grape-rabl)
-
-* [Piotr Niełacny, @LTe](https://github.com/LTe): Wrocław, Poland.
-
-#### [grape-active_model_serializers](https://github.com/ruby-grape/grape-active_model_serializers)
-
-* [Jonathan Evans, @jrhe](https://github.com/jrhe): London, UK.
-* [Teng Siong Ong, @siong1987](https://github.com/siong1987): San Francisco, USA.
-* [Darren Cheng, @drn](https://github.com/drn): San Francisco, USA.
+See the [organization's public members](https://github.com/orgs/ruby-grape/people), [Grape contributors](https://github.com/ruby-grape/grape/graphs/contributors), and each project's README and contribution guide for its maintainers and collaboration process. These live resources avoid treating an old roster or employer affiliation as current.
### Participating in the Grape Community
diff --git a/users/index.md b/users/index.md
index d975600..dbf1352 100644
--- a/users/index.md
+++ b/users/index.md
@@ -7,15 +7,13 @@ comments: false
### Companies
-There're thousands of companies using Grape, this page was started recently. The more people use Grape and talk about it, the better Grape becomes! Please do [contribute the name of your company](https://github.com/ruby-grape/ruby-grape.github.io/blob/master/CONTRIBUTING.md) to [this page](https://github.com/ruby-grape/ruby-grape.github.io/blob/master/users/index.md).
+These community-reported examples include historical adoption and are not continuously verified current deployments. Please [contribute or update your company's entry](https://github.com/ruby-grape/ruby-grape.github.io/blob/master/CONTRIBUTING.md) with a current public reference.
* [Artsy.net](https://www.artsy.net) has a [public API](https://developers.artsy.net) built with Grape.
* [Devex.com](https://www.devex.com) is a media platform for the global development community. We use Grape internally and expose some endpoints to partners.
* [Screenhero](https://screenhero.com), now sadly defunct, offers screensharing with real-time interactivity. Screenhero made extensive use of Grape for its private and public APIs (*e.g.* as used by Slack's integration).
-* [Meeteor](http://www.meeteor.com), Meeteor is a web app that helps you leverage your meetings to
-drive productivity, build a healthy company culture, and achieve greater
-results. Meeteor uses Grape API to support its mobile and android UIs + various other extensions like extensions for outlook, google calendar, hipchat, slack.
-* [GitLab](https://gitlab.com), GitLab is an open-core web application that includes issue tracking, merge requests, Continuous Integration, and more. Community Edition is [fully open source](https://gitlab.com/gitlab-org/gitlab-ce) and includes an API built using Grape.
+* [Meeteor](http://www.meeteor.com) reported using Grape for its mobile APIs and meeting-productivity integrations.
+* [GitLab](https://gitlab.com) is an open-core web application with issue tracking, merge requests, Continuous Integration, and an API built using Grape. See the [source repository](https://gitlab.com/gitlab-org/gitlab).
* [Mapotempo](https://www.mapotempo.com/) publishes Open Source route planning and optimization solutions. Grape is used on the majority of the company projects which expose an API.
### Contribute