← Tools

Site Notes

A short map of how this static toolbox is constructed, deployed, and extended. The site is intentionally simple: mostly standalone HTML tools, S3 hosting, GitHub Actions deployment, and a little browser-side data storage where useful.

Architecture

Source Repo HTML tools live under site/. AWS infrastructure lives under infra/terraform/.
->
GitHub Actions OIDC auth, Terraform apply, version footer injection, S3 sync, and CloudFront invalidation.
->
Amazon S3 austinclarke.net serves static files and public browser-saved JSON under data/.
->
CloudFront Serves the public domain, uses S3 Origin Access Control, and can resolve clean directory URLs to index.html.
->
Browser Runs the tools directly with HTML, CSS, JavaScript, canvas, and local calculations.

AWS Services

  • S3 static site bucket: austinclarke.net stores the deployed site.
  • CloudFront distribution: serves https://austinclarke.net from the S3 origin using Origin Access Control.
  • S3 object API: selected tools can save and load public JSON under app-specific data/ prefixes.
  • Bucket policy: grants public reads, public writes only under data/*, prefix-limited list access, and CloudFront read access for the configured distribution.
  • CORS: allows browser fetches from https://austinclarke.net and http://austinclarke.net.
  • IAM role via GitHub OIDC: lets GitHub Actions deploy without storing long-lived AWS keys in the repo.
  • Terraform state: stored in ccs.nexus.management.tfbackend.59e2720f-011 so each deployment can correct infrastructure drift.

Site Shape

Each public page is a folder with an index.html. That keeps URLs clean and S3-friendly:

site/music/chords/flashcards/index.html
becomes
/music/chords/flashcards/

CloudFront should be configured to keep those clean directory URLs working at the edge, so links do not need to expose index.html.

Most tools are deliberately self-contained. A simulator or calculator can usually be understood, copied, tested, and deployed as one HTML file.

Child pages link back to the root tools index with ← Tools so navigation copy stays consistent across music, simulators, finance, development, and reference pages.

Deployment Workflow

Push to main

The deploy workflow runs on pushes to the main branch.

Assume AWS role

GitHub Actions uses OIDC to assume arn:aws:iam::993058117004:role/ccs.nexus.management.github.oidc.

Apply infrastructure

Terraform runs from infra/terraform/ to converge S3, bucket policy, CORS, CloudFront, Route 53 aliases, and the clean-URL CloudFront Function.

Stamp version footer

A tiny v1234-style footer is injected into each HTML file using the first four characters of the commit SHA.

Sync to S3

The workflow runs aws s3 sync ./site with --delete, while excluding assets/*, data/*, and favicon.ico so bucket-managed objects survive.

Invalidate CloudFront

After upload, the workflow creates an invalidation for /* so changed static files and rewrites are seen through the distribution.

AI And LLMs

This repo is intentionally friendly to AI-assisted iteration. A good tool prompt usually asks for a self-contained static page, clear controls, mobile-friendly layout, and any math or model details that help the page teach while it works.

AI-generated pages still need review: links should be added to the tools index, saved data must be treated as public, and any simulator or calculator math should be named and checked.

Public Data Store

Anything saved under data/ is public internet data. Tools should never save secrets, credentials, or sensitive personal information.

Tools that need persistence use unique prefixes like data/finance-mortgage-advanced-calculator/ so future apps do not collide with existing JSON objects.

Local-Only Tools

Some tools process user-provided files entirely inside the browser. The development comparison tools read files with the browser FileReader API, parse them locally, and compare them in memory. They cover XML, JSON, and common YAML configuration shapes.

Local-only tools should not use fetch, S3 object API calls, analytics beacons, or browser storage for file contents unless the page clearly says so.

Current Tool Families

Music flashcards Music worksheets Music theory drills Improvisation prompts Piano practice labs Mortgage calculators S3-backed JSON saves Local-only file tools Canvas simulators Certification study hubs Model math notes AI-assisted static pages