This content originally appeared on DEV Community and was authored by Debugger Sensei
Github
X
Hey devs ๐
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.
Hereโs a quick dev log of what Iโve built so far and some of the real issues I faced and solved ๐ฅ
โ
Core Features Implemented So Far
๐ OAuth2 + JWT Authentication (login/signup via gateway + token-based access)
๐งโโ๏ธ User Role System: Patients, Doctors, Admins (with secured routes)
๐ฅ Microservices Setup:
UserAuth Service (authentication + profile)
Gateway API (JWT verification + routing)
Service Registry (Spring Eureka)
๐ User Dashboard (React + Tailwind UI, animated hospital-themed design)
โ๏ธ User Operations: View, Update, Delete profile using secure endpoints
๐ Booking System (in progress) for appointments
๐ Spring Security Configuration using BCrypt + stateless sessions
โ๏ธ Client-side JWT Handling: Stored token, auto-injected in requests
๐ชฒ Bugs I Faced & Solved
- โ 403 Forbidden on Login (Even Though Token Was Correct) Root Cause: DelegatingPasswordEncoder expects an encoded password with a prefix like {bcrypt}.
Fix: Added the prefix and properly encoded the stored password using PasswordEncoderFactories.
- โ ๏ธ JWT Not Working via Gateway Issue: Gateway was rejecting JWT even though individual microservices accepted it.
Solved by: Correctly forwarding Authorization headers and applying token filter at Gateway level.
- ๐ซ React Fetch Error on /get-details Reason: Missing token in localStorage or token expiration.
Fix: Added secure token storage and toast-based error handling for 401 errors.
- ๐ updateUserDetails Response Was Too Heavy Changed the API to return only a success message instead of full user object to reduce payload.
๐ก Lessons Learned
Stateless authentication can be tricky with Spring Security, especially across services.
Encoders matter! Prefixes like {bcrypt} arenโt optional.
JWT debugging needs both backend and frontend coordination.
You donโt need to return full objects after an update โ just a clear success message does the job!
๐ ๏ธ Next Steps
Implement appointment booking module
Add Kafka messaging for logging, email, or async tasks
Dockerize each microservice and set up Docker Compose
Add admin panel, patient-doctor matching, and real-time notifications
๐ข Final Thoughts
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.
If you're into Spring Boot, microservices, and full-stack Java, letโs connect! I'd love to hear your feedback or collaborate ๐
This content originally appeared on DEV Community and was authored by Debugger Sensei

Debugger Sensei | Sciencx (2025-07-02T01:29:04+00:00) ๐ Building QuickClinic โ A Scalable Java Microservices-Based Healthcare Platform. Retrieved from https://www.scien.cx/2025/07/02/%f0%9f%9a%80-building-quickclinic-a-scalable-java-microservices-based-healthcare-platform/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.