<?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: Jeff Martinez</title>
    <description>The latest articles on DEV Community by Jeff Martinez (@jakiru5).</description>
    <link>https://dev.to/jakiru5</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%2F3689998%2F058f2f3a-4cd4-4d54-8831-3c1af7791e51.png</url>
      <title>DEV Community: Jeff Martinez</title>
      <link>https://dev.to/jakiru5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jakiru5"/>
    <language>en</language>
    <item>
      <title>Building a Cyberpunk Portfolio with React, Cloud Run, and Gemini AI</title>
      <dc:creator>Jeff Martinez</dc:creator>
      <pubDate>Mon, 02 Feb 2026 06:59:31 +0000</pubDate>
      <link>https://dev.to/jakiru5/building-a-cyberpunk-portfolio-with-react-cloud-run-and-gemini-ai-433c</link>
      <guid>https://dev.to/jakiru5/building-a-cyberpunk-portfolio-with-react-cloud-run-and-gemini-ai-433c</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;
  
  
  Introduction: Breaking the Mold
&lt;/h2&gt;

&lt;p&gt;Hi, I'm Jeff. I'm a 3rd Year BSIT Student, Student Body President, and a freelance developer known as the &lt;strong&gt;"Vibe Coder."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I exist in the chaotic intersection of grinding out freelance deadlines and building "self-hosted" solutions at 3 AM. When it came time to build my portfolio, I refused to use a sterile, corporate template. I wanted to express the struggle and joy of coding through a &lt;strong&gt;Retro-Futuristic / Cyberpunk&lt;/strong&gt; lens—a love letter to the 8-bit era, rebuilt with the tech of 2025.&lt;/p&gt;

&lt;p&gt;The result is a containerized application running on &lt;strong&gt;Google Cloud Run&lt;/strong&gt;, powered by a custom &lt;strong&gt;Gemini AI&lt;/strong&gt; integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Portfolio
&lt;/h2&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__cover"&gt;
          &lt;a href="https://gcp.jeffdev.studio/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeffdev.studio%2Fog-image.png" height="400" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://gcp.jeffdev.studio/" rel="noopener noreferrer" class="c-link"&gt;
            JeffDev Studio | Vibecoder Developer
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Portfolio of Jeff Martinez - Specializing in High-Performance Web Applications, React Architecture, and 8-bit aesthetic designs.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgcp.jeffdev.studio%2Ffavicon%2Ffavicon-96x96.png" width="96" height="96"&gt;
          gcp.jeffdev.studio
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;(Note: If the embed above doesn't load, check out the live site at &lt;a href="https://gcp.jeffdev.studio" rel="noopener noreferrer"&gt;gcp.jeffdev.studio&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔗 Quick Links:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Site:&lt;/strong&gt; &lt;a href="https://gcp.jeffdev.studio" rel="noopener noreferrer"&gt;gcp.jeffdev.studio&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/J-Akiru5/my-portfolio-react" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. The Vision: Design with a Soul
&lt;/h2&gt;

&lt;p&gt;I didn't write a single line of code until I had defined the "vibe." I spent hours in Figma mapping out an experience that felt like stepping into a futuristic arcade cabinet.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Palette:&lt;/strong&gt; Electric cyan, neon green, and deep space purples.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Aesthetic:&lt;/strong&gt; Pixelated fonts, glowing terminals, and nostalgic scanlines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Goal:&lt;/strong&gt; Make it feel like a game, not a resume.&lt;/p&gt;

&lt;p&gt;To ensure quality, I established strict design rules:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Retro-Futurism Only:&lt;/strong&gt; Every component must pass the "vibe check."&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Enhance, Don't Distract:&lt;/strong&gt; Animations serve the content, they don't bury it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Inclusive Design:&lt;/strong&gt; Accessibility is non-negotiable.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. The "Antigravity" Workflow
&lt;/h2&gt;

&lt;p&gt;Building this solo meant I needed a force multiplier. I used my &lt;strong&gt;"Antigravity" workflow&lt;/strong&gt;: treating AI not as autocomplete, but as a &lt;strong&gt;Senior Pair Programmer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I didn't just prompt "make a website." I fed the AI my design rules and "laws of physics" for the UI. It helped me scaffold the architecture and solve complex CSS specificity wars for the CRT monitor effects.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; React 19 + Vite (for speed).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation:&lt;/strong&gt; GSAP + ScrollTrigger (for buttery-smooth reveals).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Firebase Firestore (Real-time data) + Auth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosting:&lt;/strong&gt; Google Cloud Run (Dockerized).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. The Crown Jewel: Gemini-Powered Intelligent Editor
&lt;/h2&gt;

&lt;p&gt;I hate staring at blank Markdown files. I wanted a smart writing partner built directly into my portfolio's admin panel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Architecture:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;User Chat → Intent Detection (Regex) → Gemini 2.5 Flash API → Diff Preview&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Intent Detection &amp;amp; Diff Previews
&lt;/h3&gt;

&lt;p&gt;Using regex pattern matching and Gemini's natural language understanding, the system distinguishes between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conversational Questions:&lt;/strong&gt; ("Is this clear?") → Returns a chat reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edit Requests:&lt;/strong&gt; ("Fix the grammar") → Returns a structured code block.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an edit is requested, I don't just apply it blindly. The system generates a &lt;strong&gt;Green/Red Diff Preview&lt;/strong&gt;, allowing me to granularly accept or reject changes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Gemini 2.5 Flash?&lt;/strong&gt; It's fast, incredibly affordable, and its large context window allows it to remember the entire history of the post I'm writing.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Deploying on Google Cloud Run
&lt;/h2&gt;

&lt;p&gt;To enter the "New Year, New You" challenge, I graduated from static hosting to &lt;strong&gt;Google Cloud Run&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;I built a &lt;strong&gt;multi-stage Dockerfile&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Build Stage:&lt;/strong&gt; Compiles the Vite app.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Production Stage:&lt;/strong&gt; Copies assets into a minimal Node.js image (140MB) running a lightweight Express server.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  ⚠️ The Environment Variable Gotcha
&lt;/h3&gt;

&lt;p&gt;I encountered a critical bug: my Firebase keys were undefined in the production build despite being passed as Docker arguments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix:&lt;/strong&gt; Vite doesn't bake environment variables into the client bundle unless explicitly told to. I had to use the &lt;code&gt;define&lt;/code&gt; option in &lt;code&gt;vite.config.js&lt;/code&gt;:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
javascript
// vite.config.js
define: {
  'import.meta.env.VITE_FIREBASE_API_KEY': JSON.stringify(env.VITE_FIREBASE_API_KEY),
}
Now, my pipeline is fully automated via GitHub Actions. Every push to main builds the container and deploys to Cloud Run in under 4 minutes.

5. Performance Meets Aesthetics
A site with neon glows and scanlines shouldn't be slow.

Lighthouse Scores: 98/100 Performance, 100/100 Accessibility.

First Contentful Paint: ~0.8s.

Accessibility: Full keyboard navigation and support for prefers-reduced-motion.

Final Thoughts
This project taught me that the best way to learn is to build for yourself without compromises. The intersection of retro aesthetics and modern cloud infrastructure might seem odd, but that's the point. We need more personality in our portfolios.

Go build something that makes you smile every time you look at it.

Created for the Google AI Dev.to Challenge.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Building a Cyberpunk Portfolio with React, Gemini AI, and Cloud Run</title>
      <dc:creator>Jeff Martinez</dc:creator>
      <pubDate>Mon, 02 Feb 2026 06:47:32 +0000</pubDate>
      <link>https://dev.to/jakiru5/building-a-cyberpunk-portfolio-with-react-gemini-ai-and-cloud-run-511m</link>
      <guid>https://dev.to/jakiru5/building-a-cyberpunk-portfolio-with-react-gemini-ai-and-cloud-run-511m</guid>
      <description>&lt;p&gt;Liquid syntax error: Unknown tag 'cloud_run'&lt;/p&gt;
</description>
      <category>googleai</category>
      <category>cloudrun</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How I Built My 8-Bit Portfolio with Claude Opus 4.5 on Antigravity</title>
      <dc:creator>Jeff Martinez</dc:creator>
      <pubDate>Sat, 17 Jan 2026 22:13:00 +0000</pubDate>
      <link>https://dev.to/jakiru5/how-i-built-my-8-bit-portfolio-with-claude-opus-45-on-antigravity-3a1j</link>
      <guid>https://dev.to/jakiru5/how-i-built-my-8-bit-portfolio-with-claude-opus-45-on-antigravity-3a1j</guid>
      <description>&lt;p&gt;Building a developer portfolio in 2025 feels different than it did just a year ago. The tools have evolved, AI has become a legitimate coding partner, and the line between "designing" and "developing" has blurred in the most exciting ways. This is the story of how I built my retro-futuristic portfolio—and how an AI assistant named Claude became my most reliable pair programmer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vision: Cyberpunk Meets Nostalgia
&lt;/h2&gt;

&lt;p&gt;My long-standing fascination with the aesthetic of old-school video games and the neon-soaked visuals of cyberpunk fiction naturally guided my vision. When rebuilding my portfolio, I aimed to create a digital experience that felt like stepping into a futuristic arcade—a place brimming with pixelated fonts, glowing terminals, and nostalgic scanlines. The challenge was to seamlessly blend all that retro charm into a modern React application.&lt;/p&gt;

&lt;p&gt;The challenge was making it more than just a gimmick. A portfolio needs to be functional first. It needs to showcase real work, be accessible, and actually help me connect with potential collaborators and employers. The 8-bit aesthetic had to enhance the experience, not get in the way of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting with Design, Not Code
&lt;/h2&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%2Fmy-portfolio-react-topaz-eta.vercel.app%2Fapi%2Fimage%3Fkey%3Dblog%252F1766806066469-screenshot_2025-12-24_080611.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%2Fmy-portfolio-react-topaz-eta.vercel.app%2Fapi%2Fimage%3Fkey%3Dblog%252F1766806066469-screenshot_2025-12-24_080611.png" alt="Screenshot 2025-12-24 080611.png" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before writing a single line of code, I spent time in Figma mapping out the experience. I'm a firm believer that jumping straight into code leads to endless refactoring later. Having a visual reference meant I could make design decisions without the pressure of implementation looming over me.&lt;/p&gt;

&lt;p&gt;The design process helped me establish the color palette—electric cyan, neon green, sunset orange, and deep space purples against dark backgrounds. I mapped out the sections: a dramatic hero with my name in pixelated glory, an about section that tells my story, a skills showcase with animated progress bars, projects displayed as terminal windows, and a contact form styled like a command-line interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter Claude: My AI Pair Programmer
&lt;/h2&gt;

&lt;p&gt;Here's where things got interesting. I'd been experimenting with AI coding assistants, but my experience with Claude Opus 4.5—specifically through an agentic coding platform called Antigravity—was different from anything I'd tried before.&lt;/p&gt;

&lt;p&gt;Instead of treating the AI as a fancy autocomplete, I approached it as a true collaborator. I described what I wanted to build, shared my design files, and watched as Claude helped me scaffold the entire React project structure. It suggested component architecture, helped me set up GSAP animations, and even caught accessibility issues I would have missed.&lt;/p&gt;

&lt;p&gt;The magic wasn't just in code generation—it was in the back-and-forth. When something didn't look right, I could describe the problem in plain English. When I wanted to add a feature like a typing animation for my tagline, Claude didn't just write the code; it explained the approach and suggested alternatives I hadn't considered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing It to Life with Animation
&lt;/h2&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%2Fmy-portfolio-react-topaz-eta.vercel.app%2Fapi%2Fimage%3Fkey%3Dblog%252F1766803479088-screenshot_2025-12-26_131716.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%2Fmy-portfolio-react-topaz-eta.vercel.app%2Fapi%2Fimage%3Fkey%3Dblog%252F1766803479088-screenshot_2025-12-26_131716.png" alt="Screenshot 2025-12-26 131716.png" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A static portfolio feels lifeless, especially one going for a retro-gaming vibe. I leaned heavily on GSAP and ScrollTrigger to create those moments of delight—the hero section with its dramatic reveal, skill bars that fill as you scroll past, project cards that float in with staggered timing.&lt;/p&gt;

&lt;p&gt;One of my favorite touches is the holographic projector in the hobbies section. Hover over a hobby category and watch the CRT monitor flicker to life with details about that interest. Small interactions like this transform a portfolio from a static resume into an experience people actually want to explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Stack
&lt;/h2&gt;

&lt;p&gt;For those curious about what powers this site: it's built with React and Vite for fast development and builds. Styling is vanilla CSS with CSS variables for the theme system. Animations are handled by GSAP with ScrollTrigger for scroll-based effects. The backend uses Firebase for the contact form and any dynamic content. Everything is deployed on Vercel with automatic previews for every push.&lt;/p&gt;

&lt;p&gt;I intentionally kept the stack simple. Fancy frameworks are great, but for a personal portfolio, I wanted technology that would be easy to maintain and update years from now. React and CSS aren't going anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons from the Process
&lt;/h2&gt;

&lt;p&gt;Building this portfolio taught me a few things worth sharing. First, AI-assisted development is genuinely powerful when you treat it as collaboration rather than delegation. I still made every design decision and wrote plenty of code myself, but having an intelligent assistant to bounce ideas off accelerated the whole process.&lt;/p&gt;

&lt;p&gt;Second, constraints breed creativity. The 8-bit theme could have been limiting, but it actually made decisions easier. Every component had to pass the "does this feel retro-futuristic?" test. That focus prevented feature creep and kept the design cohesive.&lt;/p&gt;

&lt;p&gt;Third, accessibility still matters, even with a gimmicky aesthetic. The portfolio works with screen readers, respects reduced-motion preferences, and maintains proper color contrast despite all the neon. Good design is inclusive design.&lt;/p&gt;

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

&lt;p&gt;A portfolio is never truly finished—it evolves as you do. I'm already planning to add a blog section for deeper technical writing, integrate some live project demos, and continue refining the animations based on feedback.&lt;/p&gt;

&lt;p&gt;If you're thinking about building your own portfolio, my advice is simple: have fun with it. This is the one website where you get to be completely yourself. Make it weird, make it personal, make it something you're proud to share. And if you've got an AI assistant ready to help, don't be afraid to lean on it. The future of development is collaborative—even when your collaborator is a large language model.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please check out my personal portfolio &lt;a href="https://portfolio.jeffdev.studio/" rel="noopener noreferrer"&gt;https://portfolio.jeffdev.studio/&lt;/a&gt; for more info about me and blog posts&lt;/em&gt;&lt;/p&gt;

</description>
      <category>portfolio</category>
      <category>development</category>
      <category>react</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
