# Static site generator

## Overview

This folder contains the template files needed to generate the static site for
this repo ( https://remoteintech.company/ ).

The code that parses the site's data from the Markdown files in this repository
is located in `bin/build-site.js` and `lib/index.js`.

On each new change to `main` or to a GitHub pull request, if there are no
data validation errors, the site is built and deployed to Netlify (the domain
mentioned above for the `main` branch, or a temporary subdomain for pull
requests).

The static site uses a layout and CSS copied from
https://blog.remoteintech.company/ which is a site hosted on WordPress.com, and
the site builder code uses
[`swig`](https://github.com/node-swig/swig-templates)
as an HTML templating engine.

## Development

If you submit any changes as a pull request, GitHub and Netlify will
automatically validate, build, and deploy a preview of the site for you.

For longer-running or more complicated changes, though, it can be useful to run
the site locally.  To make this work, you should be using the version of
Node.js specified in the `.nvmrc` file.  Other versions may work but have not
been tested.

Run `npm install` to install dependencies.

Then run `npm start` to build and serve the site locally.

You can also use `nodemon` to automatically rebuild and reload the site when
you make changes:

```sh
npm install -g nodemon
nodemon bin/serve-site.js
```

If you just want the data structure used to build the site, you can do this:

```js
~/code/remote-jobs $ node
> const { parseFromDirectory } = require( './lib' );
undefined
> const data = parseFromDirectory( '.' );
undefined
> Object.keys( data );
[ 'ok',
  'profileFilenames',
  'profileHeadingCounts',
  'companies',
  'readmeContent' ]
> Object.keys( data.companies[ 0 ] )
[ 'name',
  'isIncomplete',
  'websiteUrl',
  'websiteText',
  'shortRegion',
  'linkedFilename',
  'profileContent' ]
...
```