<?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: Debugger Sensei</title>
    <description>The latest articles on DEV Community by Debugger Sensei (@debugger_sensei).</description>
    <link>https://dev.to/debugger_sensei</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%2F3314782%2F92d56ea9-7a97-435d-9663-3b422e540e67.png</url>
      <title>DEV Community: Debugger Sensei</title>
      <link>https://dev.to/debugger_sensei</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/debugger_sensei"/>
    <language>en</language>
    <item>
      <title>🚀 Building QuickClinic – A Scalable Java Microservices-Based Healthcare Platform</title>
      <dc:creator>Debugger Sensei</dc:creator>
      <pubDate>Wed, 02 Jul 2025 01:29:04 +0000</pubDate>
      <link>https://dev.to/debugger_sensei/building-quickclinic-a-scalable-java-microservices-based-healthcare-platform-5eid</link>
      <guid>https://dev.to/debugger_sensei/building-quickclinic-a-scalable-java-microservices-based-healthcare-platform-5eid</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/aryan735/QuickClinic" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;br&gt;
&lt;a href="https://x.com/aryann_dev" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;br&gt;
Hey devs 👋&lt;br&gt;
I’m currently working on a full-stack microservices project called QuickClinic – a modern, scalable healthcare booking platform built with Java + Spring Boot + React, using JWT, Kafka, Eureka, and Docker under the hood.&lt;/p&gt;

&lt;p&gt;Here’s a quick dev log of what I’ve built so far and some of the real issues I faced and solved 💥&lt;/p&gt;

&lt;p&gt;✅ Core Features Implemented So Far&lt;br&gt;
🔐 OAuth2 + JWT Authentication (login/signup via gateway + token-based access)&lt;/p&gt;

&lt;p&gt;🧑‍⚕️ User Role System: Patients, Doctors, Admins (with secured routes)&lt;/p&gt;

&lt;p&gt;🏥 Microservices Setup:&lt;/p&gt;

&lt;p&gt;UserAuth Service (authentication + profile)&lt;/p&gt;

&lt;p&gt;Gateway API (JWT verification + routing)&lt;/p&gt;

&lt;p&gt;Service Registry (Spring Eureka)&lt;/p&gt;

&lt;p&gt;📋 User Dashboard (React + Tailwind UI, animated hospital-themed design)&lt;/p&gt;

&lt;p&gt;✍️ User Operations: View, Update, Delete profile using secure endpoints&lt;/p&gt;

&lt;p&gt;🔁 Booking System (in progress) for appointments&lt;/p&gt;

&lt;p&gt;🔐 Spring Security Configuration using BCrypt + stateless sessions&lt;/p&gt;

&lt;p&gt;⚙️ Client-side JWT Handling: Stored token, auto-injected in requests&lt;/p&gt;

&lt;p&gt;🪲 Bugs I Faced &amp;amp; Solved&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;❌ 403 Forbidden on Login (Even Though Token Was Correct)
Root Cause: DelegatingPasswordEncoder expects an encoded password with a prefix like {bcrypt}.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fix: Added the prefix and properly encoded the stored password using PasswordEncoderFactories.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;⚠️ JWT Not Working via Gateway
Issue: Gateway was rejecting JWT even though individual microservices accepted it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solved by: Correctly forwarding Authorization headers and applying token filter at Gateway level.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🚫 React Fetch Error on /get-details
Reason: Missing token in localStorage or token expiration.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fix: Added secure token storage and toast-based error handling for 401 errors.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🔄 updateUserDetails Response Was Too Heavy
Changed the API to return only a success message instead of full user object to reduce payload.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;💡 Lessons Learned&lt;br&gt;
Stateless authentication can be tricky with Spring Security, especially across services.&lt;/p&gt;

&lt;p&gt;Encoders matter! Prefixes like {bcrypt} aren’t optional.&lt;/p&gt;

&lt;p&gt;JWT debugging needs both backend and frontend coordination.&lt;/p&gt;

&lt;p&gt;You don’t need to return full objects after an update — just a clear success message does the job!&lt;/p&gt;

&lt;p&gt;🛠️ Next Steps&lt;br&gt;
Implement appointment booking module&lt;/p&gt;

&lt;p&gt;Add Kafka messaging for logging, email, or async tasks&lt;/p&gt;

&lt;p&gt;Dockerize each microservice and set up Docker Compose&lt;/p&gt;

&lt;p&gt;Add admin panel, patient-doctor matching, and real-time notifications&lt;/p&gt;

&lt;p&gt;📢 Final Thoughts&lt;br&gt;
I’m building this project not just to practice microservices, but to simulate a real production-grade system with all its complexity — and I’m learning a ton on the way.&lt;/p&gt;

&lt;p&gt;If you're into Spring Boot, microservices, and full-stack Java, let’s connect! I'd love to hear your feedback or collaborate 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>java</category>
      <category>springboot</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
