<?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: Baruna Abirawa</title>
    <description>The latest articles on DEV Community by Baruna Abirawa (@baruna_abirawa_374ef1f781).</description>
    <link>https://dev.to/baruna_abirawa_374ef1f781</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%2F3594397%2Fa36b00c5-bcbf-4403-860e-ce84738fac6d.jpg</url>
      <title>DEV Community: Baruna Abirawa</title>
      <link>https://dev.to/baruna_abirawa_374ef1f781</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/baruna_abirawa_374ef1f781"/>
    <language>en</language>
    <item>
      <title>Rivalry Roast 🔥 — AI-Powered World Cup Banter Generator</title>
      <dc:creator>Baruna Abirawa</dc:creator>
      <pubDate>Mon, 13 Jul 2026 01:30:47 +0000</pubDate>
      <link>https://dev.to/baruna_abirawa_374ef1f781/rivalry-roast-ai-powered-world-cup-banter-generator-4j0e</link>
      <guid>https://dev.to/baruna_abirawa_374ef1f781/rivalry-roast-ai-powered-world-cup-banter-generator-4j0e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-07-09"&gt;Weekend Challenge: Passion Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Rivalry Roast&lt;/strong&gt; is a fun web app that generates hilarious, AI-powered roasts about rivalries between World Cup 2026 teams. Pick any two national teams, hit "Roast Them!", and get a witty commentary packed with football banter, historical references, and cheeky one-liners — all delivered in the style of a charismatic football commentator.&lt;/p&gt;

&lt;p&gt;The idea was born from the "passion" theme: football fans express their love for their team through friendly banter and rivalry trash talk. This project celebrates that culture in a shareable, lighthearted way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🏳️ Select from all 48 World Cup 2026 qualified nations (with real flag images)&lt;/li&gt;
&lt;li&gt;🔥 AI generates unique, funny roasts for every team combination&lt;/li&gt;
&lt;li&gt;🔊 Text-to-speech reads the roast aloud automatically&lt;/li&gt;
&lt;li&gt;📋 Copy &amp;amp; Share buttons for social media&lt;/li&gt;
&lt;li&gt;🎨 Premium dark UI with glassmorphism, fire-themed gradients, and smooth animations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://rivalryroast.vercel.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/barunaxyz" rel="noopener noreferrer"&gt;
        barunaxyz
      &lt;/a&gt; / &lt;a href="https://github.com/barunaxyz/rivalryroast" rel="noopener noreferrer"&gt;
        rivalryroast
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Rivalry Roast 🔥 — AI-Powered World Cup Banter Generator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://rivalryroast.vercel.app/" rel="nofollow noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is it?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Rivalry Roast&lt;/strong&gt; is a fun web app that generates hilarious, AI-powered roasts about rivalries between World Cup 2026 teams. Pick any two national teams, hit "Roast Them!", and get a witty commentary packed with football banter, historical references, and cheeky one-liners — all delivered in the style of a charismatic football commentator.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🏳️ Select from all 48 World Cup 2026 qualified nations (with real flag images)&lt;/li&gt;
&lt;li&gt;🔥 AI generates unique, funny roasts for every team combination&lt;/li&gt;
&lt;li&gt;🔊 Text-to-speech reads the roast aloud automatically&lt;/li&gt;
&lt;li&gt;📋 Copy &amp;amp; Share buttons for social media&lt;/li&gt;
&lt;li&gt;🎨 Premium dark UI with glassmorphism, fire-themed gradients, and smooth animations&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tech Stack&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React (via Vite)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Styling&lt;/strong&gt;: Tailwind CSS v4&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI&lt;/strong&gt;: Google Gemini API (&lt;code&gt;gemini-2.5-flash&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speech&lt;/strong&gt;: Web Speech API (browser built-in)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flags&lt;/strong&gt;: flagcdn.com (free CDN)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/barunaxyz/rivalryroast" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;React (via Vite)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Styling&lt;/td&gt;
&lt;td&gt;Tailwind CSS v4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Google Gemini API (&lt;code&gt;gemini-2.5-flash&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speech&lt;/td&gt;
&lt;td&gt;Web Speech API (browser built-in)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flags&lt;/td&gt;
&lt;td&gt;flagcdn.com (free CDN)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;The app is intentionally simple — a single-page frontend with no backend or database. All "rivalry knowledge" comes directly from Google Gemini's general knowledge, making the scope small enough for a weekend build.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User picks Team A &amp;amp; Team B
        ↓
Prompt sent to Gemini API:
"You are a witty football commentator. Generate a
funny roast about the rivalry between [Team A] and
[Team B] in the World Cup context..."
        ↓
AI response displayed as a styled "roast card"
+ auto-read aloud via Text-to-Speech
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Interesting Technical Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Prompt Engineering for Safe Humor&lt;/strong&gt;&lt;br&gt;
The key challenge was making Gemini consistently produce funny content without crossing into offensive territory. The prompt explicitly instructs the model to keep things "friendly and funny," include real historical references, and write in a style "fans of BOTH teams would laugh at."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. No Database Needed&lt;/strong&gt;&lt;br&gt;
Instead of building a rivalry database, I let the AI model handle all the historical context. This keeps the project scope minimal while still producing rich, contextual content — Gemini knows about Argentina vs Brazil, England vs Germany, and even lesser-known matchups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Flag Images Over Emoji&lt;/strong&gt;&lt;br&gt;
Windows doesn't render flag emojis natively (they show as letter codes like "AR" instead of 🇦🇷). I switched to real flag images from &lt;a href="https://flagcdn.com" rel="noopener noreferrer"&gt;flagcdn.com&lt;/a&gt; for cross-platform consistency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Markdown Stripping&lt;/strong&gt;&lt;br&gt;
Despite prompting for plain text, Gemini occasionally returns markdown formatting (&lt;code&gt;**bold**&lt;/code&gt;). A &lt;code&gt;stripMarkdown&lt;/code&gt; utility cleans the output before rendering.&lt;/p&gt;
&lt;h3&gt;
  
  
  Google Gemini Integration
&lt;/h3&gt;

&lt;p&gt;The core of the app is the Gemini API call using the &lt;code&gt;@google/genai&lt;/code&gt; SDK:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;GoogleGenAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@google/genai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleGenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_GEMINI_API_KEY&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generateRoast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;teamA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;teamB&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateContent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gemini-2.5-flash&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;buildRoastPrompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;teamA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;teamB&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemini 2.5 Flash was chosen for its speed (roasts generate in 2-5 seconds) and its strong general knowledge about football history and culture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Google AI&lt;/strong&gt; — Google Gemini API (&lt;code&gt;gemini-2.5-flash&lt;/code&gt;) is the core engine that powers the entire app. Every roast is uniquely generated in real-time based on the user's team selection, leveraging Gemini's knowledge of football history, rivalries, and cultural context to produce entertaining, safe-for-all-ages commentary.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>Solstice Farm 🌾 - Submission for the June Solstice Game Jam</title>
      <dc:creator>Baruna Abirawa</dc:creator>
      <pubDate>Sun, 21 Jun 2026 14:21:07 +0000</pubDate>
      <link>https://dev.to/baruna_abirawa_374ef1f781/solstice-farm-submission-for-the-june-solstice-game-jam-4p81</link>
      <guid>https://dev.to/baruna_abirawa_374ef1f781/solstice-farm-submission-for-the-june-solstice-game-jam-4p81</guid>
      <description>&lt;h2&gt;
  
  
  Solstice Farm 🌾
&lt;/h2&gt;

&lt;p&gt;Welcome to &lt;strong&gt;Solstice Farm&lt;/strong&gt;, a relaxing farming simulator made specifically for the June Solstice Game Jam! ☀️&lt;/p&gt;

&lt;p&gt;In this game, you have exactly one day (from dawn until dusk) to grow crops, water them, harvest, and sell them to the shop before the solstice sun sets. &lt;/p&gt;

&lt;h3&gt;
  
  
  🎮 Play the Game!
&lt;/h3&gt;

&lt;p&gt;You can play the game directly in your browser here:&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://solstice-farm.vercel.app/" rel="noopener noreferrer"&gt;https://solstice-farm.vercel.app/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: It may take a few seconds to load the Python engine on your first visit!)&lt;/em&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  🎥 Gameplay Demo
&lt;/h3&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/nOMaHvbaFyA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;




&lt;h3&gt;
  
  
  🛠️ How I Built It
&lt;/h3&gt;

&lt;p&gt;I built this game using &lt;strong&gt;Python&lt;/strong&gt; and the &lt;strong&gt;Pygame&lt;/strong&gt; library. Since I wanted everyone to be able to play it easily without downloading anything, I compiled the Python code into WebAssembly using &lt;strong&gt;Pygbag&lt;/strong&gt; and hosted it via Vercel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Farming Mechanics:&lt;/strong&gt; Till soil, plant seeds, water crops, and harvest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Sky:&lt;/strong&gt; The background sky changes color smoothly from morning to sunset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Golden Hour:&lt;/strong&gt; Crops harvested just before sunset yield 2x the gold!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Immersive Audio:&lt;/strong&gt; Background music and sound effects for tools and interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💻 Source Code
&lt;/h3&gt;

&lt;p&gt;Feel free to check out the code, give it a star ⭐, and see how it works under the hood:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/barunaxyz" rel="noopener noreferrer"&gt;
        barunaxyz
      &lt;/a&gt; / &lt;a href="https://github.com/barunaxyz/solstice-farm" rel="noopener noreferrer"&gt;
        solstice-farm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A mini Harvest Moon-style farming game set on the longest day of the year. Built for DEV June Solstice Game Jam 2026.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🌾 Solstice Farm&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;A mini Harvest Moon-style farming game set on the longest day of the year.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/june-game-jam-2026-06-03" rel="nofollow"&gt;June Solstice Game Jam&lt;/a&gt; on DEV Community.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎮 About the Game&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;It's the &lt;strong&gt;Summer Solstice&lt;/strong&gt; — the longest day of the year. You've inherited an old farm from your grandfather, and you have one extraordinary, sun-drenched day to bring it back to life.&lt;/p&gt;
&lt;p&gt;Plant seeds, till the soil, water your crops, and harvest them before the solstice sun sets. Sell your harvest at the shop to buy better seeds. Every second of sunlight counts — crops grow fastest at midday when the sun is at its peak!&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🧑‍🌾 &lt;strong&gt;Top-down player character&lt;/strong&gt; — Walk around your farm with WASD/Arrow keys&lt;/li&gt;
&lt;li&gt;🗺️ &lt;strong&gt;Tile-based world&lt;/strong&gt; — Explore your farm, the shop, and the water well&lt;/li&gt;
&lt;li&gt;🌱 &lt;strong&gt;Full farming cycle&lt;/strong&gt; — Till → Water → Plant → Grow → Harvest&lt;/li&gt;
&lt;li&gt;🌻 &lt;strong&gt;5&lt;/strong&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/barunaxyz/solstice-farm" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  👥 Team
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Baruna&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bastian Heskia Silaban😎&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🏆 Categories I'm Entering
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Main Prompt&lt;/strong&gt;: The entire core loop of &lt;em&gt;Solstice Farm&lt;/em&gt; is built around the passage of time on the solstice day. The dynamic sky changes color as the day progresses, and players must rush to harvest before the solstice sun sets!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Google AI Usage&lt;/strong&gt;: I used Google's DeepMind AI (Antigravity/Gemini) as my pair-programming partner! The AI helped me architect the Pygame loop, debug WebAssembly compilation issues, convert audio formats for the web, and successfully deploy the game to Vercel.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  🌟 Reflections
&lt;/h3&gt;

&lt;p&gt;This Game Jam was an amazing experience! Building a web-playable game using Python had its challenges (like handling WebAssembly scaling and audio formats), but figuring them out was incredibly rewarding. &lt;/p&gt;

&lt;p&gt;Thank you for playing, and I hope you enjoy your time at the farm! Let me know what your highest gold score is in the comments! 👇&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
      <category>python</category>
    </item>
    <item>
      <title>Life Doc AI: Transforming Notion Journals into Cinematic Documentaries</title>
      <dc:creator>Baruna Abirawa</dc:creator>
      <pubDate>Sat, 28 Mar 2026 13:23:04 +0000</pubDate>
      <link>https://dev.to/baruna_abirawa_374ef1f781/life-doc-ai-transforming-notion-journals-into-cinematic-documentaries-336</link>
      <guid>https://dev.to/baruna_abirawa_374ef1f781/life-doc-ai-transforming-notion-journals-into-cinematic-documentaries-336</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/notion-2026-03-04"&gt;Notion MCP Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Life Doc AI&lt;/strong&gt; is a Python-based intelligent web application that transforms your Notion workspace—specifically your Life Events and Journal Entries—into a beautifully structured, cinematic documentary of your personal journey. &lt;/p&gt;

&lt;p&gt;Instead of looking at raw text or Kanban boards, Life Doc AI uses the &lt;strong&gt;Notion Model Context Protocol (MCP)&lt;/strong&gt; to securely fetch your milestones and reflections, and relies on an AI Agent (powered by OpenAI GPT-4o with robust rule-based fallbacks) to process them. The result is a Premium Streamlit UI that presents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📜 &lt;strong&gt;The Story of You&lt;/strong&gt;: An AI-crafted, dramatic narrative of your life.&lt;/li&gt;
&lt;li&gt;⏳ &lt;strong&gt;Chronological Timeline&lt;/strong&gt;: Analyzing the dots and connecting your journey.&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Era Chapters&lt;/strong&gt;: Automatically grouping your life into meaningful, thematic chapters.&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Psychological Insights&lt;/strong&gt;: Extracting hidden patterns, your most active years, and measuring your resilience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/_2vWrjqrQkA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us the code
&lt;/h2&gt;

&lt;p&gt;Here is the complete open-source repository on GitHub!&lt;br&gt;
&lt;a href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="ltag-github-readme-tag"&gt;&lt;a href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;
  &lt;/a&gt;&lt;div class="readme-overview"&gt;&lt;a href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;
    &lt;/a&gt;&lt;h2&gt;&lt;a href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;
      &lt;/a&gt;&lt;a href="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;&lt;/a&gt;
      &lt;a href="https://github.com/barunaxyz" rel="noopener noreferrer"&gt;
        barunaxyz
      &lt;/a&gt; / &lt;a href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;
        life-doc-ai
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎬 Life Doc AI&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Transform your Notion journals and life events into an AI-crafted cinematic documentary of your personal journey.&lt;/p&gt;


&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Life Doc AI&lt;/strong&gt; connects to your Notion workspace via the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;, reads your life events and journal entries, and generates a beautiful documentary narrative — complete with timeline, chapters, and psychological insights.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;🔌 &lt;strong&gt;Notion MCP Integration&lt;/strong&gt; — Communicates with Notion through MCP protocol (JSON-RPC over HTTP)&lt;/li&gt;
&lt;li&gt;📖 &lt;strong&gt;Life Events Timeline&lt;/strong&gt; — Chronological visualization of your milestones&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Auto-Generated Chapters&lt;/strong&gt; — Groups your life into meaningful eras&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Psychological Insights&lt;/strong&gt; — Analyzes patterns, most active years, and impact metrics&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;AI Narrative&lt;/strong&gt; — Crafts a cinematic story from your data (via OpenAI GPT-4 or built-in generator)&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Premium UI&lt;/strong&gt; — Dark theme with glassmorphism, gradient accents, and smooth animations&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ Architecture&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;┌───────────────────┐     MCP Protocol     ┌──────────────────────┐     Notion API    ┌─────────┐
│  Streamlit App    │ ◄──────────────────► │  Python&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/barunaxyz/life-doc-ai" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Notion MCP
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Notion MCP&lt;/strong&gt; was the absolute core of this project, bridging the gap between my private workspace and my AI generation engine securely.&lt;/p&gt;

&lt;p&gt;I built a custom Python MCP Server (&lt;code&gt;mcp/mcp_server.py&lt;/code&gt;) that wraps the Notion REST API and exposes tools like &lt;code&gt;notion_query_database&lt;/code&gt; over a JSON-RPC HTTP transport layer. &lt;br&gt;
When the user clicks "Generate", the Streamlit UI (acting as the MCP Client) fires a remote procedure call to the local server. The MCP Server negotiates with Notion, retrieves the &lt;code&gt;Life Events&lt;/code&gt; and &lt;code&gt;Journal Entries&lt;/code&gt; databases, and returns a clean, structured JSON payload.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Developer Journey
&lt;/h3&gt;

&lt;p&gt;This project represents the culmination of my recent developer journey. A few weeks ago, I was figuring out static web portfolios. That evolved into mastering containerized &lt;code&gt;FastAPI&lt;/code&gt; backends, and eventually wrestling with complex NLP text preprocessing errors. &lt;/p&gt;

&lt;p&gt;When the Notion MCP Challenge was announced, I realized I could combine all those skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The backend architecture knowledge helped me build a robust, thread-safe Python MCP Server.&lt;/li&gt;
&lt;li&gt;The NLP experience allowed me to craft intelligent prompts and structured LLM parsing.&lt;/li&gt;
&lt;li&gt;The web development skills helped me design a "Glassmorphism" Dark Theme Premium UI in Streamlit (&lt;code&gt;.streamlit/config.toml&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Life Doc AI&lt;/strong&gt; doesn't just read data; it understands it. The Notion MCP unlocked the ability to treat Notion not just as a note-taking app, but as the &lt;em&gt;engine of a person's life story&lt;/em&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
