18F’s flagship website
This repo houses the 18F website. We use the Draft U.S. Web Design standards as a front end framework. The site is built and served through the Federalist platform.
History
A detailed history of the work that went into developing this redesign can be found at 18F/beta.18f.gov. An archived copy of the original website can be found on a Federalist preview.
Installation
Run each of the following steps to get the site up and running.
git clone git@github.com:18F/18f.gsa.gov
cd 18f.gsa.gov
bundle install
./serve
To enable the ability to search and see archives, you can run bundle exec jekyll serve
instead of ./serve
for the server start command. This will slow down rebuild times dramatically, so use this command with discretion.
You should be able to see the site at: http://127.0.0.1:4000
Alternative Installation using Docker
Using Docker can make dependencies management easier, but can also slow down your build time. You can find out more in this discussion
To try this out on MacOS:
- Install Docker Toolbox.
- Make sure Docker is running and
cd
into your project folder - Run
docker-compose build
to build the docker image and its dependencies. You only need to build once, but if there was an error with the build , rebuild using the--no-cache
option like sodocker-compose build --no-cache
to avoid using the old version of the docker image. - Run
docker-compose up
. Note: if you want to run a single command and bypass yourDockerfile
for debugging purposes, you can do like sodocker-compose run app <COMMAND>
(for instance, you can run bundledocker-compose run app bundle install
) - Visit http://192.168.99.100:4000 in your browser.
System security controls
The site is a static website with HTML, CSS, and Javascript. Deployments are done through the Federalist platform.
- Federalist runs in its own organization and space in CloudFoundry
- Federalist Admin: https://federalist.18f.gov/
- Using the Federalist editor that requires GitHub Oauth and writes commits as auth'd GitHub user, changes are then passed through a webhook back to Federalist
- Federalist uses a CloudFoundry S3 service to write to the bucket, the Federalist instance only derives S3 credentials from the CloudFoundry S3 service and can only read/write to federalist.18f.gov/*
- Federalist responds to a webhook on GitHub and runs Jekyll to generate static web files and puts them in an S3 bucket
- We map 18f.gsa.gov URL to the S3 bucket
Constraints
- We use Cloudfront to map 18f.gsa.gov to an S3 endpoint
- Federalist, and Cloudfront do not support the following HTTPS implementations: