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.
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.
There are two deployments of Ace Archive:
- The prod environment (https://acearchive.lgbt) is automatically deployed
when changes are pushed to the
prodbranch. - The dev environment (https://dev.acearchive.lgbt) is automatically deployed
when changes are pushed to the
mainbranch.
Each environment has an entirely separate infrastructure stack: separate databases, separate object storage buckets, and separate deployments of the backend services.