<?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: Samet UCA</title>
    <description>The latest articles on DEV Community by Samet UCA (@sametuca).</description>
    <link>https://dev.to/sametuca</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%2F434869%2Fa87c7af2-7481-4ee0-adac-83c426b30c9e.jpeg</url>
      <title>DEV Community: Samet UCA</title>
      <link>https://dev.to/sametuca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sametuca"/>
    <language>en</language>
    <item>
      <title>DoppelAPI: The "Digital Twin" for Your Backend</title>
      <dc:creator>Samet UCA</dc:creator>
      <pubDate>Mon, 02 Feb 2026 16:57:25 +0000</pubDate>
      <link>https://dev.to/sametuca/doppelapi-the-digital-twin-for-your-backend-404h</link>
      <guid>https://dev.to/sametuca/doppelapi-the-digital-twin-for-your-backend-404h</guid>
      <description>&lt;p&gt;What I Built&lt;br&gt;
I built DoppelAPI, a powerful CLI tool designed to solve the age-old bottleneck in software development: Frontend developers waiting for backend APIs to be implemented.&lt;/p&gt;

&lt;p&gt;DoppelAPI takes your existing OpenAPI (Swagger) definition and instantly converts it into a fully functional, intelligent mock server. It creates a "Digital Twin" of your future backend, allowing teams to build, test, and integrate immediately.&lt;/p&gt;

&lt;p&gt;Unlike standard mock servers that return static or empty data, DoppelAPI is intelligent:&lt;/p&gt;

&lt;p&gt;Smart Data Generation: Instead of returning null or "string", it uses AI-driven Faker.js integration to generate realistic data (real names, UUIDs, avatars) based on your schema types.&lt;/p&gt;

&lt;p&gt;Visual Dashboard: It launches a beautiful local web interface that serves as live documentation, showing precise JSON request bodies and response examples.&lt;/p&gt;

&lt;p&gt;Chaos &amp;amp; Latency Simulation: It allows you to simulate "Real World" conditions. With flags like --delay (network lag) and --chaos (random server crashes), you can test how your app handles edge cases.&lt;/p&gt;

&lt;p&gt;Postman Ready: One-click export of your entire mock API as a Postman Collection.&lt;/p&gt;

&lt;p&gt;It transforms a static YAML file into a living, breathing API ecosystem.&lt;/p&gt;

&lt;p&gt;Demo&lt;br&gt;
You can find the source code and full documentation here: &lt;a href="https://github.com/sametuca/doppelapi" rel="noopener noreferrer"&gt;https://github.com/sametuca/doppelapi&lt;/a&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%2Ftg7qc8pe6m5zk9of8geq.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%2Ftg7qc8pe6m5zk9of8geq.png" alt=" " width="800" height="465"&gt;&lt;/a&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%2Foiv11ypfp3d5fb7j7cnh.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%2Foiv11ypfp3d5fb7j7cnh.png" alt=" " width="800" height="473"&gt;&lt;/a&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%2Fbxutus133xbaeckdtje1.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%2Fbxutus133xbaeckdtje1.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quick Start&lt;br&gt;
You can run it instantly using the interactive wizard or command line arguments:&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Install globally
&lt;/h1&gt;

&lt;p&gt;npm install -g doppelapi&lt;/p&gt;

&lt;h1&gt;
  
  
  Run the wizard (Auto-discovers your OpenAPI files)
&lt;/h1&gt;

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

&lt;h1&gt;
  
  
  Or use specific flags
&lt;/h1&gt;

&lt;p&gt;doppelapi start ./openapi.yaml --watch --delay --chaos&lt;br&gt;
My Experience with GitHub Copilot CLI&lt;br&gt;
Building DoppelAPI was an intense sprint, and GitHub Copilot CLI was my pair programmer throughout the entire process. It fundamentally changed how I approached CLI development.&lt;/p&gt;

&lt;p&gt;Here is how Copilot CLI helped me build the specific features of DoppelAPI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building the "Chaos Mode" Logic
I wanted a feature to simulate server instability. I asked Copilot CLI directly in the terminal:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"How can I write an Express middleware that randomly returns a 500 error 10% of the time to simulate server instability?"&lt;/p&gt;

&lt;p&gt;It generated the exact math (Math.random() &amp;lt; 0.1) and middleware structure, which I instantly integrated into the --chaos flag logic.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Smart Data Mapping (Faker.js)
Mapping complex OpenAPI types to Faker.js functions is tedious. I used Copilot to generate the mapping logic:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"Write a function that maps OpenAPI types like 'string', 'uuid', and 'email' to corresponding Faker.js methods."&lt;/p&gt;

&lt;p&gt;This helped me implement the "Smart Data" feature where users can even use x-faker extensions in their schema.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visual Dashboard &amp;amp; Postman Export
Generating a Postman collection JSON from an OpenAPI object is complex. Copilot CLI helped me understand the structure required by Postman:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"Convert an OpenAPI path object into a Postman Collection item format using JavaScript."&lt;/p&gt;

&lt;p&gt;This allowed me to build the "One-Click Export" feature that developers love.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interactive CLI Wizard
To make the tool user-friendly, I wanted an auto-discovery feature. Copilot guided me on how to use glob patterns to find .yaml files in the current directory and present them in a selection list.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion: GitHub Copilot CLI didn't just write code; it helped me design features. It acted as a bridge between my ideas (like "Chaos Mode") and the implementation, allowing me to build a production-grade tool in a fraction of the time.&lt;/p&gt;

&lt;p&gt;Copilot cli usage phase &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%2Fbjch2zwz6kc8bezefar1.jpg" 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%2Fbjch2zwz6kc8bezefar1.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fb17jm659ptrevrabs1k5.jpg" 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%2Fb17jm659ptrevrabs1k5.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fuduhe86kndbpya2ajt3j.jpg" 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%2Fuduhe86kndbpya2ajt3j.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Ffjihuhhjgjax8di88n2l.jpg" 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%2Ffjihuhhjgjax8di88n2l.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2F2jtt80qewo2e3g66kbod.jpg" 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%2F2jtt80qewo2e3g66kbod.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fhjbv1b0w2ruelyq9pqqd.jpg" 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%2Fhjbv1b0w2ruelyq9pqqd.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fvnzhm0ivyofous5x9lle.jpg" 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%2Fvnzhm0ivyofous5x9lle.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2F8fl5gf5t8glipaeovkht.jpg" 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%2F8fl5gf5t8glipaeovkht.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Ftxck6xabx8ym7of7cykv.jpg" 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%2Ftxck6xabx8ym7of7cykv.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fce86l97twcqkrvmiwfx6.jpg" 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%2Fce86l97twcqkrvmiwfx6.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fgqud9zz346jkkfyx98kx.jpg" 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%2Fgqud9zz346jkkfyx98kx.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2F7gbvt9paofc42r0cwd4d.jpg" 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%2F7gbvt9paofc42r0cwd4d.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Ffzy4vjrpbaaprensf54j.jpg" 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%2Ffzy4vjrpbaaprensf54j.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fucsbdcaasak58mhqsxgn.jpg" 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%2Fucsbdcaasak58mhqsxgn.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fkoyb67uup7w930mbd9w2.jpg" 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%2Fkoyb67uup7w930mbd9w2.jpg" alt=" " width="800" height="524"&gt;&lt;/a&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%2Fn0o6842v6g42jh8jac6c.jpg" 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%2Fn0o6842v6g42jh8jac6c.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2F4j5c6kgfe6cz7uk9xot2.jpg" 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%2F4j5c6kgfe6cz7uk9xot2.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fkssxdyk1638nfs8ig90c.jpg" 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%2Fkssxdyk1638nfs8ig90c.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fav9mwmygplgip6nge33l.jpg" 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%2Fav9mwmygplgip6nge33l.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fcgnmyff362fvrd57puur.jpg" 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%2Fcgnmyff362fvrd57puur.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fu2ns7snezky53inlmrvh.jpg" 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%2Fu2ns7snezky53inlmrvh.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fddusvwz493rpx6n7x9em.jpg" 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%2Fddusvwz493rpx6n7x9em.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2F8ignydu67ed4tcfl1f54.jpg" 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%2F8ignydu67ed4tcfl1f54.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2Fvzojxs7woi6tmua2zpgw.jpg" 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%2Fvzojxs7woi6tmua2zpgw.jpg" alt=" " width="800" height="351"&gt;&lt;/a&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%2F6os0czk1l3245lkdxflv.jpg" 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%2F6os0czk1l3245lkdxflv.jpg" alt=" " width="800" height="434"&gt;&lt;/a&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%2Fyvl279v95l248pkifvun.jpg" 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%2Fyvl279v95l248pkifvun.jpg" alt=" " width="800" height="434"&gt;&lt;/a&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%2Fdghbvhpu6n6seolw2jpa.jpg" 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%2Fdghbvhpu6n6seolw2jpa.jpg" alt=" " width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Developer Spawn Point - Portfolio</title>
      <dc:creator>Samet UCA</dc:creator>
      <pubDate>Wed, 14 Jan 2026 21:50:28 +0000</pubDate>
      <link>https://dev.to/sametuca/developer-spawn-point-portfolio-3kc3</link>
      <guid>https://dev.to/sametuca/developer-spawn-point-portfolio-3kc3</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;p&gt;Exploring the Future: A 3D Cyberpunk Portfolio Powered by Gemini AI&lt;br&gt;
About Me&lt;br&gt;
Hi! I'm Samet Uca, a Full Stack Developer with a passion for pushing the boundaries of the web. I've always been fascinated by how we can transform traditional, flat web interfaces into immersive, interactive experiences.&lt;/p&gt;

&lt;p&gt;I believe that a developer's portfolio should be more than just a list of links—it should be a window into their digital world. My "Living Space" is my creative sanctuary, and I wanted to express that through a 3D environment that feels personal, alive, and uniquely mine.&lt;/p&gt;

&lt;p&gt;Portfolio&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://myportfolio-devspawnpoint-909463996226.us-central1.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;




&lt;p&gt;How I Built It&lt;br&gt;
Building an immersive 3D environment requires a robust tech stack and a seamless development process. Here’s how I brought this vision to life:&lt;/p&gt;

&lt;p&gt;🛠 Tech Stack&lt;br&gt;
Frontend Framework: React 19 &amp;amp; Vite for a lightning-fast UI.&lt;br&gt;
3D Engine: Three.js with @react-three/fiber and @react-three/drei for the 3D room and interactive models.&lt;br&gt;
Styling: Tailwind CSS 4 for modern, utility-first styling.&lt;br&gt;
Animations: Framer Motion for smooth UI transitions and overlays.&lt;br&gt;
Google AI Integration&lt;br&gt;
The core "intelligence" of this portfolio is powered by Google AI:&lt;/p&gt;

&lt;p&gt;Antigravity: This entire project was developed within Antigravity, Google's AI-first development environment. The AI-native features allowed me to rapidly iterate on complex 3D mathematics and component structures, significantly reducing development time.&lt;br&gt;
Gemini AI (1.5 Flash): I integrated the Gemini API directly into the portfolio via a feature I call the "Gemini Link". It’s a real-time, terminal-style interface where visitors can chat with an AI assistant that represents me, answering questions about my skills, experience, and projects in a witty, cyberpunk tone.&lt;br&gt;
Google Cloud Run: The application is containerized and deployed on Cloud Run, ensuring it’s always fast, responsive, and ready to handle visitors globally.&lt;br&gt;
The Living Space: A Reflection of Self&lt;br&gt;
Why a 3D room? Because our living spaces are where our personalities truly live. Every object in this scene tells a story:&lt;/p&gt;

&lt;p&gt;The Desk: My workspace, where code comes to life.&lt;br&gt;
The Interactive Light Rig: A nod to my technical curiosity, allowing visitors to change the "vibe" of the room.&lt;br&gt;
The Shelves: Representing the constant learning and different "layers" of my development journey.&lt;br&gt;
By inviting you into this virtual room, I’m showing you not just what I build, but how I think and live as a creator.&lt;/p&gt;

&lt;p&gt;What I'm Most Proud Of&lt;br&gt;
I’m most proud of the Gemini Link Terminal. Integrating a large language model like Gemini into a 3D environment creates a bridge between visual immersion and interactive intelligence. Instead of just reading a static CV, visitors can talk to my digital twin.&lt;/p&gt;

&lt;p&gt;I also put a lot of effort into the interactive 3D elements, such as the Google-themed light rig and the detailed developer desk. These small details aim to create a "personality-first" experience that standard portfolios often lack.&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%2Fe9nabhodnxtf5izy8zdz.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%2Fe9nabhodnxtf5izy8zdz.png" alt=" "&gt;&lt;/a&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%2F1pm9dqykcdz90m796y2w.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%2F1pm9dqykcdz90m796y2w.png" alt=" "&gt;&lt;/a&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%2F4ddj62q2hc9c6pf61im0.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%2F4ddj62q2hc9c6pf61im0.png" alt=" "&gt;&lt;/a&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%2F7vxup5cp494gj5t3ckz4.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%2F7vxup5cp494gj5t3ckz4.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Built with ❤️ using Antigravity and Gemini.&lt;/p&gt;

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