In today’s modern workplaces, a single employee app often handles a lot more than just attendance.

From clocking in, booking a gym slot, applying for leave, to getting birthday wishes 🎂 and claiming reimbursements

everything runs through microservices.

Let’s dive deep into the architecture, microservices, and how communication happens inside an employee app! 🏢🚀


🛠️ Core Features We Need to Build

  1. Attendance Tracking (Clock In/Out)
  2. Leave Application
  3. Sports Slot/Gym Booking
  4. Employee Directory
  5. Birthday Wishes & Notifications
  6. Team Management View
  7. Salary Slip & Reimbursement Claims
  8. Medical Insurance Claims

🧩 Microservices Breakdown

Microservice Responsibility
Attendance Service Clock in/out tracking
Leave Management Service Apply, approve, track leaves
Sports & Gym Booking Service Book time slots
Employee Directory Service Maintain employee details
Birthday Notification Service Manage birthday notifications
Team Management Service Control who sees what
Payroll Service Salary slips, bonuses
Reimbursement Service Travel, food, other reimbursements
Medical Claim Service Insurance claims management
Email Notification Service Send birthday wishes, reminders

📲 Step-by-Step Flow (With Sync/Async Communication)


🕒 Step 1: Employee Clocks In/Out (Attendance)

🔥 Services Involved:

  • Attendance Service

📞 Communication:

  • User App → Attendance Service: (Sync, REST API)

✅ Why synchronous?

  • Immediate feedback needed: "Clocked In at 9:01 AM".

🌴 Step 2: Employee Applies for Leave

🔥 Services Involved:

  • Leave Management Service
  • Manager Notification Service (optional)

📞 Communication:

  • User App → Leave Management Service: (Sync, REST API)
  • Leave Management Service → Manager Notification Service: (Async, Kafka Event LEAVE_APPLIED)

✅ Why mixed?

  • Leave application must show success immediately.
  • Manager approval notifications can be async.

🏋️ Step 3: Book a Gym or Sports Slot

🔥 Services Involved:

  • Sports & Gym Booking Service

📞 Communication:

  • User App → Sports & Gym Service: (Sync, REST API)

✅ Why synchronous?

  • User needs real-time slot availability and booking confirmation.

🧑‍💼 Step 4: View Employee Directory or Team Members

🔥 Services Involved:

  • Employee Directory Service
  • Team Management Service

📞 Communication:

  • User App → Team Management Service → Employee Directory Service: (Sync, REST API)

Access Control is checked first (team only), then data is fetched.

✅ Why synchronous?

  • Immediate access control check and data fetch needed for smooth UX.

🎂 Step 5: Birthday Notifications and Wishes

🔥 Services Involved:

  • Birthday Notification Service
  • Email Notification Service
  • Team Management Service

📩 Communication:

  • Birthday Notification Service → Email Notification Service: (Async, Kafka event SEND_BIRTHDAY_WISH)
  • Birthday Notification Service → Team Management Service: (Sync, REST) to fetch list of colleagues.

✅ Why mixed?

  • Wish emails can be scheduled (async).
  • Fetching colleague list needs fast response (sync).

📄 Step 6: Download Salary Slips

🔥 Services Involved:

  • Payroll Service

📞 Communication:

  • User App → Payroll Service: (Sync, REST API)

✅ Why synchronous?

  • Employee expects instant salary slip download.

🧾 Step 7: Submit Reimbursement or Medical Claims

🔥 Services Involved:

  • Reimbursement Service
  • Medical Claim Service

📞 Communication:

  • User App → Reimbursement Service: (Sync, REST API)
  • User App → Medical Claim Service: (Sync, REST API)

  • Claim Services → Payroll Service: (Async, Kafka Event CLAIM_APPROVED) for payout.

✅ Why mixed?

  • Claim submission needs instant confirmation.
  • Processing/payout happens later asynchronously.

🗺️ Full Microservices Communication Map

Action Microservice(s) Communication Type
Clock In/Out Attendance Service Sync
Apply Leave Leave Service → Manager Notification Sync → Async
Book Gym Slot Sports & Gym Service Sync
View Team Members Team Management → Employee Directory Sync
Birthday Wish Email Birthday Service → Email Notification Async
Download Salary Slip Payroll Service Sync
Submit Reimbursement Reimbursement Service Sync → Async
Medical Insurance Claim Medical Claim Service Sync → Async

🎯 Why Sync vs Async in Corporate Employee App?

Synchronous (REST API) Asynchronous (Kafka/Event Bus)
User actions needing instant feedback (clock-in, booking slot, applying leave) System notifications, emails, claim payouts
Reading data (team members, salary slip) Sending birthday wishes, notifying approvals

📚 Real-World Observations

  • Apps like DarwinBox, SAP SuccessFactors, Workday, Keka HRMS use this approach.
  • Kafka is heavily used internally for events (leave approval, birthday wishes).
  • REST APIs or GraphQL are used externally for client → server communication.

✍️ Final Thought

Designing a full-fledged Employee Management App is not just CRUD operations.

It’s about balancing fast user interactions with scalable system processing, by choosing synchronous or asynchronous communication wisely.

This architecture ensures that:

  • Employee experience stays smooth.
  • Internal systems are resilient, scalable, and efficient. 🚀