The Chicago Reporter's government phonebook for Illinois.
Resources:
- govbook.chicagoreporter.com
- Public Google Drive folder
- Private Google Drive folder for Chicago Reporter use only
We welcome and encourage users to adapt this open source software for your purposes. However, as specified in the license, you may not publish your own version of the site using the assets in src/images
without replacing with your own assets or asking our permission.
- GNU Make, Git, standard build tools (
xcode-select --install
on Mac,apt install build-essential
on Ubuntu) - nodejs (
brew install node
,apt install nodejs
on Ubuntu) - sqlite3 (
brew install sqlite3
on Mac,apt install sqlite3
on Ubuntu) - Gatsby CLI (
npm install -g gatsby-cli
with npm available)
git clone https://github.com/thechicagoreporter/govbook.git
In the directory you cloned the software, run:
npm install
Create a .env
file with:
touch .env
This file may remain empty for local development. See the deployment section below to learn how to use this file to deploy the site.
- Start running the app locally (
gatsby develop
) - View at http://localhost:8000/
- To stop the server, Ctrl-C
Note: You must re-build the site using gatsby develop
to view changed items in the translation string files (e.g. after making changes in es.json
or en.json
). Sometimes there is a bug where the new changes don’t show up after saving and rebuilding. This is an issue with the cache. To address it, type rm -Rf .cache
and then try the build again.
A recent data snapshot will be in the repository, but for the most recent data, do the following:
- Run
make clean
- Run
make all
To learn more about Makefiles in journalism, read Mike Bostock’s guide: https://bost.ocks.org/mike/make/
Deployment is currently a bit of a mess because of the number of files generated (see this Gatsby ticket to track performance improvements; GovBook is one of the sites the Gatsby team is testing to make improvements).
For now, a simple configuration variable and Makefile target do the job for S3 users.
Add a line to the .env
file specifying your S3 bucket where my-s3.bucket.tld
is the full name of your S3 bucket:
BUCKET=my-s3.bucket.tld
Then, to deploy to the S3 bucket specified in the .env
file, run:
make deploy
A quick look at the top-level files and directories you'll see in a Gatsby project.
.
├── node_modules
├── src
├── .gitignore
├── .prettierrc
├── gatsby-browser.js
├── gatsby-config.js
├── gatsby-node.js
├── gatsby-ssr.js
├── LICENSE
├── package-lock.json
├── package.json
└── README.md
-
/node_modules
: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed. -
/src
: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template.src
is a convention for “source code”. -
/src
: GovBook-specific architecture
src/intl/en.json
: the English version of the site pulls its strings from this filesrc/intl/es.json
: the Spanish version of the site pulls its strings from this filesrc/pages/index.js
: GraphQL query that callstable.js
to build the main landing page of the site.src/components/table.js
: controls main landing page for GovBooksrc/styles/main.scss
: CSS formatting for the sitesrc/templates/pageTemplate.js
: controls the About page for GovBooksrc/templates/unit.js
: controls the ‘units’ or individual listings of govt officialssrc/pages/markdown/static/about/en.md
: defines content for the English “About” pagesrc/pages/markdown/static/about/es.md
: defines content for the Spanish “About” page
-
.gitignore
: This file tells git which files it should not track / not maintain a version history for. -
.prettierrc
: This is a configuration file for Prettier. Prettier is a tool to help keep the formatting of your code consistent. -
gatsby-browser.js
: This file is where Gatsby expects to find any usage of the Gatsby browser APIs (if any). These allow customization/extension of default Gatsby settings affecting the browser. -
gatsby-config.js
: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins you’d like to include, etc. (Check out the config docs for more detail). -
gatsby-node.js
: This file is where Gatsby expects to find any usage of the Gatsby Node APIs (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process. -
gatsby-ssr.js
: This file is where Gatsby expects to find any usage of the Gatsby server-side rendering APIs (if any). These allow customization of default Gatsby settings affecting server-side rendering. -
LICENSE
: GovBook and Gatsby are licensed under the MIT license. -
package-lock.json
(Seepackage.json
below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. (You won’t change this file directly). -
package.json
: A manifest file for Node.js projects, which includes things like metadata (the project’s name, author, etc). This manifest is how npm knows which packages to install for your project. It includes dependencies for the project. -
README.md
: A text file containing useful reference information about your project.
This site runs Gatsby. If you're looking for more guidance, full documentation for Gatsby lives on the website. Here are some places to start:
-
For most developers, we recommend starting with our in-depth tutorial for creating a site with Gatsby. It starts with zero assumptions about your level of ability and walks through every step of the process.
-
To dive straight into code samples, head to our documentation. In particular, check out the Guides, API Reference, and Advanced Tutorials sections in the sidebar.