Skip to content

acearchive/acearchive.lgbt

Repository files navigation

Ace Archive

This is the repository for the Ace Archive website. You can find more information about the project here.

This website is a Hugo static site based on the Doks theme.

This repo contains the static site itself. The project's backend services, tools, and infrastructure can be found in the following repos:

  • artifact-submit-action: This is a GitHub Action which uploads submitted artifacts to the site once they're manually approved.
  • artifact-submissions: This is where new artifacts are submitted for approval. Users create submissions via the artifact submission form, which generates a JSON file that is checked into this repo.
  • files-worker: This is a serverless function which serves artifact files from object storage.
  • api-worker: This is a serverless function which serves the REST API.
  • submission-worker: This is a serverless function used to import metadata from artifact submissions into the database.
  • db-backup-worker: This is a serverless function used to regularly back up the database to object storage.
  • hugo-artifact-action: This is a GitHub Action which converts dynamic content into static pages for the static site generator.
  • yahoo-groups-reader: This is a CLI tool for building a static site from a Yahoo Groups archive. This was purpose-built for Haven for the Human Amoeba.
  • infra: This repo contains the Terraform config for the site's infrastructure.

See the architecture diagram for an overview of how these different services talk to one another.

Development

You can use just to build and deploy the app. Run just to see a list of recipes. Some recipes accept a stage, either prod or dev.

Deployment

There are two deployments of Ace Archive:

  1. The prod environment (https://acearchive.lgbt) is automatically deployed when changes are pushed to the prod branch.
  2. The dev environment (https://dev.acearchive.lgbt) is automatically deployed when changes are pushed to the main branch.

Each environment has an entirely separate infrastructure stack: separate databases, separate object storage buckets, and separate deployments of the backend services.