A static documentation site that can be forked and updated for any project. Examples include the NYC Benefits Platform, Benefits Screening API documentation.
The site source is written in JavaScript (ES Module format), Dart Sass, and Twig templates. The source is compiled by the Patterns CLI (more details below) with some custom commands and configuration.
-
Fork this repository. A public facing repository is required for the CMS to pull content from.
-
Clone the repository locally and run the NPM commands below or start editing the content in the
content
branch following the content management instructions.
Install dependencies by running the following command;
$ npm i
Then start the development server and asset watcher;
$ npm start
This will set the NODE_ENV
to development
which tells the development server to watch for specific file changes in the ./src directory (the CLI will print the globing patterns that are being watched) and compile views and assets into the ./dist/drafts directory. The site's main script will pull content in Markdown files from the drafts
content branch of this repository.
The drafts directory serves as the local development site preview and the content preview in the production site. See Content Management below for more details.
The public-facing site is stored in the root of the ./dist directory. To preview the public-facing site locally and view published content in the content
branch use the following command;
$ npm run production
This will set the NODE_ENV
to production
but and run the same development server and source file watcher/compiler.
The site uses the Patterns CLI, also maintained by @nycopportunity, to build source files from the ./src directory to the ./dist directory. All of the commands from the CLI are available for compiling different asset types. It uses the Patterns Twig Plugin in place of the Slm Lang compiler for templating.
The CLI is configured by scripts in the ./config directory (each command in the CLI can have local project configuration). The build paths for production
and development
are set in the ./config/global.js
Custom commands that extend the Patterns CLI are stored in the ./bin directory.
The path to the content CDN is stored in the package.json. This is where the content
branch is mapped to the production
and the drafts
branch is mapped to development
.
After changes are made, create a pull request to migrate changes from your feature branch back into env/development
. When the changes are approved by another developer create a merge commit or squash and merge (preferably squash for feature branches). Create and merge/squash another pull request from env/development
into main
.
The public-facing site (and drafts directory for content managers) is published from the ./dist directory to the gh-pages
branch of this repository. To publish changes check out the main
branch. Tag the repository with the latest version using the npm version {{ major / minor / patch }}
command. For example;
$ npm version minor
Then run the ghpages
npm script build in production mode and then deploy to the GitHub Pages site.
$ npm run ghpages
The content is managed in the content
branch using Markdown files. To edit these files and move them from draft to published follow these instructions;
Content is drafted in the drafts
branch.
-
Viewing files. View the table of contents in the
drafts
README file to find a link to each page's content source. -
Editing files. When you are on the file's page you will see the rendered Markdown preview. Click the pencil icon in the top right corner, just above the preview. Once you are in edit mode you can make and preview changes using GitHub Flavored Markdown syntax. View GitHub's guide on editing files in GitHub to learn more.
-
Commit changes. When you are done making changes you will commit your changes with a message reflecting the scope of the change. The commit description underneath the message is optional. Commit directly to the
drafts
branch.
You can now view drafted changes in the site in the drafts directory on the public site.
When you are done drafting changes create a new pull request to stage changes from the drafts
branch to the content
branch.
-
Create a new pull request by going to ./compare or go to the Pull Requests tab at the top of the repository page then click New pull request.
-
In the Compare changes page change the base branch from
base:main
tocontent
and the compare branch fromcompare:main
branch todrafts
. -
You will be able to see a preview of the changes in your pull request. Click Create pull request to create a title, description, and add reviewers. View GitHub's guide on creating pull requests to learn more.
-
Click Create pull request again in the next view to make the pull request.
Once the pull request is approved changes are ready to be published. Click Merge pull request. The content will be live.
The Mayor's Office for Economic Opportunity is committed to sharing open source software that we use in our products. Feel free to ask questions and share feedback. Interested in contributing? See our open positions on buildwithnyc.github.io. Follow our team on GitHub @nycopportunity and @cityofnewyork:nycopportunity or browse our work on Github.