From f5682a8d51bc5acf01c50199b4b2c455a2579450 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.uk>
Date: Sat, 25 Nov 2023 20:32:50 +0000
Subject: [PATCH] docs(daily-email): add 2023-11-21

Why I built "Build Configs"
---
 src/content/daily-email/2023-11-21.md | 52 +++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 src/content/daily-email/2023-11-21.md

diff --git a/src/content/daily-email/2023-11-21.md b/src/content/daily-email/2023-11-21.md
new file mode 100644
index 00000000..f63103ca
--- /dev/null
+++ b/src/content/daily-email/2023-11-21.md
@@ -0,0 +1,52 @@
+---
+title: >
+  Why I built "Build Configs"
+pubDate: 2023-11-21
+permalink: >
+  archive/2023/11/21/why-i-built-build-configs
+tags:
+  - docker
+  - docker-compose
+  - php
+  - phpc
+  - drupal
+  - symfony
+---
+
+[Build Configs] is a tool I wrote and recently [gave a lightning talk about][talk] at the PHP South West meetup in Bristol, UK.
+
+It's a command-line tool that creates customised per-project configuration files from a set of reusable templates.
+
+It's a Symfony project using components such as Console, Validator, and Twig for templating.
+
+But why did I build it?
+
+## What was I doing before?
+
+When starting a new project, I'd copy configuration files from an existing project and alter them as needed.
+
+If a project uses a `docroot` directory instead of `web`, a different version of PHP, or Caddy instead of Nginx, I'd need to change the files manually for the new project, add any required features, or fix any bugs.
+
+## What was the issue with this?
+
+It took time to set up new projects, and there would be drift between them.
+
+I may have added a feature to one project, but it wouldn't exist in the one I was working on.
+
+If I needed to move a feature from one project to another, I needed to do it manually.
+
+## How does Build Configs solve the issue?
+
+Now, I have a canonical set of template files.
+
+Instead of making ad-hoc changes to each project, I can add new features and fix bugs in the templates, and re-generate the configuration files for each project.
+
+I don't need to worry about drift between projects because they're all in sync and generated automatically.
+
+It's quicker to create and onboard projects using existing configurations instead of copying files and making manual changes.
+
+If you want to see an example, [watch this video][video] where I set up a new Drupal 10 project from nothing to running website in less than a minute.
+
+[build configs]: https://www.oliverdavies.uk/build-configs
+[talk]: https://www.oliverdavies.uk/talks/building-build-configs
+[video]: https://www.youtube.com/watch?v=LkhsdmxReUc