Jekyll meets Bootstrap - and makes a lot of friends. J1 Theme combines
the best of Open Source software for the Web and the Web site generator
Jekyll
. J1 is Open Source, and so are the packaged modules - no pain for
private or professional use. Explore this site to learn what's possible if
you go to the Jekyll Way.
Create powerful modern Static Webs: Secure, Flexible and Fast.
Have fun!
The template comes with a Web included, a skeleton for your new Web site. This Web is called the Starter Web, a general-purpose Website scaffold to be modified for your needs. The built-in Starter Web can be visited live at starter.jekyll.one.
Have fun exploring what a modern static web, a Jekyll site can do!
The template combines the best free software for the web. Jekyll One Theme is Open Source and the modules included are free to use as well. No license issues for private or professional use.
J1 is supported on all current x64-based OS:
Note that 32-bit versions (x32) are generally not supported for all platforms.
To run the Development System for J1 Theme, the following languages and tools expected to be in place with your OS:
<1> Required only for full Jupyter Notebook support. <2> Required only if J1 Projects should be managed as repos.
NOTE: More current or older versions may work, but not tested.
For some of the components J1 is using, a working C/C++ development environment is needed to compile platform-specific libraries. Ensure that all dev packages are installed for your OS (Linux, OSX, or Windows).
For Ruby on Windows, a installation using RubyInstaller is recommended. A current Ruby of version 3.1 is available at the RubyInstaller V31 site. Note, to automatically install a development environment for Ruby on Windows, a version of Ruby should be installed that is already bundled with a DEVKIT (MSYS2 toolchain).
In order to install all required development components on e.g. Ubuntu you run:
sudo apt-get -y install \
gcc g++ make \
autoconf bison build-essential \
libssl-dev \
libyaml-dev \
libreadline-dev \
zlib1g-dev \
libncurses5-dev \
libffi-dev \
libgdbm-dev
To install the required languages and tools, if not already in place, the following commands can be used to do so:
sudo apt-get -y install \
curl \
git-all \
nodejs \
ruby
Additionally, for Ruby and NodeJS the dev-packages are to be installed to make all header files available for a working C/C++ development environment:
sudo apt-get -y install \
nodejs-dev \
ruby-dev
Note that priviliged (administrative) user rights are needed to install system-wide software packages for Ruby and the OS.
For all OSX system, the installation of the Apple Developer Tools (XCode) is expected. Development tools like Ruby, NodeJS, or the bash comes with the OS are not recommended to use. Most of the software comes in quite old versions and therefor unusable for J1 development.
To install recommended versions, the easiest way to install the missing software is Homebrew. A lot of helpful information how to manage package installations using Homebrew can be found on the internet.
Beside the base installation of the recommend tools, all other recommendations for Linux systems are for OSX the same.
If Ruby and NodeJS are in place, some packeages are to be upgraded to more current versions. Install all packages system-wide with their respective product installation pathes.
Install latest bundler for Ruby:
gem install bundler --no-document
Install latest RubyGems for Ruby:
gem install rubygems-update --no-document
update_rubygems --no-document
gem update --system
NodeJS comes with NPM pre-installed. The native CLI for the NodeJS package
management is npm
. Besides npm
there's another quite handy CLI for NPM
available: Yarn.
The CLI yarn
is developed at Facebook and can be used as a replacement
for npm
. From a top-level perspective, both package management clients
behave pretty much the same. The syntax yarn
uses is shorter in writing,
making the command-line look a bit more natural. Therefore, we prefer to
use yarn
.
NOTE: Yarn adds some additional features to the NodeJS package management implemented for the needs at Facebook. To use J1 Theme, those add-ons are neither needed nor used.
Install latest NPM and Yarn packages for NodeJS:
npm install -g npm@latest
npm install -g yarn@latest
Managing J1 Theme projects is very simple:
You can install J1 Theme in two ways:
The recommended method to install J1 is using the the Ruby Gem. If you're using Git already, cloning the Repo at Github may an option.
It is highly recommended to install all project-related Ruby GEMs so-called userized. The user install option of the RubyGems CLI gem will install all requested Ruby Gems in the home directory of a user. Installing userized prevents polluting the System Ruby Installation by packages only needed by specific users or projects.
IMPORTANT: If you're on Linux (Unix), a system-wide installation of Ruby GEMs requires elevated user rights (root). Userized installations of Ruby packages can be done by all users without having elevated user rights.
J1 Theme uses the user install option internally by default.
All depended Ruby GEMs are installed in the user's home directory in
folder .gem
.
Prior to install the J1 Gem, make sure that a .gem
folder already exists
in your home directory.
On Windows, run:
mkdir %HOMEDRIVE%%HOMEPATH%\.gem
On Unix/linux, run:
md $HOME/.gem
The latest version of J1 Theme is available at RubyGems or can installed by the RubyGems CLI gem:
gem install j1-template --no-document --user-install
NOTE The installation of the Gem will resolve all dependencies and downloaad|install all dpended Ruby GEMs as required (userized).
The Repo for the latest version of J1 Theme is published on Github. You can get it by cloning the repository using Git`:
git clone https://github.com/jekyll-one/j1-starter
The repo gets written to folder j1-starter
. Have a look and
browse the folder. You'll see a structure like this:
General J1 Project Repo structure:
├──── j1-starter
│ └─── _data
| └─── _includes
│ └─── _plugins
│ └─── assets
│ └─── collections
│ └─── dot.bundle
│ └─── pages
├──── dot.gitattributes
├──── dot.gitignore
├──── dot.ruby-version
├──── dot.nojekyll
├──── dot.ruby-version
├──── favicon.ico
├──── Gemfile
├──── index.html
├──── LICENSE.md
├──── package.json
└──── README.md
NOTE: It is recommended to rename the folder j1-template-starter
of
the cloned repo to a more specific (project) name.
All development tasks are defined as NPM scripts with the project
config file package.json
. For your convenience, the J1 Theme Gem
comes with a build-in CLI j1 run all project-related commands;
no need to learn npm or how to manage NodeJS projects.
The setup procedure depends on how you installed J1 Theme. If you are using the J1 GEM as recommended, you need to create a personal project first. If you have cloned the J1 Theme Repo from Github, the project is already created by the clone's folder and you can skip the creation of a project; continue on section Initialize a J1 Project.
First, you should make a folder holding all your J1 projects. On Windows, run:
mkdir %HOMEDRIVE%%HOMEPATH%\j1-projects
Managing J1 Projects is simple: all tasks you need are run by the buildin CLI j1. To create a new project inside the projects folder, run:
cd %HOMEDRIVE%%HOMEPATH%\j1-projects && j1 generate my-starter
This command creates a initial project in folder my-starter.
2023-02-28 18:12:08 - GENERATE: Running bundle install in C:/Users/xxx/j1-projects/my-starter ...
2023-02-28 18:12:08 - GENERATE: Install bundle in USER gem folder ~/.gem ...
2023-02-28 18:12:12 - GENERATE: Fetching gem metadata from https://rubygems.org/..........
2023-02-28 18:12:12 - GENERATE: Resolving dependencies...
2023-02-28 18:12:12 - GENERATE: Using bundler 2.3.7
...
2023-02-28 18:12:12 - GENERATE: Using j1-template 2024.2.1
2023-02-28 18:12:12 - GENERATE: Bundle complete! 31 Gemfile dependencies, 78 gems now installed.
2023-02-28 18:12:12 - GENERATE: Bundled gems are installed into `../../.gem`
2023-02-28 18:12:12 - GENERATE: C:/Users/xxx/.gem/ruby/3.1.0;C:/DevTools/Ruby31-x64/lib/ruby/gems/3.1.0;
2023-02-28 18:12:13 - GENERATE: Install patches in USER gem folder ~/.gem ...
2023-02-28 18:12:13 - GENERATE: Install patches on path C:/Users/xxx/.gem/ruby/3.1.0 ...
2023-02-28 18:12:13 - GENERATE: Patches already installed, skip install.
2023-02-28 18:12:13 - GENERATE: Generated Jekyll site installed in folder C:/Users/xxx/j1-projects/my-starter
2023-02-28 18:12:13 - GENERATE: To setup the site, change to the project folder C:/Users/xxx/j1-projects/my-starter and run: j1 setup
To make a project usable, is has to be initialzed first. This is needed
only once after you create a new project.
On Windows, run the setup
task like so:
cd %HOMEDRIVE%%HOMEPATH%\j1-projects\my-starter && j1 setup
NOTE: While initializing a project, the J1 Theme Gem is downloaded as a dependecy (if not already installed). For the users cloned the J1 Template repo (as a project), the J1 GEM will be installed and all j1 commands are available as well.
Check consistency of the J1 project ...
2023-02-28 18:17:47 - SETUP: Running bundle install in C:/Users/xxx/j1-projects/my-starter ...
2023-02-28 18:17:47 - SETUP: Install bundle in USER gem folder ~/.gem ...
...
2023-02-28 18:17:48 - SETUP: Bundle complete! 31 Gemfile dependencies, 78 gems now installed.
2023-02-28 18:17:48 - SETUP: Bundled gems are installed into `../../.gem`
2023-02-28 18:17:48 - SETUP: Install patches in USER gem folder ~/.gem ...
2023-02-28 18:17:48 - SETUP: Install patches on path C:/Users/xxx/.gem/ruby/3.1.0 ...
2023-02-28 18:17:48 - SETUP: Initialize the project ...
2023-02-28 18:17:48 - SETUP: Be patient, this will take a while ...
2023-02-28 18:17:49 - SETUP:
2023-02-28 18:17:49 - SETUP: > [email protected] setup C:\Users\xxx\j1-projects\my-starter
2023-02-28 18:17:49 - SETUP: > npm --silent run setup-start && npm --silent run setup-base && run-s -s setup:*
2023-02-28 18:17:49 - SETUP:
2023-02-28 18:17:50 - SETUP: Setup project for first use ..
2023-02-28 18:17:50 - SETUP: Bootstrap base modules ..
2023-02-28 18:18:05 - SETUP: done.
2023-02-28 18:18:05 - SETUP: Configure environment ..
2023-02-28 18:18:09 - SETUP: done.
2023-02-28 18:18:09 - SETUP: Create project folders ..
...
2023-02-28 18:18:25 - SETUP: done.
2023-02-28 18:18:26 - SETUP: Detect OS ..
2023-02-28 18:18:27 - SETUP: OS detected: Windows_NT
2023-02-28 18:18:28 - SETUP: Build site incremental ..
2023-02-28 18:18:31 - SETUP: Configuration file: C:/Users/jadams/j1-projects/my-starter/_config.yml
2023-02-28 18:18:34 - SETUP: Source: C:/Users/jadams/j1-projects/my-starter
2023-02-28 18:18:34 - SETUP: Destination: C:/Users/jadams/j1-projects/my-starter/_site
2023-02-28 18:18:34 - SETUP: Incremental build: enabled
2023-02-28 18:18:34 - SETUP: Generating...
2023-02-28 18:18:36 - SETUP: J1 Lunr: creating search index ...
2023-02-28 18:18:38 - SETUP: J1 Lunr: finished, index ready.
2023-02-28 18:18:38 - SETUP: J1 Paginator: autopages, disabled|not configured
2023-02-28 18:18:38 - SETUP: J1 Paginator: pagination enabled, start processing ...
2023-02-28 18:18:38 - SETUP: J1 Paginator: finished, processed 2 pagination page|s
2023-02-28 18:19:28 - SETUP: done in 53.925 seconds.
2023-02-28 18:19:28 - SETUP: Auto-regeneration: disabled. Use --watch to enable.
2023-02-28 18:19:28 - SETUP: .. build finished.
2023-02-28 18:19:29 - SETUP: To open the site, run: yarn site
2023-02-28 18:19:29 - SETUP: Initializing the project finished successfully.
2023-02-28 18:19:29 - SETUP: To open your site, run: j1 site
After the setup process has been finished, you can run a project by running
j1 site
. Finally, the buildin Starter Web get openend in your default
browser. Let's start the journey ...
cd %HOMEDRIVE%%HOMEPATH%\j1-projects\mystarter && j1 site
Check consistency of the J1 project ...
Check setup state of the J1 project ...
2023-02-28 18:26:18 - SITE: Starting up your site ...
2023-02-28 18:26:18 - SITE:
2023-02-28 18:26:18 - SITE: > [email protected] j1-site C:\Users\jadams\j1-projects\my-starter
2023-02-28 18:26:18 - SITE: > run-p -s j1-site:*
2023-02-28 18:26:18 - SITE:
2023-02-28 18:26:20 - SITE: Startup UTILSRV ..
2023-02-28 18:26:21 - SITE: Log file exists : messages_2023-02-28
2023-02-28 18:26:21 - SITE: Stop the server. Exiting ...
2023-02-28 18:26:21 - SITE: Reset file: messages_2023-02-28
2023-02-28 18:26:21 - SITE: Configuration file: C:/Users/jadams/j1-projects/my-starter/_config.yml
2023-02-28 18:26:24 - SITE: Source: C:/Users/jadams/j1-projects/my-starter
2023-02-28 18:26:24 - SITE: Destination: C:/Users/jadams/j1-projects/my-starter/_site
2023-02-28 18:26:24 - SITE: Incremental build: enabled
2023-02-28 18:26:24 - SITE: Generating...
2023-02-28 18:26:27 - SITE: J1 Lunr: creating search index ...
2023-02-28 18:26:28 - SITE: J1 Lunr: finished, index ready.
2023-02-28 18:26:28 - SITE: J1 Paginator: autopages, disabled|not configured
2023-02-28 18:26:28 - SITE: J1 Paginator: pagination enabled, start processing ...
2023-02-28 18:26:28 - SITE: J1 Paginator: finished, processed 2 pagination page|s
2023-02-28 18:26:35 - SITE: done in 10.408 seconds.
2023-02-28 18:26:38 - SITE: Auto-regeneration: enabled for '.'
2023-02-28 18:26:39 - SITE: LiveReload address: http://localhost:35729
2023-02-28 18:26:39 - SITE: Server address: http://localhost:40000/
2023-02-28 18:26:39 - SITE: Server running... press ctrl-c to stop.
For some reason, it may needed to re-create an existing project. The task
rebuild
rebuild all documents (pages and posts) from the scratch but
leaves the base project files untouched.
To reset a project, run (inside the project folder):
j1 reset
Check consistency of the J1 project ...
Check setup state of the J1 project ...
REBUILD: Rebuild the projects website ...
REBUILD: Be patient, this will take a while ...
2023-02-28 18:45:09 - REBUILD:
2023-02-28 18:45:09 - REBUILD: > [email protected] rebuild C:\Users\xxx\j1-projects\my-starter
2023-02-28 18:45:09 - REBUILD: > run-s -s rebuild:* && run-s -s post-rebuild:*
2023-02-28 18:45:09 - REBUILD:
2023-02-28 18:45:10 - REBUILD: Rebuild site incremental ..
2023-02-28 18:45:10 - REBUILD: Clean up site files ..
2023-02-28 18:45:12 - REBUILD: Configuration file: C:/Users/xxx/j1-projects/my-starter/_config.yml
2023-02-28 18:45:13 - REBUILD: Cleaner: Removing _site...
2023-02-28 18:45:13 - REBUILD: Cleaner: Removing ./.jekyll-metadata...
2023-02-28 18:45:13 - REBUILD: Cleaner: Removing ./.jekyll-cache...
2023-02-28 18:45:14 - REBUILD: Cleaner: Nothing to do for .sass-cache.
2023-02-28 18:45:17 - REBUILD: Configuration file: C:/Users/xxx/j1-projects/my-starter/_config.yml
2023-02-28 18:45:19 - REBUILD: Source: C:/Users/xxx/j1-projects/my-starter
2023-02-28 18:45:19 - REBUILD: Destination: C:/Users/xxx/j1-projects/my-starter/_site
2023-02-28 18:45:19 - REBUILD: Incremental build: enabled
2023-02-28 18:45:19 - REBUILD: Generating...
2023-02-28 18:45:21 - REBUILD: J1 Lunr: creating search index ...
2023-02-28 18:45:23 - REBUILD: J1 Lunr: finished, index ready.
2023-02-28 18:45:23 - REBUILD: J1 Paginator: autopages, disabled|not configured
2023-02-28 18:45:23 - REBUILD: J1 Paginator: pagination enabled, start processing ...
2023-02-28 18:45:23 - REBUILD: J1 Paginator: finished, processed 2 pagination page|s
2023-02-28 18:46:11 - REBUILD: done in 52.09 seconds.
2023-02-28 18:46:11 - REBUILD: Auto-regeneration: disabled. Use --watch to enable.
2023-02-28 18:46:12 - REBUILD: .. rebuild finished.
2023-02-28 18:46:12 - REBUILD: To open the site, run: yarn site
REBUILD: The projects website has been rebuild successfully.
REBUILD: To open the site, run: j1 site
To start a project from the beginning, you can reset the system to the
factory state. The task reset
does the resetting work for you
and cleans up each and everything except the Git repo and the modules
folder node_modules
stored in the project root. Both are kept untouched
by a reset.
j1 reset
The cleanup runs some tasks for the root folder and in parallel sub-tasks using Lerna for all packages:
Check consistency of the J1 project ...
Check setup state of the J1 project ...
2023-02-28 18:29:07 - RESET: Reset the project to factory state ...
2023-02-28 18:29:07 - RESET: Be patient, this will take a while ...
2023-02-28 18:29:08 - RESET:
2023-02-28 18:29:08 - RESET: > [email protected] reset C:\Users\xxx\j1-projects\my-starter
2023-02-28 18:29:08 - RESET: > run-s -s reset:*
2023-02-28 18:29:08 - RESET:
2023-02-28 18:29:08 - RESET: Reset project to factory state ..
2023-02-28 18:29:09 - RESET: Clean up base modules ..
2023-02-28 18:29:10 - RESET: Clean up site files ..
2023-02-28 18:29:12 - RESET: Configuration file: C:/Users/xxx/j1-projects/my-starter/_config.yml
2023-02-28 18:29:13 - RESET: Cleaner: Removing _site...
2023-02-28 18:29:13 - RESET: Cleaner: Removing ./.jekyll-metadata...
2023-02-28 18:29:13 - RESET: Cleaner: Removing ./.jekyll-cache...
2023-02-28 18:29:13 - RESET: Cleaner: Nothing to do for .sass-cache.
2023-02-28 18:29:14 - RESET: Clean up projects files ..
2023-02-28 18:29:14 - RESET: Remove bundle config folder ..
2023-02-28 18:29:15 - RESET: Remove log folder ..
2023-02-28 18:29:15 - RESET: Remove etc folder ..
2023-02-28 18:29:15 - RESET: Remove various log files ..
2023-02-28 18:29:16 - RESET: Remove lock files ..
2023-02-28 18:29:16 - RESET: Clean up utility server ..
2023-02-28 18:29:21 - RESET: done.
2023-02-28 18:29:21 - RESET: The project reset finished successfully.
2023-02-28 18:29:21 - RESET: To setup the project, run: j1 setup
Start your work from the scratch by running the setup
task again:
j1 setup
Happy Jekylling!