About this project

The repository contains the engineering behind Mathew Musango Peter's personal portfolio website. The site is authored in Markdown and built with MkDocs 1.6.1 plus the Material theme 9.7.7, using a dark slate default with a light toggle and teal accent. Development runs locally via Podman Compose and an HTTPS‑enabled dev server (serve.py) that uses mkcert for TLS. CI/CD is implemented in GitHub Actions: every push to main and version tag triggers a build workflow that runs mkdocs build, pip‑audit, link checks, and language‑specific linting checks. Successful builds publish the site artifact to staging S3+CloudFront; version tags additionally deploy to a pre‑prod AWS mirror and, after manual approval in the prod environment, to GitHub Pages. Visitor analytics are handled by a privacy‑first serverless pipeline: CloudFront forwards geo headers to API Gateway, which invokes a writer Lambda to insert non‑IP data into DynamoDB (90‑day TTL) and a reader Lambda for summary queries. Infrastructure is defined with Terraform, including private S3 buckets fronted by CloudFront with OAC, API Gateway, Lambda functions, DynamoDB tables, and optional WAF/VPC. The terraform/ci bootstrap step creates per‑environment state backends (S3 + DynamoDB lock) and least‑privilege OIDC roles for GitHub Actions, ensuring no long‑lived AWS keys are used. Security practices include Dependabot updates, CycloneDX SBOM generation per release, and pip‑audit on every CI build. The repo also provides contributing guidelines, security policy, changelog, and branch/tag rulesets. All code is MIT‑licensed; personal content (text, images, resume) remains copyrighted by the author.