<?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: Marie Otoo</title>
    <description>The latest articles on DEV Community by Marie Otoo (@kathleen_bonaventure).</description>
    <link>https://dev.to/kathleen_bonaventure</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%2F3503425%2F481f0b89-bff7-4014-b9ec-d24891ee8213.jpg</url>
      <title>DEV Community: Marie Otoo</title>
      <link>https://dev.to/kathleen_bonaventure</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kathleen_bonaventure"/>
    <language>en</language>
    <item>
      <title>My Notion MCP Mentoring Assistant</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Mon, 30 Mar 2026 05:42:31 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/my-notion-mcp-mentoring-assistant-434c</link>
      <guid>https://dev.to/kathleen_bonaventure/my-notion-mcp-mentoring-assistant-434c</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;p&gt;I was introduced to the Notion interface a couple of years ago at a four-months course I undertook. We, the participants, had to use it to store various online assets encompassing links to the diverse stretch of resources we had been educated on. Coming across the Notion challenge with MCP, I found it to be an opportunity and a creative addition to the former endeavour.&lt;/p&gt;

&lt;p&gt;Model Context Protocol (MCP) handles the blend of Artificial Intelligence (AI) systems with a wider length of tools. It is a broad concept and this Notion MCP challenge provided an opportunity to delve into it and explore the concepts. The problem addressed was the issue of creating links and hardly remembering the details of what it does.&lt;/p&gt;

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

&lt;p&gt;I built a mentoring assistant that glances through your repository on GitHub to give solid reviews. It analyses the repositories and first commits alongside recent ones to give a push or general insights to the user. The process involves updating Notion with the desired URLs and giving a text input to an AI model to query the data in Notion. The model then does the analysis and presents its interesting findings, which it writes back to Notion by filling the columns automatically. The AI model utilised here and integrated with Notion was Claude. &lt;/p&gt;

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

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

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

&lt;p&gt;The Code and config template can be viewed here &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/KathleenCode" rel="noopener noreferrer"&gt;
        KathleenCode
      &lt;/a&gt; / &lt;a href="https://github.com/KathleenCode/notion_mcp" rel="noopener noreferrer"&gt;
        notion_mcp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      a model context protocol app
    &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;🚀 VibeCheck Mentor: An MCP-Powered Notion Assistant&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A private AI Mentor that lives in your Notion. It turns bookmarks into a learning path using the Model Context Protocol (MCP).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Setup Instructions&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;1. Notion Setup&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Create a database called &lt;code&gt;My Mentor&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Add properties: &lt;code&gt;Topic&lt;/code&gt; (Title), &lt;code&gt;Link&lt;/code&gt; (URL), &lt;code&gt;Mentor's Insight&lt;/code&gt; (Text), &lt;code&gt;Vibe&lt;/code&gt; (Select), &lt;code&gt;Action Item&lt;/code&gt; (Checkbox), &lt;code&gt;Status&lt;/code&gt; (Status).&lt;/li&gt;
&lt;li&gt;Create an internal integration at &lt;a href="https://developers.notion.com" rel="nofollow noopener noreferrer"&gt;developers.notion.com&lt;/a&gt; and connect it to your page.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;2. Claude Desktop Configuration&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Add this to your &lt;code&gt;claude_desktop_config.json&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-json notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;{
  &lt;span class="pl-ent"&gt;"mcpServers"&lt;/span&gt;: {
    &lt;span class="pl-ent"&gt;"notion"&lt;/span&gt;: {
      &lt;span class="pl-ent"&gt;"command"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;npx&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;,
      &lt;span class="pl-ent"&gt;"args"&lt;/span&gt;: [&lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;-y&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;@modelcontextprotocol/server-notion&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;],
      &lt;span class="pl-ent"&gt;"env"&lt;/span&gt;: {
        &lt;span class="pl-ent"&gt;"NOTION_API_KEY"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;YOUR_NOTION_TOKEN_HERE&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;
      }
    }
  }
}&lt;/pre&gt;

&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/KathleenCode/notion_mcp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;p&gt;Notion served as a database to store the repository URLs, mentoring perspectives provided by Claude.ai, and other checks. An account was created, and a new page was clicked with a "/table" command inserted to generate a "table view". The database was set up with assorted columns having properties adjusted to text, checkbox, and others. An integration was linked to the database in Notion. A Claude.ai account was accessed with the connection to Notion configured in the developer settings and connectors. Now, the two apps communicated effortlessly. Claude had access to my Notion workspace. I added a link and a vibe to the Notion database while I summoned Claude to mentor me. Claude entered Notion and took a look at the items to write their corresponding viewpoints directly in the column it identified on its own in the Notion database.&lt;/p&gt;

&lt;p&gt;The database in Notion prior to the inputs from Claude is portrayed in the image&lt;br&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%2Fybu5hmf5uj9a1jri3fav.png" 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%2Fybu5hmf5uj9a1jri3fav.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The integration with the server is displayed here&lt;br&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%2Fzlhww8zdg2zr6gic5arg.png" 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%2Fzlhww8zdg2zr6gic5arg.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Claude Notion bridge is depicted in the image&lt;br&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%2Fmicwy3ohw06tkvwzt25z.png" 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%2Fmicwy3ohw06tkvwzt25z.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although the MCP context is extensive, narrowing it down in this project gave a hands-on feel of a workflow incorporating Notion and Artificial Intelligence agents to improve everyday activities with automation. The MCP outline involved Claude.ai to explore the database schema in Notion and search for the specified entries. It also moved the status autonomously from "new" to "mentoring". This mentoring assistant, powered by MCP, not only keeps links but also reads, analyzes and reveals a technical breakdown.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>The Performance and Architecture of My AIDEAS Project</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Thu, 12 Mar 2026 03:37:15 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/the-performance-and-architecture-of-leanstack-ai-4p6a</link>
      <guid>https://dev.to/kathleen_bonaventure/the-performance-and-architecture-of-leanstack-ai-4p6a</guid>
      <description>&lt;p&gt;Building applications with an utmost focus on the standard CSS feature, although necessary is not of paramount importance. The activity of the app could be mimicked by the appearance in several scenarios.&lt;/p&gt;

&lt;p&gt;For instance, in my &lt;em&gt;Kaguide AI&lt;/em&gt; optimizer, the user interface needs to possess a feel of the GPU clusters and Neural Engines it monitors.&lt;/p&gt;

&lt;p&gt;Moreover, the architecture of &lt;em&gt;Kaguide AI&lt;/em&gt; centres on energetic themes and swift processes that are less devoid of static monitoring.&lt;/p&gt;

&lt;p&gt;Here is a breakdown.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Visuals.
A blue colour theme with a sparkle of high-contrast tones was used to mirror the vibrancy of high performance computing.
The backgrounds had a navy tone to provide a trust ambience for the necessary visualization of data.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The vibrant red and orange colours were used as warnings and emergencies. For clarity and visual appeal, sprinkles of the golden colour were used to contrast the backgrounds.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Performance
Document Object Models(DOM) changes in real-time monitoring does affect the functioning of the app.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;SVG's were used minimally in the project to obstruct the browser's recalculate time across the various user-interface(UI) elements in our app. Limited animations were used which offloads most of the tasks to the GPU's.&lt;/p&gt;

&lt;p&gt;3.The Events and Actions&lt;br&gt;
In handling the app's navigation, parent listeners were used to reduce the event of memory overload.&lt;/p&gt;

&lt;p&gt;Also, overlays were used to provide insights without losing the actual background information.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AWS Integration
The backend of the app utilized AWS services in its orchestration. 
Moreover Kaguide AI included the use of Lambda, API Gateway and others for a seamless integration.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Bottom Line&lt;br&gt;
The user interfaces in fast-driven development should not be a bottleneck. The combination of colour themes in the power zone with event-driven layouts turns raw outputs to aesthetically-pleasing ones.&lt;/p&gt;

&lt;p&gt;The project can be viewed here &lt;a href="https://builder.aws.com/content/3AFyJoTmfcOHPSetnFPFxXYCMT3/aideas-kaguide-ai-your-go-to-guide" rel="noopener noreferrer"&gt;https://builder.aws.com/content/3AFyJoTmfcOHPSetnFPFxXYCMT3/aideas-kaguide-ai-your-go-to-guide&lt;/a&gt; if you have an AWS builder id I would appreciate your support with a like on the article on the AWS builder center, although not mandatory.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>aws</category>
      <category>showdev</category>
    </item>
    <item>
      <title>A Meal Prep Co-Pilot Built with Google Gemini - A Reflection</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Wed, 04 Mar 2026 04:39:16 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/a-meal-prep-co-pilot-built-with-google-gemini-a-reflection-3gb0</link>
      <guid>https://dev.to/kathleen_bonaventure/a-meal-prep-co-pilot-built-with-google-gemini-a-reflection-3gb0</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mlh/built-with-google-gemini-02-25-26"&gt;Built with Google Gemini: Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Meal decisions are not as rosy as enjoying the meal. The majority of individuals might view from a lens, the whole act of recipe preparation as a nightmare. Whereas some dishes are repetitive, eating the same old meal could be tedious. The thought of staring at ingredients to produce dishes is a myth to most, but in this age of Artificial Intelligence, where models are readily available, it is worth a try. This project was implemented during the Major League Hacking (MLH) Global Hack Beginners Week event, where participants completed various challenges. One of these challenges was to create a helper for tasks, under which this meal prep project is categorized. These MLH events happen throughout the year, both in person and virtual and seeing the former uniting with the DEV community to present this challenge is an opportunity to submit the meal prep project I built using Google Gemini.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built with Google Gemini
&lt;/h2&gt;

&lt;p&gt;A meal planner that takes ingredients from your refrigerator and outputs a full-course meal to you. Gemini was used in the brainstorming phase to generate the project outline. Then, further utilized in natural language conversations and exchanges to complete the project. The meal prep app takes an image and scans it with the Gemini API key, obtained from Google AI Studio, to give full recipe suggestions. This app does not just produce recipes; it provides three different meal plans for you to choose from. Particularly, a script in Python code handled the core of this project with several API calls to the &lt;em&gt;gemini-3-flash-preview&lt;/em&gt;. Anytime a person runs this app with the image included, it hits the API to generate the necessary meal outputs. The API key was hidden in an environment variable to secure it, and the Google Generative AI Client libraries were installed as dependencies. Briefly, the script takes the image input by a user and sends it to the model, which then identifies the details to map to full meal recipes.&lt;/p&gt;

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

&lt;p&gt;Google Gemini provided a stock open fridge photo for use in the testing phase of the app. Running the app with the stock photo gave the following meal plans:&lt;/p&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%2Fytg94uywfigkd3eb6p40.png" 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%2Fytg94uywfigkd3eb6p40.png" alt=" " width="728" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Probing maintained &lt;/p&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%2F6b0ptsr2qboz34qgboet.png" 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%2F6b0ptsr2qboz34qgboet.png" alt=" " width="736" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A different image of an open refrigerator filled with farm produce was also used, which gave the output below:&lt;/p&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%2Fjo0tjsmx293v3xnp1ctu.png" 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%2Fjo0tjsmx293v3xnp1ctu.png" alt=" " width="735" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Testing continued&lt;/p&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%2Fxn64nqiwu5i614jy5iot.png" 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%2Fxn64nqiwu5i614jy5iot.png" alt=" " width="724" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A third image of a fridge half-full with fewer ingredients than the previous responded with the below:&lt;/p&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%2F2lwm46tu65n9n5cpr7fg.png" 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%2F2lwm46tu65n9n5cpr7fg.png" alt=" " width="731" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scrutiny ongoing&lt;/p&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%2Fdcql7rluotaojzvuqvnj.png" 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%2Fdcql7rluotaojzvuqvnj.png" alt=" " width="735" height="618"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Google Gemini provided fast and streamlined access to swiftly transform a question or thought into ideas to hold on to. It also helps in explaining and analyzing code snippets to the user. The follow-up questions were generated and provided with answers by Gemini. The unexpected turn was when the model suggested a deprecated model, which it readily modified to the latest one when asked to explain a mishap in the work. The Gemini AI served as an addition to the startup guide &lt;em&gt;gemini-api/docs/quickstart&lt;/em&gt; by summarizing some aspects of it. What dazzled and stayed with me was that an AI Client could be set up with ease with Google Gemini's assistance. In short, the thing I learned about the meal prep co-pilot was that it serves as an everyday tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google Gemini Feedback
&lt;/h2&gt;

&lt;p&gt;Google Gemini made quite profound suggestions for the meal prep app, as listed:&lt;br&gt;
-A history section&lt;br&gt;
-A search for previous meals interface&lt;br&gt;
-Ideas for another app&lt;/p&gt;

&lt;p&gt;It also developed insights into the flash generative AI model used in this work by stating that the model can detect the food items in the images provided to deduce their quantity, whether half-empty or almost full, to prioritize which recipes from its stores of data to show to the user, which saves ample time. Concerning errors, the deprecated &lt;em&gt;gemini-2.0-flash&lt;/em&gt; I used initially in this work, which hit a &lt;em&gt;limit: 0&lt;/em&gt; when running the app. This created friction and was promptly corrected by cross-checking the start-up documentation that Gemini might have overlooked. Gemini always kept on adding more perspectives to improve the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Working with Gemini to build a project was as stepwise as it was educational. Currently, I am optimizing it to a web version suitable for use on Cloud Run. The future of this project, as implied by Gemini, is to tailor the meal prep to serve as outputs for a Keto diet or a Vegan dish inclusive. Even more, to put the folder that houses the images into Google Cloud Storage.&lt;br&gt;
The git repository can be viewed here &lt;a href="https://github.com/KathleenCode/fridge-prep" rel="noopener noreferrer"&gt;https://github.com/KathleenCode/fridge-prep&lt;/a&gt; &lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>geminireflections</category>
      <category>gemini</category>
      <category>ai</category>
    </item>
    <item>
      <title>Book Chapter</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Mon, 02 Mar 2026 04:53:29 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/book-chapter-3jpl</link>
      <guid>https://dev.to/kathleen_bonaventure/book-chapter-3jpl</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/weekend-2026-02-28"&gt;DEV Weekend Challenge: Community&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community
&lt;/h2&gt;

&lt;p&gt;Book clubs foster human connections and relationships. They are everywhere and, in modern times, have also transitioned into the online space. The book club community consists of reading enthusiasts ranging from beginners to experts who schedule meeting times to assemble and discuss chapters of a picked book. In some areas, anyone can join one of these clubs, whereas for others, it is purely by invitation. The readers always have diverse opinions on some chapters and surprisingly unified ones on others. Some go ahead to fetch insights from others, while some try to teach and relate with their personal lives. The daunts are many as in every human society, but for this project, I picked a few.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The difficulties of joining a book club lie in keeping in par with &lt;br&gt;
the varying reading levels of each member of the club. Joining a book club that meets at a maximum of once a week can be a hurdle for some. The pain point here includes reading the required chapter before meeting for the discussions on the chosen book. This makes others trail behind or get ahead of themselves without fully immersing themselves in every alphabet, word, paragraph of every chapter of the book. As part of the Dev Weekend Challenge, we are to build an app that serves a community, and the chosen one on my part was the book club community.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a book chapter app that gives ample time for readers to catch up with the book review sessions without getting input from those who have already finished reading the book. The project was built with Next.js and &lt;em&gt;Supabase&lt;/em&gt;. Next was utilized because of its integrations with pages and &lt;em&gt;Supabase&lt;/em&gt; was used because of its ease of setup. Next was incorporated with Typescript and Tailwind CSS, whereas the &lt;em&gt;Supabase&lt;/em&gt; had keys to help with the project interaction with Next. Simply put, Next served as the frontend with the &lt;em&gt;Supabase&lt;/em&gt; database as the backend. The browser persisted the data review. The frontend consisted of an interface that perfectly mimicked an actual book with colour themes, borders, giving the same warmth to readers as a book in hand would. An SQL table was created in the Supabase platform to store the received inputs from the frontend with the options to perform edit and other operations on them. The seamless integration of Next with Supabase streamlined the project. &lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The demonstration video has a user in action. The reader first chooses to write their insights on the chapter they just read and specifies it by selecting the chapter number. Upon posting, when the user intends to read from the upcoming chapters, the information then blurs instantly. This serves as a check to reduce unnecessary curiosity about the chapters remaining and increase anticipation to read with guesses. You can view it here 

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


.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The SQL table creation in &lt;em&gt;Supabase&lt;/em&gt;.&lt;/p&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%2F6mvjzhdi9wp505l2mdrm.png" 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%2F6mvjzhdi9wp505l2mdrm.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app layout.&lt;/p&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%2Fxhvqs8lhaq1ywt4lorzx.png" 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%2Fxhvqs8lhaq1ywt4lorzx.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source code can be viewed here 

&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/KathleenCode" rel="noopener noreferrer"&gt;
        KathleenCode
      &lt;/a&gt; / &lt;a href="https://github.com/KathleenCode/book-review" rel="noopener noreferrer"&gt;
        book-review
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      a book review app
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;This is a &lt;a href="https://nextjs.org" rel="nofollow noopener noreferrer"&gt;Next.js&lt;/a&gt; project bootstrapped with &lt;a href="https://nextjs.org/docs/app/api-reference/cli/create-next-app" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;create-next-app&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;First, run the development server:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
yarn dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
pnpm dev
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; or&lt;/span&gt;
bun dev&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Open &lt;a href="http://localhost:3000" rel="nofollow noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; with your browser to see the result.&lt;/p&gt;
&lt;p&gt;You can start editing the page by modifying &lt;code&gt;app/page.tsx&lt;/code&gt;. The page auto-updates as you edit the file.&lt;/p&gt;
&lt;p&gt;This project uses &lt;a href="https://nextjs.org/docs/app/building-your-application/optimizing/fonts" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;next/font&lt;/code&gt;&lt;/a&gt; to automatically optimize and load &lt;a href="https://vercel.com/font" rel="nofollow noopener noreferrer"&gt;Geist&lt;/a&gt;, a new font family for Vercel.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Learn More&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;To learn more about Next.js, take a look at the following resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/docs" rel="nofollow noopener noreferrer"&gt;Next.js Documentation&lt;/a&gt; - learn about Next.js features and API.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nextjs.org/learn" rel="nofollow noopener noreferrer"&gt;Learn Next.js&lt;/a&gt; - an interactive Next.js tutorial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can check out &lt;a href="https://github.com/vercel/next.js" rel="noopener noreferrer"&gt;the Next.js GitHub repository&lt;/a&gt; - your feedback and contributions are welcome!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deploy on Vercel&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The easiest way to deploy your Next.js app is to use the &lt;a href="https://vercel.com/new?utm_medium=default-template&amp;amp;filter=next.js&amp;amp;utm_source=create-next-app&amp;amp;utm_campaign=create-next-app-readme" rel="nofollow noopener noreferrer"&gt;Vercel Platform&lt;/a&gt; from the creators of Next.js.&lt;/p&gt;
&lt;p&gt;Check out our &lt;a href="https://nextjs.org/docs/app/building-your-application/deploying" rel="nofollow noopener noreferrer"&gt;Next.js deployment documentation&lt;/a&gt; for more…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/KathleenCode/book-review" 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;p&gt;The project was built by first creating a Next.js app with the command &lt;code&gt;npx create-next-app@latest&lt;/code&gt; and setting up the &lt;em&gt;Supabase&lt;/em&gt; client library by installation. Next, a &lt;em&gt;Supabase&lt;/em&gt; URL and an anon key were generated from &lt;em&gt;supabase.com&lt;/em&gt;. The tailwind CSS code had a general theme for the project. The main user interface had the app.js providing a form for user input, buttons, and placeholders to guide the users. The book chapter app was run on localhost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This book chapter app shrinks bias as users take time to reflect and write their own viewpoints without the influence of the pre-written reflections of others in the book club. This project in sum, tackles one of the many unresolved problems in book clubs - one reader finishing before another and telling everything before others get the chance to do so. It simply creates an atmosphere for members of a book club to read in harmony and saves the surprises of the chapter and plot twists for everyone.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>showdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Built a Colour-Guessing Game with HTML, CSS and JavaScript</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Thu, 26 Feb 2026 05:20:22 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/built-a-colour-guessing-game-with-html-css-and-javascript-21jb</link>
      <guid>https://dev.to/kathleen_bonaventure/built-a-colour-guessing-game-with-html-css-and-javascript-21jb</guid>
      <description>&lt;p&gt;A colour-guessing game was built as practice for my frontend development.&lt;/p&gt;

&lt;p&gt;This colour-guessing game:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;consists of three files, an index.html, a style.css and a script.js.&lt;/li&gt;
&lt;li&gt;has random colour generation&lt;/li&gt;
&lt;li&gt;Resets properly&lt;/li&gt;
&lt;li&gt;Scores points&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started, create and open your project folder in VS Code or any code editor of your choice. Create three files as stated above.&lt;/p&gt;

&lt;p&gt;The index.html has the basic layout for the game. &lt;br&gt;
It displays a box, game status, score and a new game button.&lt;/p&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%2Fzi1x2gg39m6g4axhgld0.png" 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%2Fzi1x2gg39m6g4axhgld0.png" alt=" " width="740" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The basic styling with code below includes large buttons, hover animations and a card layout, to make the game interface visually appealing.&lt;/p&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%2Fpzdwliw8y1s3go7x0wy8.png" 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%2Fpzdwliw8y1s3go7x0wy8.png" alt=" " width="508" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The game logic is hidden in the script.js.&lt;br&gt;
A random colour is generated on each page reload with six buttons also generated waiting to be clicked.&lt;br&gt;
If accurate score increases, else score diminishes.&lt;/p&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%2Fcaf79fuv403effea85bl.png" 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%2Fcaf79fuv403effea85bl.png" alt=" " width="561" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project entails simple features and is a fun start in frontend.&lt;br&gt;
To run this project simply open the index.html in a browser.&lt;/p&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>Built a Simple Node.js Express API</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Tue, 24 Feb 2026 03:51:02 +0000</pubDate>
      <link>https://dev.to/kathleen_bonaventure/built-a-simple-nodejs-express-api-4ihc</link>
      <guid>https://dev.to/kathleen_bonaventure/built-a-simple-nodejs-express-api-4ihc</guid>
      <description>&lt;p&gt;I decided to try my hand at API development and began with a beginner-friendly project. I built a simple API in a Node environment using Express. This API provided hands-on experience and practice in the field of backend development.&lt;/p&gt;

&lt;p&gt;In this simple project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An API was built with Node and Express&lt;/li&gt;
&lt;li&gt;The API returned JSON data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To get started, I set up my code editor, VS Code, and made sure Node.js was installed. It can be checked by running in the terminal or bash:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node -v&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or downloaded from:&lt;br&gt;


&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://nodejs.org/en" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;nodejs.org&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;br&gt;
if not already installed.

&lt;p&gt;I continued by typing:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm init -y&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npm install express cors&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Cross-origin resource sharing (CORS) makes the browser interact easily with the backend. Then confirm the dependencies in the folder in your chosen text editor or VS Code.&lt;/p&gt;

&lt;p&gt;Next, I created an index.js with the code below.&lt;/p&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%2Fk4n34s0zzooil7na9ubu.png" 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%2Fk4n34s0zzooil7na9ubu.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To run the app:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and open&lt;/p&gt;

&lt;p&gt;&lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;in a browser to see the message, including the email and time.&lt;/p&gt;

&lt;p&gt;This app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a Node Express server&lt;/li&gt;
&lt;li&gt;Enabled CORS, cross-origin requests&lt;/li&gt;
&lt;li&gt;Created a "GET /" route&lt;/li&gt;
&lt;li&gt;Returned a JSON response
-Created a Node Express server&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
    </item>
    <item>
      <title>A CURSED TAROT</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Fri, 05 Dec 2025 04:15:55 +0000</pubDate>
      <link>https://dev.to/kirodotdev/a-cursed-tarot-3i0k</link>
      <guid>https://dev.to/kirodotdev/a-cursed-tarot-3i0k</guid>
      <description>&lt;p&gt;Imagine attending a Halloween party to enjoy the pumpkin pies and gooky atmosphere, devoid of online scare. It gives a party vibe with a touch of horror. Now, a characteristic spookiness could be added to the scary event and revamped with the Cursed Tarot application.&lt;/p&gt;

&lt;p&gt;The Cursed Tarot app was built with Kiro IDE. It is a Gothic app that features a horrifying welcome page to scare users, a horrific tale, with a silent candle flickering eerily, a dark card collection from which to draw a game of electrifying fate, and a smashing zombie game. This wicked app has a Harry Potter theme in the middle, detailing the houses, named in the movie, owl-wise quizzes about the book, and pure randomness. The technological language stack iciness is loosely based on the revived COBOL to serve the backend logic of this cursed application. In addition, the Frankenstein element combines the age-old COBOL with modern HTML in an oddly eerie fashion. It is just chaotic. In an invisible note, the design consists of small ogres, vampires, and werewolves, with haunted mansions in the background.&lt;/p&gt;

&lt;p&gt;To conclude, this subtly ghastly application is run locally on a computer with a web browser pre-installed. This is a card game that possesses obsolete technology, intertwined with current stacks for a complete goosebump-inducing experience.&lt;/p&gt;

</description>
      <category>kiro</category>
    </item>
    <item>
      <title>A WORD-PICKER STORY APP WITH KIRO</title>
      <dc:creator>Marie Otoo</dc:creator>
      <pubDate>Mon, 15 Sep 2025 11:03:07 +0000</pubDate>
      <link>https://dev.to/kirodotdev/a-word-picker-story-app-with-kiro-6go</link>
      <guid>https://dev.to/kirodotdev/a-word-picker-story-app-with-kiro-6go</guid>
      <description>&lt;p&gt;Story applications have interesting scopes attached to them. Some give users the option to generate their own storyline, whereas others have already created scripts for users to enjoy.&lt;br&gt;
It is a wonder when users, upon using such applications or a traditional storybook, take note of novel words to cross-check meanings at a later time or never. &lt;br&gt;
An application that picks keywords and gives their meaning so a user can follow the story context while reading was built with Kiro. Vibe coding by simple text served as input for Kiro to generate the original draft. Then hooks were added to automate the process. In general, a functional app was built with Kiro. It was sublime.&lt;/p&gt;

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