# Daniel Shires > Senior Product Designer based in Woonona, NSW. Dan is a Senior Product Designer at [Commonwealth Bank](https://www.commbank.com.au), exploring the future of customer communication. He brings together product discovery, customer-centred design, and systems thinking to make complex problems easier to understand and solve. Working across product, engineering, and research, he helps turn early insights into clear concepts and useful digital experiences. He also uses AI to explore ideas, prototype quickly, and build working products, bridging design and development. Outside his day job he builds small products and experiments, from a Figma plugin to this site. ## Pages - [Home](https://danielshires.com/): profile, selected work, and recent writing - [Projects](https://danielshires.com/projects): case studies and independent work - [Thinking out loud](https://danielshires.com/writing): essays and notes - [Playground](https://danielshires.com/playground): small interactive trials - [About](https://danielshires.com/about): summary, experience, and ways to connect - [Design](https://danielshires.com/design): design portfolio - [Field Guide](https://danielshires.com/field-guide): concepts and patterns - [CV](https://danielshires.com/cv/daniel-shires-cv.md): résumé ## Interests - Product discovery - Design systems and interface craft - Photography - AI-assisted prototyping - Accessibility ## Experience ### Commonwealth Bank — Senior Product Designer Mar 2026 → Now ### Commonwealth Bank — Senior UX Designer Jan 2025 → Mar 2026 ### Commonwealth Bank — Senior UI Designer Nov 2023 → Jan 2025 ### Commonwealth Bank — Specialist UI Designer May 2022 → Dec 2023 ### Formbay — Digital Designer 2020 → 2022 ### MyCareSpace — UX/UI Designer 2020 → 2021 ### Scenic Luxury Cruises & Tours — Digital Designer 2019 → 2020 ### Freelance — Graphic Designer 2018 → 2019 ### Made.com — Creative Artworker 2017 → 2018 ### Echo House — Freelance Graphic Designer 2017 ### TurnbullGrey — Graphic Design Intern 2017 ## Work ### CommBank Yello — [View](https://danielshires.com/projects/commbank-yello) Re-imagine loyalty for Australia's largest bank ### Laws of behaviour — [View](https://lawsofbehaviour.netlify.app) A reference of behavioural principles for product decisions ### Frame Wave — [View](https://www.figma.com/community/plugin/1302193588260093806) A Figma plugin for previewing designs across mobile screen sizes ### NetBank — [View](https://danielshires.com/projects/refreshing-netbank-s-homepage) Modernising the NetBank homepage within its existing architecture ### Formbay — [View](https://danielshires.com/projects/formbay) Leading visual design for a solar start-up ### Scenic Luxury Cruises & Tours — [View](https://danielshires.com/projects/scenic-luxury-cruises-and-tours) Campaign and digital design for a luxury travel brand ### Design Maxims — [View](https://designmaxims.netlify.app) Short quotes and ruminations on what design (and life) can be ### MASO Fitness — [View](https://danielshires.com/projects/maso-fitness) Brand identity and website for a new fitness group ### Yo! Gif — [View](https://yogifme.netlify.app) A simple search platform for Gif images ## Writing #### [How I built this site](https://danielshires.com/writing/how-i-built-this-site) 26 Oct 2026 The decisions behind building this portfolio with Astro, Sanity and AI-assisted development, and why AI speeds up the work without making the calls. #### [Crocs](https://danielshires.com/writing/good-design-award-1-crocs) 12 May 2026 Is good design only about solving problems? The first Good Design Award goes to a shoe people love to hate. #### [Make Coffee. Think Better.](https://danielshires.com/writing/stop-to-think) 7 May 2026 Why the best ideas don’t happen at your desk #### [Techno feudalism](https://danielshires.com/writing/techno-feudalism-is-real) 6 May 2026 What Yanis Varoufakis's book explains about our dependence on cloud platforms, and what we trade for it. #### [Getting feedback](https://danielshires.com/writing/getting-feedback) 4 Jul 2025 Getting feedback is essential for understanding how to interact with our surroundings and digital products, but it's also essential for moving your design practice forward. #### [Designers that I admire](https://danielshires.com/writing/designers-that-i-admire) 21 Jun 2025 An ongoing collection of some of my favourite designers. #### [Top 10 tips to help build applications with Cursor](https://danielshires.com/writing/top-10-tips-to-help-build-applications-with-cursor) 18 Jun 2025 Save time and move fast. Build small web projects with these top 10 tips. #### [A short history of my web portfolios](https://danielshires.com/writing/a-short-history-of-my-web-portfolios) 9 Jun 2025 A look back at the portfolios on GitHub: the first HTML site in 2020, a Jekyll version, a Hugo site, and the Astro project this page lives on. ## Stack This site is a static [Astro](https://astro.build) 4 build, hosted on [Netlify](https://www.netlify.com). Pages are generated ahead of time. Projects, writing, pictures, and albums come from [Sanity](https://www.sanity.io) (project `5fq3rcf6`, production dataset). The studio is at [/studio](https://danielshires.com/studio). About copy, experience, and social links are edited in `src/config/about.ts`. The CV is the markdown file linked above. Interactive pieces, such as the theme control, are React islands. Everything else is Astro. Styling is Tailwind CSS, with a light and dark theme stored in `localStorage`. [Swup](https://swup.js.org) replaces only the `<main>` element between pages. Images are optimised with Sharp. A Netlify function serves the avatar chat experiment at `/api/avatar`. This profile is the plain-text version of the site. It is also published at [/agent.md](https://danielshires.com/agent.md). The homepage returns the same document when a request sends `Accept: text/markdown`. ## Connect - LinkedIn: [in/shiresdaniel](https://www.linkedin.com/in/shiresdaniel/) - GitHub: [@danielshires](https://github.com/danielshires) - Email: [hello@danielshires.com](mailto:hello@danielshires.com)

How I built this site

The decisions behind building this portfolio with Astro, Sanity and AI-assisted development, and why AI speeds up the work without making the calls.

By Daniel Shires · October 26, 2026

I wanted this portfolio to be more than a collection of case studies. It’s a place to share my work, explore ideas and document what I’m learning along the way.

That means the site needs to do a few things well: make the work easy to find, keep the experience simple, and make publishing and experimenting straightforward.

I approached building it the same way I approach product design: start with the needs, make deliberate decisions about the system, and keep unnecessary complexity out of the experience.

01 — Start with the right foundations

The site is built with Astro, which generates the pages ahead of time. That keeps the experience fast without needing the browser to assemble every page when someone visits.

I use React for the interactive parts: the light and dark theme, the homepage status line, the avatar experiment and a handful of controls. Everything else stays as simple as possible.

The principle is straightforward: use complexity where it creates value, not by default.

Tailwind handles styling, Inter provides the main typography, and IBM Plex Mono gives labels a more technical feel. A small set of colour variables controls the light and dark themes.

These decisions give the site a consistent visual language without making every new page a design exercise.

02 — Keep the experience focused

The navigation is deliberately short: Home, Projects, Thinking Out Loud, About and Experiments.

Each section has a clear purpose. Case studies present finished work; Experiments gives unfinished ideas room to develop. The two don’t need to pretend to be the same thing.

The navigation stays in place as the main content changes. Swup handles those transitions, with animation kept out of the way.

Visually, the site uses a near-white or near-black background with a subtle grain texture. It’s enough to give the interface some character without competing with the work.

The goal isn’t to make the interface invisible. It’s to make sure it supports what people came to see.

03 — Separate content from code

A portfolio changes over time. New projects get published, writing develops, and photographs come and go. Updating those things shouldn’t require rebuilding the site by hand.

Projects, writing, photographs and albums live in Sanity, a content management system. I can edit them through a Studio interface at /studio, while Astro turns that content into the pages visitors see.

Each content type follows a consistent structure, with fields for things like titles, dates, descriptions and images. That makes the content easier to manage and the site easier to extend.

The About page is a deliberate exception. Its introduction, experience and links live in the codebase because they’re closely tied to how the site presents me professionally.

I can also connect writing to shared concepts, customise search and social metadata, and exclude content from the sitemap when it shouldn’t be indexed.

The underlying idea is to make common changes easy without making the system harder to understand.

04 — Use AI to accelerate the work, not make the decisions

I use Cursor and ChatGPT throughout the development process. They help me explore approaches, write code, troubleshoot problems and move from an idea to a working experience more quickly.

But speed isn’t the same as good judgement.

Before a substantial change, I establish the constraints and ask for a plan. I want potential issues surfaced early, not after the implementation is finished. For smaller changes, I keep the scope narrow and reuse the patterns already in place.

I also review the result in the browser. A change that works on one page can still break another page using the same component. I check the relevant routes and follow the experience as a visitor would.

The tools help me build faster. Decisions about the audience, the experience and what should ship remain mine.

05 — Make shipping predictable

Netlify builds and deploys the site using Node.js. During the build, the project is checked and the static pages are generated. Type errors stop the deployment rather than slipping through unnoticed.

Images are processed with Sharp and served in AVIF format to reduce their size. Content is fetched from Sanity during the build, so the browser doesn’t need to assemble the writing and projects on the fly.

I also keep old routes working. For example, /journal redirects to /writing, preserving links after the section changed.

Publishing follows the same principle. Once I publish a new piece in Sanity, the site needs another build before the change appears publicly.

That small delay is a worthwhile trade-off for a simpler, statically generated experience.

What I learned

Building this site reinforced a principle I use in product design: a good system makes the right things easy and the wrong things harder to do accidentally.

The navigation has a clear purpose. Content and presentation have distinct responsibilities. Interactive elements earn their complexity. Reusable patterns keep the experience consistent.

AI has made it easier for me to move between design and development, but it hasn’t removed the need to make deliberate decisions, test assumptions and check the finished experience.

I don’t consider the site finished in the sense of being fixed. I’ll keep adding work, trying ideas and adjusting the system as I learn.

What matters is that it has a solid foundation to evolve from.