LoopBack community site, http://loopback.io. This website now includes the LoopBack documentation.
NOTE: The website is served from the gh-pages
branch.
This repository is provided under the MIT License.
To preview the website locally:
-
Install Ruby and Bundler if you don't have them already.
-
Clone this repo (you might use the SSH URL instead of HTTPS).:
git clone https://github.com/loopbackio/loopback.io.git
cd
to the repository directory and run the following command:
$ cd loopback.io
$ bundle install
Bundler will look in the Gemfile for which gems to install. The github-pages
gem includes the same version of Jekyll and other dependencies as used by GitHub Pages, so that your local setup mirrors GitHub Pages as closely as possible.
Run Jekyll using the following command:
$ npm start
Then, load http://localhost:4001/ on your browser.
NOTE: The docs part will be at http://localhost:4001/doc. It's not yet linked from the main "overview" part of the site, but will be once we launch (RSN).
Jekyll uses a variant of Markdown known as Kramdown.
Jekyll uses the Liquid template engine for templating.
The documentation incorporates README files from a number of LoopBack example repositories. We use the get-readmes utility to fetch the README files directly from GitHub. Here is how to update the READMEs
npm install
(first time/setup only)npm run fetch-readmes
From there, the README markdown files are incorporated into documentation articles using the standard Jekyll "include" syntax as follows (for example):
---
title: "Angular example app"
lang: en
layout: readme
source: loopback-example-angular
keywords: LoopBack
tags:
sidebar: lb2_sidebar
permalink: /doc/en/lb2/Angular-example-app.html
summary: A brief tutorial on creating an Angular client app using the Loopback AngularJS SDK.
---
{% include readmes/loopback-example-angular.md %}
We use a node script update-lb4-docs
to copy over contents from loopback-next
repository using @loopback/docs
package. The script is responsible for copying
over the markdown documentation and related tables, as well as the sidebar used
for LoopBack 4 content. The changes are then picked up as part of Travis CI's
builds along with README update scripts and deployed to GitHub Pages once
successful. The upgrade-swagger-ui.js
script is also run as part of the
builds. If you'd like to make documentation changes for LoopBack 4, please do so
on its own repository.
There is an additional npm script
that "lints" the readmes for markdown formatting problems. It is currently "experimental", see this issue for more info.
You can run this script thus:
$ npm run lint-readmes
Docs Search is powered by IBM Watson Discovery.
There are two parts of work to get this working:
-
The Discovery service is one of the services provided by IBM Cloud. A collection is created with loopback.io as the URL we'd like to sync.
-
The IBM Cloud function is used for the search function calling the discovery service and parse the output in the form that the LoopBack web site understands.
Each documentation page has a search bar the top. The search will redirect the
user to a /search
page to show the results. The results are retrieved from a
IBM Cloud Function that acts as a proxy
to protect Watson Discovery credentials. The search bar also contains a hidden
form input that sets the sidebar
value and Watson Discovery filters content
based on this value to return context aware results. Ex: Searching for the word
controller
from a LoopBack 4 documentation page will return LoopBack 4 results.
To search all documents you can search from the /search
page. Community Docs
and Contribution docs are included in all results.
The code for the Cloud function can be found here. It is deployed to the same account and must be edited directly in IBM Cloud (formerly BlueMix). The repository exists to document code changes and have peer reviews. Credentials for accessing the Cloud Function can be obtained from Diana Lau OR you can ask them to re-deploy changes.
You can deploy the code on your own IBM Cloud account and upload the URL for Discovery in search.html.
This project uses DCO. Be sure to sign off
your commits using the -s
flag or adding Signed-off-By: Name<Email>
in the
commit message.
Example
git commit -s -m "feat: my commit message"
Also see the Contributing to LoopBack documentation to get you started.