<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew Teece</title>
    <description>The latest articles on DEV Community by Andrew Teece (@andrewteece).</description>
    <link>https://dev.to/andrewteece</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1082051%2Fa7431d28-17be-41bd-8e94-8f7ca79d5683.png</url>
      <title>DEV Community: Andrew Teece</title>
      <link>https://dev.to/andrewteece</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andrewteece"/>
    <language>en</language>
    <item>
      <title>Why Every Developer Needs a Project Template</title>
      <dc:creator>Andrew Teece</dc:creator>
      <pubDate>Wed, 03 Sep 2025 12:50:03 +0000</pubDate>
      <link>https://dev.to/andrewteece/why-every-developer-needs-a-project-template-49ih</link>
      <guid>https://dev.to/andrewteece/why-every-developer-needs-a-project-template-49ih</guid>
      <description>&lt;p&gt;Kick off a new series exploring how a green-by-construction template saves time, prevents bugs, and enforces professional quality from the very first commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Every Developer Needs a Project Template
&lt;/h2&gt;

&lt;p&gt;Starting a new project should be exciting. But too often, it begins with hours of repetitive setup: configuring ESLint, wiring Prettier, adding CI, setting up Husky hooks, and installing testing libraries. Before you’ve even written a single line of app code, you’re already bogged down in boilerplate.&lt;/p&gt;

&lt;p&gt;That’s where a &lt;strong&gt;project template&lt;/strong&gt; comes in.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is this series?
&lt;/h2&gt;

&lt;p&gt;This post is the first in a multi-part series where I break down the &lt;strong&gt;Project Template repo&lt;/strong&gt; I use to kickstart professional web apps. Each post will focus on a specific piece of the setup, showing you exactly how it fits together and why it matters.&lt;/p&gt;

&lt;p&gt;📂 &lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/andrewteece/project-template" rel="noopener noreferrer"&gt;andrewteece/project-template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upcoming parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CI/CD &amp;amp; Green by Construction&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flat ESLint Config + Prettier + Husky&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing with Vitest &amp;amp; Providers Helper&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path Aliases with vite-tsconfig-paths&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind v4 Zero-Config Mode&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Branch Protection &amp;amp; Best Practices&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you’ll see how each piece contributes to a template that’s &lt;em&gt;green by construction&lt;/em&gt; — meaning &lt;code&gt;main&lt;/code&gt; always passes checks before merge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why bother with a template?
&lt;/h2&gt;

&lt;p&gt;A solid project template:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Removes repetition&lt;/strong&gt; — no more copy/pasting configs from old repos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prevents mistakes&lt;/strong&gt; — linting, typechecking, and tests are built in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speeds onboarding&lt;/strong&gt; — new teammates clone, install, and ship within minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardizes quality&lt;/strong&gt; — every project starts at the same professional baseline.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it as your &lt;strong&gt;personal framework&lt;/strong&gt;: curated tools, scripts, and workflows that let you focus on &lt;em&gt;building features&lt;/em&gt; instead of &lt;em&gt;configuring tooling&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What’s inside this template?
&lt;/h2&gt;

&lt;p&gt;Here’s what I’ve included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 15&lt;/strong&gt; + &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind v4&lt;/strong&gt; (config-less mode)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ESLint flat config&lt;/strong&gt; + Prettier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vitest + Testing Library&lt;/strong&gt; with &lt;code&gt;renderWithProviders&lt;/code&gt; helper&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Husky + lint-staged&lt;/strong&gt; pre-commit checks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions CI&lt;/strong&gt; (Prettier → Lint → Typecheck → Tests → Coverage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything is designed to work together, so you can trust that every commit to &lt;code&gt;main&lt;/code&gt; is production-ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Up Next
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;Part 2&lt;/strong&gt;, I’ll show how the CI pipeline is built: caching pnpm, installing Node, running checks, and using branch protections to keep your repo green by construction.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>typescript</category>
      <category>tailwindcss</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Portfolio Relaunch — React, Vite, and MDX</title>
      <dc:creator>Andrew Teece</dc:creator>
      <pubDate>Tue, 02 Sep 2025 18:03:54 +0000</pubDate>
      <link>https://dev.to/andrewteece/portfolio-relaunch-react-vite-and-mdx-mog</link>
      <guid>https://dev.to/andrewteece/portfolio-relaunch-react-vite-and-mdx-mog</guid>
      <description>&lt;p&gt;How I rebuilt my portfolio using React 19, Vite 7, Tailwind CSS, and MDX — with performance, SEO, and maintainability in mind.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;React 19&lt;/strong&gt; — modern UI logic with hooks and transitions
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vite 7&lt;/strong&gt; — blazing-fast dev environment and bundler
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; — utility-first styling, fully customized
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MDX&lt;/strong&gt; — write blog posts in Markdown + React
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; — zero-config deployment with a custom domain
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ✨ Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MDX-powered blog with dynamic routes and tag filtering
&lt;/li&gt;
&lt;li&gt;SEO-ready with Open Graph images and sitemap
&lt;/li&gt;
&lt;li&gt;Dark mode, responsive layout, and syntax highlighting
&lt;/li&gt;
&lt;li&gt;RSS feed and copy-to-clipboard for code snippets
&lt;/li&gt;
&lt;li&gt;Custom domain deployed via GitHub + Vercel + GoDaddy
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4x5i6dnvni9vdj7f5hh.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4x5i6dnvni9vdj7f5hh.webp" alt="Portfolio relaunch preview" width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Why the Redesign?
&lt;/h2&gt;

&lt;p&gt;My old site didn’t reflect where I am today as a frontend engineer.&lt;br&gt;&lt;br&gt;
This relaunch better showcases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My technical skills
&lt;/li&gt;
&lt;li&gt;My design sense
&lt;/li&gt;
&lt;li&gt;My ability to write and share clearly
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I learned a lot through this rebuild and plan to share more tutorials and breakdowns soon.  &lt;/p&gt;

&lt;p&gt;Thanks for reading — this post was originally published on &lt;a href="https://www.andrewteece.com/blog/2025-portfolio-launch" rel="noopener noreferrer"&gt;andrewteece.com&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
You can also connect with me on &lt;a href="https://www.linkedin.com/in/andrew-teece/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; or reach me at &lt;a href="//mailto:andrew@andrewteece.com"&gt;andrew@andrewteece.com&lt;/a&gt;.  &lt;/p&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>typescript</category>
      <category>tailwindcss</category>
    </item>
  </channel>
</rss>
