<?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>Forem: Anupam Kushwaha</title>
    <description>The latest articles on Forem by Anupam Kushwaha (@anupam_kushwaha_85).</description>
    <link>https://forem.com/anupam_kushwaha_85</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%2F3758282%2Fbdc81381-ebe4-4df9-83a2-1c63d64c7025.jpg</url>
      <title>Forem: Anupam Kushwaha</title>
      <link>https://forem.com/anupam_kushwaha_85</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/anupam_kushwaha_85"/>
    <language>en</language>
    <item>
      <title>From Scaffolding to Debugging: Spring Boot with GitHub Copilot CLI</title>
      <dc:creator>Anupam Kushwaha</dc:creator>
      <pubDate>Mon, 09 Feb 2026 18:33:58 +0000</pubDate>
      <link>https://forem.com/anupam_kushwaha_85/from-scaffolding-to-debugging-spring-boot-with-github-copilot-cli-3e3l</link>
      <guid>https://forem.com/anupam_kushwaha_85/from-scaffolding-to-debugging-spring-boot-with-github-copilot-cli-3e3l</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built a production-ready Spring Boot REST API secured with JWT authentication.&lt;/p&gt;

&lt;p&gt;The application includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User registration and authentication&lt;/li&gt;
&lt;li&gt;Stateless JWT-based authorization&lt;/li&gt;
&lt;li&gt;Task management (CRUD operations)&lt;/li&gt;
&lt;li&gt;Layered architecture (controller, service, repository, entity, DTO)&lt;/li&gt;
&lt;li&gt;Multi-database support:

&lt;ul&gt;
&lt;li&gt;H2 for local development&lt;/li&gt;
&lt;li&gt;PostgreSQL for production readiness&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This project explores whether GitHub Copilot CLI can act as a real engineering assistant — not just a code generator — while building a secure backend following real-world Spring Boot best practices.&lt;/p&gt;

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

&lt;p&gt;🔗 &lt;strong&gt;Repository:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/anupamkushwaha85/copilot-cli-springboot-jwt" rel="noopener noreferrer"&gt;https://github.com/anupamkushwaha85/copilot-cli-springboot-jwt&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project scaffolding with GitHub Copilot CLI&lt;/strong&gt;&lt;br&gt;&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%2F2zb5c8gjcp8kfwt9i8ar.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%2F2zb5c8gjcp8kfwt9i8ar.png" alt="GitHub Copilot CLI generating the complete Spring Boot project structure, including entities, repositories, services, controllers, and security configuration." width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JWT security and service layer generation&lt;/strong&gt;&lt;br&gt;&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%2Ffn2t86g6xkg7dl2asf7e.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%2Ffn2t86g6xkg7dl2asf7e.png" alt="Copilot CLI generating JWT authentication, Spring Security filters, service layer logic, and REST controllers using iterative prompts." width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Spring Security (403 Forbidden issue)&lt;/strong&gt;&lt;br&gt;&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%2F0wjwrvxixwgyn8d6d0y5.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%2F0wjwrvxixwgyn8d6d0y5.png" alt="Initial 403 Forbidden error when testing authentication endpoints, highlighting a real Spring Security configuration issue." width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API testing with Postman&lt;/strong&gt;&lt;br&gt;&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%2Fi02fg5rinwy5ffq3xix4.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%2Fi02fg5rinwy5ffq3xix4.png" alt="Successful user registration and authentication using JWT tokens." width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protected endpoints in action&lt;/strong&gt;&lt;br&gt;&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%2F3c71lzpyoblfvxib529b.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%2F3c71lzpyoblfvxib529b.png" alt="JWT-secured task APIs accessed with authenticated requests." width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot CLI was used throughout the entire development lifecycle — not just for initial scaffolding.&lt;/p&gt;

&lt;p&gt;Copilot CLI assisted with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating the complete project structure and Maven configuration&lt;/li&gt;
&lt;li&gt;Creating entities, repositories, services, controllers, and DTOs&lt;/li&gt;
&lt;li&gt;Implementing JWT authentication and Spring Security configuration&lt;/li&gt;
&lt;li&gt;Adapting the application for H2 (development) and PostgreSQL (production)&lt;/li&gt;
&lt;li&gt;Generating documentation alongside the code&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real Debugging with Copilot CLI
&lt;/h3&gt;

&lt;p&gt;One of the most valuable moments was debugging a &lt;code&gt;403 Forbidden&lt;/code&gt; error on the authentication endpoints.&lt;/p&gt;

&lt;p&gt;Instead of trial-and-error:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copilot CLI analyzed the Spring Security configuration&lt;/li&gt;
&lt;li&gt;Identified default form login and HTTP basic auth interference&lt;/li&gt;
&lt;li&gt;Suggested disabling them explicitly&lt;/li&gt;
&lt;li&gt;Provided the exact fix in &lt;code&gt;SecurityConfig&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This experience showed that Copilot CLI is effective not only for writing code, but also for systematic debugging and root-cause analysis. It significantly reduced setup friction and allowed me to focus on architecture and correctness instead of boilerplate.&lt;/p&gt;

&lt;h4&gt;
  
  
  Outcome:
&lt;/h4&gt;

&lt;p&gt;A production-ready backend built end-to-end with GitHub Copilot CLI, demonstrating real-world usage beyond code generation.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
