# dev-site **Repository Path**: mirrors_maxmind/dev-site ## Basic Information - **Project Name**: dev-site - **Description**: Static site generator for https://dev.maxmind.com. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

MaxMind

Developer Documentation Static Site Generator

--- ## Overview - **Static Site Generator**: [Hugo](https://gohugo.io/) + [TypeScript](https://www.typescriptlang.org/) + - **Hosting**: [Cloudflare Pages](https://pages.cloudflare.com/) ## Usage - [Minimum Requirements](#minimum-requirements) - [Installation](#installation) - [Development](#development) - [Development Server](#development-server) - [Updating Release Notes for the New Year](#updating-release-notes-for-the-new-year) ### Prerequisites This project uses [mise](https://mise.jdx.dev/) to manage tool versions (Node.js, Hugo, pnpm, precious, Dart Sass). #### Install mise ```sh curl https://mise.jdx.dev/install.sh | sh ``` See the [mise installation guide](https://mise.jdx.dev/getting-started.html) for other installation methods. ### Installation ```sh mise trust # Trust the mise.toml configuration mise install # Install all required tools (Node, Hugo, pnpm, etc.) pnpm install # Install Node.js dependencies ``` #### Pre-commit Hooks You should install our pre-commit hook. You can do this from your checkout by running `git/setup.sh`. These hooks do things like ensure that the code you commit is tidy and passes various linter checks. ### Development #### Development Server The development server watches files, rebuilds the site, and reloads the browser when files change. ```sh hugo server ``` #### Cloudflare Pages HTTP Headers Configuration The `static/_headers` file is automatically generated from `bin/_headers.config.ts` during the build process. **Do not edit `static/_headers` directly**. ##### Making Changes to Headers 1. Edit `bin/_headers.config.ts` (the source of truth with readable format and TypeScript type safety) 2. Test your changes locally by generating the headers file: ```sh pnpm run build:headers ``` 3. Commit only `bin/_headers.config.ts` - the `_headers` file will be generated automatically during deployment ##### Build-Time Generation The headers file is generated automatically during deployment via `build.sh`. You can also generate it manually for local testing with `pnpm run build:headers`. ### Updating Release Notes for the New Year Whenever you create your first release note for a product category for a new year: 1. Add a file called `.md` to the `/content//release-notes` folder. (e.g., `/content/geoip/release-notes/2024.md`) - Add the header to your new release note file with the title: ` Release Notes` (e.g., `GeoIP Release Notes`) and draft to `false`. - Add the email subscription notification to the top of the new file. 2. Change the `title:` field in the previous year's `md` file to read: ` Release Notes - Archive` (e.g., `GeoIP Release Notes - 2023 Archive`) - Remove the email subscription notification from the top of the archived file. 3. Update link to the release notes in the navigation menu (`hugo.toml`) to point to the current year's path. 4. Update the redirect in `static/_redirects` for the base release notes path to point to the current year. ### Updating Example CSVs To do this, use the `create-example-csv-zips-for-dev-site` script in the internal oneoffs repository. ### Adding Page Metadata for SEO and Social Sharing #### Adding a description In the markdown (mdx) file, add a `description` to the frontmatter located at the top of the file: ```md --- draft: false title: GeoIP is the best description: GeoIP is the best IP Intelligence product suite ever made --- ``` #### Adding an image 1. Add your image to the [static/images](static/images) directory. 2. In the markdown (mdx) file, add the path to the `image` key in the frontmatter located at the top of the file. **Do not include `static` to the path.** For example, if your file is at `static/images/geoip2-so-cool.gif`, your frontmatter would look like: ```md --- draft: false title: GeoIP is the best description: GeoIP is the best IP Intelligence product suite ever made image: /images/geoip2-so-cool.gif --- ```