This repo generates the content served on https://janusgraph.org
To make changes, you should install the local setup and once you're ready to submit changes, please provide a pointer to a previewable version via your published fork on GitHub. See instructions below for both of these below.
The site is a single page built with Jekyll and hosted on GitHub Pages. It uses no CSS or JavaScript frameworks.
| Path | Purpose |
|---|---|
_config.yml |
Site metadata, project links, social links and the optional upcoming_events list |
_data/users.yml |
Organizations shown in the Trusted in production logo grid |
_data/presentations.yml |
Talks and meetup recordings shown under Presentations |
_layouts/default.html |
Page skeleton; pulls in the section includes below |
_includes/*.html |
One include per page section (hero, features, ecosystem, events, presentations, users, community, footer, ...) |
_includes/logo.svg, _includes/logomark.svg |
Inline copies of the official logos that follow the light/dark theme |
_includes/icons.html |
SVG icon sprite |
css/main.css |
The stylesheet (design tokens, layout, light and dark themes) |
css/fonts/ |
Self-hosted Inter font subsets |
js/main.js |
Theme switcher, mobile navigation, scroll reveal, copy button and live GitHub stats |
img/janusgraph-logo.svg, img/janusgraph-logomark.svg |
Official logos from JanusGraph/logos |
img/logos/ |
Logos of production users |
-
Add a production user: put the logo in
img/logos/(SVG preferred) and add an entry at the top of_data/users.yml:- name: Example Corp url: https://example.com logo: example.svg
-
Add a presentation: add an entry at the top of
_data/presentations.ymlwithtitle,url,speakers,date(YYYY-MM-DD) andtype(videoorslides). -
Announce an event: uncomment and fill in
upcoming_eventsin_config.yml. The Upcoming events section only renders when the list is non-empty. -
Regenerate the social preview image (
img/janusgraph-social.png, used for Open Graph / Twitter cards): open_tools/social-card.htmlin a browser and capture it at 1200×630, for example with Playwright:npx playwright screenshot --viewport-size=1200,630 _tools/social-card.html img/janusgraph-social.png
While developing the site, it is very helpful to have fast turnaround between
making changes and seeing how they work via Jekyll—you don't want to wait for a
git push + GitHub build cycle before seeing any changes. Thus, we want to
preview changes that we make using a local setup.
-
Install Ruby and Bundler
-
Install the necessary Ruby Gems for this repo into
.bundle:make install
-
Run Jekyll locally to serve the site:
make serve
-
Visit http://localhost:4000/ to see the site. Now, any changes you make to the templates, data files or stylesheet will be instantly previewable in your browser with a refresh.
Alternatively, build with the same Docker image GitHub Pages uses, without installing Ruby:
make docker-buildThe generated site is written to _site/.
Every pull request is also built by the Build site
GitHub Actions workflow, which uses the same image and uploads the result as
an artifact. Production publishing is done by GitHub Pages from master.
Before pushing the site to production, and a great way to demonstrate proposed changes during code review, you should push the changes to your personal GitHub fork as follows:
-
Fork the website repo to your account via GitHub
- note: the
masterbranch of this repo is the one that is auto-published to https://janusgraph.org soon after a commit
- note: the
-
Clone your copy of the repo locally
$ git clone git@github.com:[USERNAME]/janusgraph.org.git $ cd janusgraph.org $ git remote add upstream git@github.com:JanusGraph/janusgraph.org.git -
Create a new branch for your changes, based on the latest changes in the
masterbranch of the upstream repo:$ git checkout master $ git pull upstream master --ff-only $ git checkout -b [MY-BRANCH-NAME]Note: the
--ff-onlyflag enforces a "fast-forward" only merge, which guarantees that yourmasterbranch is a clean copy of the upstreammasterbranch. If yourmasterbranch cannot be fast-forwarded to match the upstreammaster, this command will fail. It is recommended to never submit yourmasterbranch as a base of a pull request and only keep it to sync with upstream.This process ensures that your pull requests are always minimal and simple to review. This approach is also recommended when contributing to other git repos as well.
Always create a new branch for each new pull request; never push from your own
masterbranch to a new PR, keep a cleanmasterbranch so that it stays in sync with upstream.Note:
[MY-BRANCH-NAME]here is a placeholder for a brand-new branch name that does not yet exist in your repo; the command above will create this new branch for you. -
Make the changes you need and commit them to this branch.
-
Push your feature branch to the
gh-pagesbranch on your fork on GitHub, so that everyone will be able to see a preview of your change:$ git push -f origin [MY-BRANCH-NAME]:gh-pagesNote:
[MY-BRANCH-NAME]is the placeholder for the same branch name as selected above; this branch must exist at the time of running the above command.To simplify this process, you can also run:
$ make preview-via-githubwhich actually runs the following command:
$ git push -f origin $(git rev-parse --abbrev-ref HEAD):gh-pageswhich automatically discovers the current branch you're on and pushes that to GitHub, using the
gh-pagesbranch. -
Visit the "Settings" page for your fork on GitHub and make the
gh-pagesauto-publishable- note: after you make this change, you will get an email that you could not publish this site because the CNAME of janusgraph.org is already taken by another site (i.e., the canonical repo). You will also see a warning about this on the GitHub UI. Both of these warnings are safe to ignore because we are trying to create a personal test copy, not update the live site.
-
Now you can visit your site at
https://[your-username].github.io/janusgraph.org/to see your changes -
Now you can push your
[MY-BRANCH-NAME]to your fork to open a pull request using it.Important: do not use either
gh-pagesormasterbranch to submit pull requests; use a separate feature branch for every change and every pull request, and delete each of those branches after the pull request is either merged or abandoned. -
Any changes you continue to push to your
gh-pagesbranch will keep updating live on GitHub after a few minutesNote: you will get warning emails from GitHub saying that your repo is attempting to publish to the URL
janusgraph.orgwhich is already taken. This is fine; you can ignore these emails — it is saying that you cannot publish directly to that hostname from your private repo, which is correct.
-
First, update your
masterbranch and pick up the latest changes, run:$ git checkout master $ git pull upstream master --ff-onlyNote: the
--ff-onlyflag enforces a "fast-forward" only merge, which guarantees that yourmasterbranch is a clean copy of the upstreammasterbranch. If yourmasterbranch cannot be fast-forwarded to match the upstreammaster, this command will fail. It is recommended to never submit yourmasterbranch as a base of a pull request and only keep it to sync with upstream.This process ensures that your pull requests are always minimal and simple to review. This approach is also recommended when contributing to other git repos as well.
-
Then, update your feature branch via
git rebaseto avoid including other users' changes into your branch, which makes CLA verification harder:$ git checkout [MY-FEATURE-BRANCH] $ git rebase master $ git push -f origin
This repo uses a combination of Apache 2.0 and
CC-BY-4.0; see LICENSE.txt for details.
Third-party assets bundled with the site:
- Inter typeface — SIL Open Font License 1.1
(
css/fonts/LICENSE-Inter.txt) - Interface icons adapted from Feather — MIT
- Brand marks from Simple Icons — CC0 1.0
- User logos in
img/logos/are trademarks of their respective owners