<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Rupa.dev — Full-Stack Developer Blog</title>
    <link>https://rupa.dev</link>
    <description>Real projects. Real code. Full-stack tutorials on React, Spring Boot, and more.</description>
    <language>en</language>
    <atom:link href="https://rupa.dev/feed.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title><![CDATA[Fullstack #6 — JWT Authentication End to End]]></title>
      <link>https://rupa.dev/blog/fullstack-06-jwt-auth</link>
      <guid>https://rupa.dev/blog/fullstack-06-jwt-auth</guid>
      <pubDate>Tue, 11 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Build the complete login flow: login form in Next.js, JWT issued by Spring Boot, token stored safely, and sent with every request. No hand-waving — the full implementation.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Fullstack #5 — CORS Explained & Fixed Properly]]></title>
      <link>https://rupa.dev/blog/fullstack-05-cors</link>
      <guid>https://rupa.dev/blog/fullstack-05-cors</guid>
      <pubDate>Sun, 09 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Why CORS errors happen, what the browser is actually doing, and the exact Spring Boot configuration to fix it for development and production — without just allowing everything.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Fullstack #4 — Sending Data: Forms, POST, PUT & DELETE]]></title>
      <link>https://rupa.dev/blog/fullstack-04-sending-data</link>
      <guid>https://rupa.dev/blog/fullstack-04-sending-data</guid>
      <pubDate>Fri, 07 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Build forms that talk to Spring Boot. Create, update, and delete resources from Next.js using controlled forms, Server Actions, and proper feedback patterns.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Fullstack #3 — Fetching Data: Loading States & Error Handling]]></title>
      <link>https://rupa.dev/blog/fullstack-03-fetching-data</link>
      <guid>https://rupa.dev/blog/fullstack-03-fetching-data</guid>
      <pubDate>Wed, 05 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Server Components vs Client Components for data fetching, Suspense boundaries, error.tsx, and building a proper loading skeleton — all with Spring Boot as the API.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Fullstack #2 — Setting Up Next.js & Spring Boot Side by Side]]></title>
      <link>https://rupa.dev/blog/fullstack-02-setup</link>
      <guid>https://rupa.dev/blog/fullstack-02-setup</guid>
      <pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Create both projects, run them together in development, configure your API base URL, and make your first successful fetch from Next.js to Spring Boot.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Fullstack #1 — How the Web Works: HTTP, APIs & JSON]]></title>
      <link>https://rupa.dev/blog/fullstack-01-how-web-works</link>
      <guid>https://rupa.dev/blog/fullstack-01-how-web-works</guid>
      <pubDate>Sat, 01 Mar 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Before connecting anything, understand what actually happens when your app makes a request. HTTP methods, status codes, JSON, and the request-response cycle explained clearly.]]></description>
      <category>fullstack</category>
    </item>
    <item>
      <title><![CDATA[Spring Boot #4 — Spring Security: Authentication & Authorization]]></title>
      <link>https://rupa.dev/blog/spring-boot-04-spring-security</link>
      <guid>https://rupa.dev/blog/spring-boot-04-spring-security</guid>
      <pubDate>Tue, 11 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Secure your Spring Boot API with Spring Security. UserDetails, password encoding, role-based access, and method-level security.]]></description>
      <category>spring-boot</category>
    </item>
    <item>
      <title><![CDATA[React Hooks You're Probably Using Wrong]]></title>
      <link>https://rupa.dev/blog/react-hooks-wrong</link>
      <guid>https://rupa.dev/blog/react-hooks-wrong</guid>
      <pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Deep dive into useCallback, useMemo, and useEffect — with real benchmarks showing when they help and when they hurt.]]></description>
      <category>react</category>
    </item>
    <item>
      <title><![CDATA[Spring Boot #3 — Spring Data JPA: Queries, Pagination & Flyway]]></title>
      <link>https://rupa.dev/blog/spring-boot-03-jpa-queries-flyway</link>
      <guid>https://rupa.dev/blog/spring-boot-03-jpa-queries-flyway</guid>
      <pubDate>Sun, 09 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Custom JPQL queries, derived query methods, pagination and sorting, and managing your schema safely with Flyway migrations.]]></description>
      <category>spring-boot</category>
    </item>
    <item>
      <title><![CDATA[Spring Boot #2 — Validation & Exception Handling]]></title>
      <link>https://rupa.dev/blog/spring-boot-02-validation-exception-handling</link>
      <guid>https://rupa.dev/blog/spring-boot-02-validation-exception-handling</guid>
      <pubDate>Fri, 07 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Bean Validation annotations, @ControllerAdvice for global exception handling, and returning clean consistent error responses.]]></description>
      <category>spring-boot</category>
    </item>
    <item>
      <title><![CDATA[Spring Boot #1 — Getting Started & Your First REST API]]></title>
      <link>https://rupa.dev/blog/spring-boot-01-getting-started</link>
      <guid>https://rupa.dev/blog/spring-boot-01-getting-started</guid>
      <pubDate>Wed, 05 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Bootstrap a Spring Boot project, understand auto-configuration, and build a working REST API in 20 minutes.]]></description>
      <category>spring-boot</category>
    </item>
    <item>
      <title><![CDATA[Collections & Streams #2 — The Streams API]]></title>
      <link>https://rupa.dev/blog/collections-02-streams</link>
      <guid>https://rupa.dev/blog/collections-02-streams</guid>
      <pubDate>Mon, 03 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Replace imperative loops with expressive pipelines. filter, map, flatMap, reduce, collect, and groupingBy — the operations you'll use every day.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[Collections & Streams #1 — List, Set & Map]]></title>
      <link>https://rupa.dev/blog/collections-01-list-set-map</link>
      <guid>https://rupa.dev/blog/collections-01-list-set-map</guid>
      <pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[The Java Collections Framework explained. ArrayList vs LinkedList, HashSet vs TreeSet, HashMap vs LinkedHashMap — and when to use each.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[OOP #2 — Inheritance, Interfaces & Polymorphism]]></title>
      <link>https://rupa.dev/blog/oop-02-inheritance-interfaces</link>
      <guid>https://rupa.dev/blog/oop-02-inheritance-interfaces</guid>
      <pubDate>Thu, 30 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Extend classes, implement interfaces, and write code that works with types it's never seen. The core of flexible Java design.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[OOP #1 — Classes, Objects & Constructors]]></title>
      <link>https://rupa.dev/blog/oop-01-classes-objects</link>
      <guid>https://rupa.dev/blog/oop-01-classes-objects</guid>
      <pubDate>Tue, 28 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[How to model real-world things as Java classes. Encapsulation, constructors, getters/setters, and the builder pattern.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[Java Basics #4 — Methods & Arrays]]></title>
      <link>https://rupa.dev/blog/java-basics-04-methods-arrays</link>
      <guid>https://rupa.dev/blog/java-basics-04-methods-arrays</guid>
      <pubDate>Sun, 26 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[How to write clean reusable methods, understand pass-by-value, and work with single and multi-dimensional arrays.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[Java Basics #3 — Control Flow: If, Switch & Loops]]></title>
      <link>https://rupa.dev/blog/java-basics-03-control-flow</link>
      <guid>https://rupa.dev/blog/java-basics-03-control-flow</guid>
      <pubDate>Fri, 24 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Conditionals, the new switch expressions, for/while loops, and patterns that make your code cleaner.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[Java Basics #2 — Variables, Data Types & Operators]]></title>
      <link>https://rupa.dev/blog/java-basics-02-variables-types</link>
      <guid>https://rupa.dev/blog/java-basics-02-variables-types</guid>
      <pubDate>Wed, 22 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Primitives vs objects, type casting, and the operators you'll use every day. Plus why int and Integer are different.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[Java Basics #1 — Introduction to Java & Setting Up]]></title>
      <link>https://rupa.dev/blog/java-basics-01-introduction</link>
      <guid>https://rupa.dev/blog/java-basics-01-introduction</guid>
      <pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[What Java actually is, how the JVM works, and getting your dev environment ready in under 10 minutes.]]></description>
      <category>java</category>
    </item>
    <item>
      <title><![CDATA[JWT Auth in Spring Boot — The Right Way]]></title>
      <link>https://rupa.dev/blog/jwt-spring-boot</link>
      <guid>https://rupa.dev/blog/jwt-spring-boot</guid>
      <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
      <description><![CDATA[Stop copying StackOverflow. Here's production-grade JWT with refresh tokens, Spring Security filters, and proper error handling.]]></description>
      <category>java</category>
    </item>
  </channel>
</rss>