<?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: Nam Ngô</title>
    <description>The latest articles on DEV Community by Nam Ngô (@nam_ng_c921e1abaeafad097).</description>
    <link>https://dev.to/nam_ng_c921e1abaeafad097</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%2F3719776%2F995c7a55-d49d-4af4-8562-86ab6331482b.jpg</url>
      <title>DEV Community: Nam Ngô</title>
      <link>https://dev.to/nam_ng_c921e1abaeafad097</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nam_ng_c921e1abaeafad097"/>
    <language>en</language>
    <item>
      <title>I vibe-coded a portfolio within two prompts, and this is the result</title>
      <dc:creator>Nam Ngô</dc:creator>
      <pubDate>Thu, 22 Jan 2026 15:04:02 +0000</pubDate>
      <link>https://dev.to/nam_ng_c921e1abaeafad097/i-vibe-coded-a-portfolio-within-two-prompts-and-this-is-the-result-3fn8</link>
      <guid>https://dev.to/nam_ng_c921e1abaeafad097/i-vibe-coded-a-portfolio-within-two-prompts-and-this-is-the-result-3fn8</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;I'm a backend-focused software engineer working in the banking domain, with a growing interest in AI-assisted development and how modern tools can reshape the way we build software.&lt;/p&gt;

&lt;p&gt;This portfolio wasn’t planned in detail or designed with a big upfront architecture. Instead, it came from an experiment I kept simple on purpose:&lt;br&gt;
&lt;strong&gt;What happens if I vibe-code a portfolio using only two prompts?&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://portfolio-634018656400.asia-southeast1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;




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

&lt;p&gt;The entire portfolio came from &lt;strong&gt;two prompts&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt 1 — Initialization (Antigravity IDE)
&lt;/h3&gt;

&lt;p&gt;I started inside &lt;strong&gt;Antigravity&lt;/strong&gt;, a Google IDE with integrated AI agents.&lt;br&gt;&lt;br&gt;
I didn’t provide wireframes, assets, or detailed specs — just a loose idea:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I want a portfolio that feels like a 2D pixel-art game start screen, showing my stats, skills, and achievements.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The AI agent suggested a concrete plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a game-style UI&lt;/li&gt;
&lt;li&gt;character stats as skills&lt;/li&gt;
&lt;li&gt;inventory as tech stack&lt;/li&gt;
&lt;li&gt;achievements as milestones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All I really did was &lt;strong&gt;approve the plan and iterate lightly&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
That alone got me to a working, polished portfolio that already felt &lt;em&gt;good&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt 2 — Making It “Wow”
&lt;/h3&gt;

&lt;p&gt;At that point, the site worked and looked fine — but it felt like &lt;strong&gt;a game start screen without an actual game&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I asked a second, more intentional prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“This is good, but not great. How can I turn this into an experience, not just a screen?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The response reframed everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sections became &lt;em&gt;locations&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;content became &lt;em&gt;quests&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;navigation became &lt;em&gt;exploration&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;progression replaced scrolling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I fed that prompt back into the tool and refined the experience with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;light state management&lt;/li&gt;
&lt;li&gt;dialogue-style text&lt;/li&gt;
&lt;li&gt;small progression cues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No new assets. No heavy animations. Just better structure and intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;p&gt;What I like most isn’t the UI — it’s the process.&lt;/p&gt;

&lt;p&gt;With just:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one prompt to generate structure&lt;/li&gt;
&lt;li&gt;one prompt to add depth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ended up with a portfolio that feels &lt;strong&gt;playable&lt;/strong&gt;, personal, and memorable.&lt;/p&gt;

&lt;p&gt;It changed how I think about building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;less over-planning&lt;/li&gt;
&lt;li&gt;more direction-setting&lt;/li&gt;
&lt;li&gt;letting AI handle the “how” while I focus on the “why”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project convinced me that vibe-coding, when guided properly, isn’t lazy — it’s &lt;strong&gt;strategic&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
