{"id":18318566,"url":"https://github.com/maxmind/blog-site","last_synced_at":"2026-02-02T21:10:50.318Z","repository":{"id":36979278,"uuid":"433907755","full_name":"maxmind/blog-site","owner":"maxmind","description":"Static site generator for https://blog.maxmind.com.","archived":false,"fork":false,"pushed_at":"2024-05-22T09:59:53.000Z","size":41728,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":17,"default_branch":"main","last_synced_at":"2024-05-22T10:58:25.062Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxmind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-01T16:44:54.000Z","updated_at":"2024-06-06T12:52:05.835Z","dependencies_parsed_at":"2023-12-22T15:10:20.724Z","dependency_job_id":"1c57bb43-8017-4f8b-a8ab-fb499daf8b12","html_url":"https://github.com/maxmind/blog-site","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmind%2Fblog-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmind%2Fblog-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmind%2Fblog-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxmind%2Fblog-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxmind","download_url":"https://codeload.github.com/maxmind/blog-site/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054217,"owners_count":21039951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T18:10:02.302Z","updated_at":"2026-02-02T21:10:50.312Z","avatar_url":"https://github.com/maxmind.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003e\n  \u003cimg\n    alt=\"MaxMind\"\n    src=\"./assets/maxmind-logo.svg\"\n    width=\"300\"\n  /\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003csmall\u003eBlog Static Site Generator\u003c/small\u003e\n\u003c/h3\u003e\n\n---\n\n## Overview\n\n- **Static Site Generator**: [Hugo](https://gohugo.io/) +\n  [TypeScript](https://www.typescriptlang.org/) +\n  [MD](https://www.markdownguide.org/)\n- **Linting**: [ESLint](https://eslint.org/) +\n  [StyleLint](https://stylelint.io/) +\n- **Hosting**: [Cloudflare Pages](https://pages.cloudflare.com/)\n\n## Usage\n\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Development](#development)\n  - [Development Server](#development-server)\n  - [Linting](#linting)\n- [Writing Blog Posts](#writing-blog-posts)\n\n### Prerequisites\n\nThis project uses [mise](https://mise.jdx.dev/) to manage tool versions\n(Node.js, Hugo, pnpm, precious, Dart Sass).\n\n#### Install mise\n\n```sh\ncurl https://mise.jdx.dev/install.sh | sh\n```\n\nSee the [mise installation guide](https://mise.jdx.dev/getting-started.html)\nfor other installation methods.\n\n### Installation\n\n```sh\nmise trust    # Trust the mise.toml configuration\nmise install  # Install all required tools (Node, Hugo, pnpm, etc.)\npnpm install  # Install Node.js dependencies\n```\n\nYou should also install our pre-commit hook. You can do this from your checkout\nby running `git/setup.sh`. These hooks do things like ensure that the code you\ncommit is tidy and passes various linter checks.\n\n### Development\n\n#### Development Server\n\nThe development server watches files, rebuilds the site, and reloads the browser\nwhen files change.\n\n```sh\nhugo server\n```\n\n#### Linting\n\n```sh\nprecious tidy --all\n```\n\n#### Cloudflare Pages HTTP Headers Configuration\n\nThe `static/_headers` file is automatically generated from\n`bin/_headers.config.ts`. **Do not edit `static/_headers` directly**.\n\n##### Making Changes to Headers\n\n1. Edit `bin/_headers.config.ts` (the source of truth with readable format and\n   TypeScript type safety)\n2. Test your changes locally:\n   ```sh\n   pnpm run build:headers\n   ```\n3. Commit only `bin/_headers.config.ts` - the headers file is regenerated during\n   deployment\n\n##### Build-Time Generation\n\nThe `static/_headers` file is generated during the build process via `build.sh`\nand is not committed to git. For local testing, you can manually generate it\nwith `pnpm run build:headers`.\n\n## Writing Blog Posts\n\nBlog posts are written using\n[markdown](https://www.markdownguide.org/cheat-sheet/), with each post\ncorresponding to a markdown file in the `/content` directory, with\nsubdirectories for the year and month of publication (e.g., `/content/YYYY/MM`).\n\nYou can learn more about how blog post files work and how they are formatted in\nthe [BLOG-POST-TEMPLATE.md](BLOG-POST-TEMPLATE.md) file.\n\n### Categories and Tags\n\nTo see a full list of categories and tags, check out the\n[all taxonomies](https://blog.maxmind.com/all-taxonomies/) page. This page is\nautomatically updated on build and push to production. If you want to see it on\nyour local machine, start up the [development server](#development-server) and\ngo to [/all-taxonomies](http://localhost:1313/all-taxonomies).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxmind%2Fblog-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxmind%2Fblog-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxmind%2Fblog-site/lists"}