Thoughtful decisions. Lasting progress.
A technical history of this build, one post per step, in the order it happened. Including the dead ends.
What the HubSpot Free plan can and cannot do
Custom objects need Enterprise, so we used the standard objects and treated the limits as part of the lesson.
A static-token app, and why scopes bite
The CLI key and the app token are different credentials with different scopes. Mixing them up cost us a few 403s.
Properties, pipelines and forms as code
Idempotent scripts that create things the first time and update them every time after.
Three ticket types from one pipeline
We wanted different forms to create different kinds of tickets. A field beat a second pipeline.
Sample data you can load, update and verify
A seeded generator, batch loading, a guarded mass update and a verify script that says PASS or FAIL.
Hosting the company site on AWS
A private bucket behind CloudFront, a certificate in the right region, and DNS records you can read.
A brand you can rebuild from code
Tokens, a vector K drawn in a script, an outlined wordmark and a mistake that looked like a Q.
One CloudFront distribution, many sites
A small viewer-request function routes hostnames to folders, and one flag in a deploy script stops it deleting them.