<?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: Zoey Haynes</title>
    <description>The latest articles on DEV Community by Zoey Haynes (@zoey_haynes_0a5e9dbbb7219).</description>
    <link>https://dev.to/zoey_haynes_0a5e9dbbb7219</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063842%2Ff6765dda-1e28-404b-95fe-4fcac0b66c3f.jpg</url>
      <title>DEV Community: Zoey Haynes</title>
      <link>https://dev.to/zoey_haynes_0a5e9dbbb7219</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zoey_haynes_0a5e9dbbb7219"/>
    <language>en</language>
    <item>
      <title>How I Built an AI-Powered Digital Advent Calendar with Angular &amp; Google Gemini</title>
      <dc:creator>Zoey Haynes</dc:creator>
      <pubDate>Wed, 05 Aug 2026 09:01:35 +0000</pubDate>
      <link>https://dev.to/zoey_haynes_0a5e9dbbb7219/how-i-built-an-ai-powered-digital-advent-calendar-with-angular-google-gemini-1mcp</link>
      <guid>https://dev.to/zoey_haynes_0a5e9dbbb7219/how-i-built-an-ai-powered-digital-advent-calendar-with-angular-google-gemini-1mcp</guid>
      <description>&lt;h2&gt;
  
  
  🎯 The Core Problem &amp;amp; Concept
&lt;/h2&gt;

&lt;p&gt;Traditional countdown tools are often static, tedious to fill out day-by-day, or lack engaging UI/UX. My goal was to combine:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instant Content Generation&lt;/strong&gt;: Using AI to generate 24+ daily unique surprises (messages, riddles, quotes) tailored to any topic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich Visual Editor&lt;/strong&gt;: Letting users design individual doors/cases with custom images, text, and password protection.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. &lt;strong&gt;Cross-Platform Access&lt;/strong&gt;: Web app + dedicated mobile viewer app.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🤖 1. Integrating Google Gemini for AI Content Generation
&lt;/h2&gt;

&lt;p&gt;Filling 24 calendar doors manually can be time-consuming. To solve this, I integrated &lt;strong&gt;Google Gemini AI&lt;/strong&gt; into the creation workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The user provides a &lt;strong&gt;theme&lt;/strong&gt; (e.g., &lt;em&gt;"Romantic Holiday Quotes"&lt;/em&gt;, &lt;em&gt;"Tech Trivia for Developers"&lt;/em&gt;, &lt;em&gt;"Daily Wellness Tips"&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;The prompt sent to Gemini specifies structured JSON output for each day (1 to 24), containing a title, description, and keyword tags.&lt;/li&gt;
&lt;li&gt;We query &lt;strong&gt;Unsplash API&lt;/strong&gt; using these keyword tags to automatically suggest copyright-free background photos for each door!
This reduces calendar creation time from &lt;strong&gt;30 minutes to under 20 seconds&lt;/strong&gt;.
---
## 🎨 2. Open-Sourcing the Interactive Case Builder
One of the biggest technical challenges was building an intuitive WYSIWYG editor for calendar doors — allowing users to customize text styles, image alignment, and secret unlock dates.
Instead of keeping this proprietary, we decided to extract the core editor component and open-source it for the Angular community!
👉 &lt;strong&gt;Check out the repository on GitHub&lt;/strong&gt;: &lt;a href="https://github.com/zhaynes067-web/case-builder" rel="noopener noreferrer"&gt;github.com/zhaynes067-web/case-builder&lt;/a&gt;
### Key Features of Case Builder:&lt;/li&gt;
&lt;li&gt;📱 Fully responsive preview mode (mobile &amp;amp; desktop views).&lt;/li&gt;
&lt;li&gt;🔒 Support for password-protected secret doors.&lt;/li&gt;
&lt;li&gt;🌐 Ready for i18n / multi-language support.
Feel free to ⭐ star the repository if you're building interactive Angular tools!
---
## 🚀 3. Tech Stack Summary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: Angular (Standalone Components, RxJS, NgRx Signal Stores)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: Node.js / Express API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Integration&lt;/strong&gt;: Google Gemini API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image Integration&lt;/strong&gt;: Unsplash API&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 What's Next?
&lt;/h2&gt;

&lt;p&gt;Building &lt;strong&gt;DailyReveal&lt;/strong&gt; has been an incredible journey of combining generative AI with interactive frontend experiences.&lt;br&gt;
If you’d like to try it out or create your own calendar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Live Web App&lt;/strong&gt;: &lt;a href="https://dailyreveal.app" rel="noopener noreferrer"&gt;DailyReveal.app&lt;/a&gt; &lt;em&gt;(Check out our &lt;a href="https://dailyreveal.app/en/what-is-new" rel="noopener noreferrer"&gt;What's New page&lt;/a&gt; for recent features!)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
    </item>
  </channel>
</rss>
