Skip to content

Replace Notion articles with source-authored pages - #102

Merged
andymeierdev merged 8 commits into
mainfrom
andymeierdev/source-authored-articles
Aug 12, 2026
Merged

Replace Notion articles with source-authored pages#102
andymeierdev merged 8 commits into
mainfrom
andymeierdev/source-authored-articles

Conversation

@andymeierdev

@andymeierdev andymeierdev commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • replace runtime Notion/SQLite articles with three source-authored FSharp.ViewEngine post modules and a typed static catalog
  • preserve all published article permalinks, homepage cards, search, tag filters, and year filters
  • rewrite the development-environment article as a current Mac-first guide centered on Pi
  • rewrite the personal-infrastructure article around the current personal GCP/GKE platform, including Benji and Minnie as separate long-running AI-agent workloads
  • add accessible C4-inspired system-context, runtime, and deployment diagrams using a locally vendored Mermaid bundle with strict security, light/dark re-rendering, and contained mobile scrolling
  • use an immutable system-context hero image hosted in the existing public GCS asset bucket
  • explain the roles of GCP, a limited Kubernetes subset, Cloudflare, Pulumi/ESC, GitHub, Seq, Snowplow, Pub/Sub, BigQuery, Cloud Logging, and Cloud Monitoring
  • remove the application-focused andymeier.dev implementation section while retaining the site as a concrete infrastructure workload
  • update the homepage biography and personal-opinions disclaimer
  • make the top navigation globally sticky with a translucent blurred surface; show the emerald reading-progress bar only on article-detail pages
  • retain the shared document shell, analytics, dark mode, syntax highlighting, and responsive behavior
  • remove Notion synchronization, SQLite persistence, MockNotion, obsolete projects, dependencies, configuration, Kubernetes secret/volume wiring, and related tests
  • document source authoring and manual immutable GCS image publishing

Article assets

Optimized, content-hashed article media is published manually under https://assets.meiermade.com/andymeier/articles/ with explicit content types and Cache-Control: public, max-age=31536000, immutable.

The application only references public article-media URLs; it has no runtime or Pulumi GCS object dependency. Mermaid 11.16.0 is bundled with the application, recorded in THIRD_PARTY_NOTICES.md, and fingerprinted during publish.

Testing

  • cd app && ./fake.sh Test — 18 passed
  • cd app && ./fake.sh Publish
  • cd e2e && npm test -- --project=firefox — 9 passed
  • cd pulumi && npm ci && npm run check
  • Fantomas checks for the revised article and article catalog tests
  • desktop/mobile and light/dark visual QA for article diagrams, hero, sticky navigation, progress behavior, and overflow
  • public asset content/hash/metadata verification

Deployment notes

The retired Notion environment and secret cleanup has already deployed through the corresponding environment and platform-infrastructure changes. No local pulumi up was run.

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown

🍹 preview on andymeier/prod

Pulumi report

View in Pulumi Cloud

  Previewing update (prod)

View Live: https://app.pulumi.com/meiermade/andymeier/prod/previews/dc314235-58a0-469a-b119-e53519c983d2

pulumi:pulumi:Stack: (same)
  [urn=urn:pulumi:prod::andymeier::pulumi:pulumi:Stack::andymeier-prod]
  ~ docker-build:index:Image: (update)
      [id=sha256:ce2a92a5ac3610bf75a8e4d0bd3af7000f4199af0b2612252179582b79ae116c]
      [urn=urn:pulumi:prod::andymeier::docker-build:index:Image::andymeier]
    - contextHash: "7fbb78f0e54cf4df4c5649535572a9454d7bb9c04822154a20430203f1b7406e"
  ~ kubernetes:apps/v1:Deployment: (update)
      [id=andymeier/app]
      [urn=urn:pulumi:prod::andymeier::kubernetes:apps/v1:Deployment::app]
    ~ spec: {
        ~ template: {
            ~ spec: {
                ~ containers: [
                    ~ [0]: {
                            + env         : [
                            +     [0]: {
                                    + name : "ASPNETCORE_ENVIRONMENT"
                                    + value: "Production"
                                  }
                            +     [1]: {
                                    + name : "SERVER_URL"
                                    + value: "http://0.0.0.0:5000"
                                  }
                            +     [2]: {
                                    + name : "SEQ_ENDPOINT"
                                    + value: "http://seq.platform:5341"
                                  }
                            +     [3]: {
                                    + name : "GOOGLE_ANALYTICS_MEASUREMENT_ID"
                                    + value: "G-Z5PZQ5HWF7"
                                  }
                              ]
                            - envFrom     : [
                            -     [0]: {
                                    - secretRef: {
                                        - name: "app"
                                      }
                                  }
                              ]
                            ~ image       : "us-east1-docker.pkg.dev/meiermade-platform/platform/andymeier:latest@sha256:23737a9d98c9a4171049ec426c2635e2f5698feb8eadc05eb3e354bd70d2dd06" => [unknown]
                            - volumeMounts: [
                            -     [0]: {
                                    - mountPath: "/data"
                                    - name     : "app-data"
                                  }
                              ]
                          }
                  ]
                - volumes   : [
                -     [0]: {
                        - emptyDir: {}
                        - name    : "app-data"
                      }
                  ]
              }
          }
      }
  - kubernetes:core/v1:Secret: (delete)
      [id=andymeier/app]
      [urn=urn:pulumi:prod::andymeier::kubernetes:core/v1:Secret::app]
      apiVersion: "v1"
      data      : [secret]
      immutable : true
      kind      : "Secret"
      metadata  : {
          name     : "app"
          namespace: "andymeier"
      }
Resources:
  ~ 2 to update
  - 1 to delete
  3 changes. 10 unchanged
  

@andymeierdev andymeierdev reopened this Aug 12, 2026
@andymeierdev
andymeierdev merged commit b08caec into main Aug 12, 2026
2 checks passed
@andymeierdev
andymeierdev deleted the andymeierdev/source-authored-articles branch August 12, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant