Files
Minidu Thiranjaya 6594e7be82 scenario update
2026-02-12 21:46:18 +05:30

5.5 KiB
Raw Permalink Blame History

1. The Core Strategy: "Microservices" Approach

  • Shared Foundation (Group Task): Everyone works together on Day 1 to set up the User model, Auth middleware (JWT), and MongoDB connection. This is "boilerplate" and doesn't count towards the distinct 4 endpoints.
  • Individual Ownership: Each member owns a specific business domain.

2. Revised Role Allocation (The "Who Does What")

Member 1: Minidu Supply Chain & Family Identity

  • Core Domain: Managing the vaccine stocks AND the "Head of Household" logic (adding children/dependents).
  • Complexity: Inventory tracking + Relation mapping (Parent-Child).
  • 3rd Party API: Cloudinary / ImgBB (Upload images of vaccine vials/branding).
Method Endpoint Description
POST /api/vaccines Add Vaccine (w/ Image Upload to Cloudinary).
POST /api/batches Add Stock Batch (Qty, Expiry).
POST /api/users/dependents New: Add a child/spouse to the logged-in user's account.
GET /api/users/dependents New: List all family members managed by the user.

Member 2: Nethmi Clinic & Location Services

  • Core Domain: Managing where and when vaccinations happen.
  • Complexity: Spatial data (Coordinates) + Time Management.
  • 3rd Party API: LocationIQ / Mapbox (Convert address to Lat/Long coordinates).
Method Endpoint Description
POST /api/hospitals Register Hospital (Auto-fetch Lat/Lon from API).
POST /api/clinics Create a Vaccination Event (Date, Time, Vaccine Type).
PUT /api/clinics/:id Update capacity (e.g., increase slots).
GET /api/clinics/search Filter clinics by City or Vaccine Type.

Member 3: Saniru Appointment Engine

  • Core Domain: The booking transaction logic (handling quotas).
  • Complexity: Concurrency (preventing double booking) + Handling "Booking for Dependent".
  • 3rd Party API: QR Code API (goqr.me) (Generate a unique pass for the appointment).
Method Endpoint Description
POST /api/appointments Book Slot. Logic: Handle dependentId vs userId. Check Quota. Generate QR.
PUT /api/appointments/:id Cancel & Restore Quota to the Clinic.
GET /api/appointments/my List appointments for Self AND Family.
GET /api/appointments/clinic/:id Admin View: List of people (Names + QR Codes) for a specific day.

Member 4: Kaveen Records & Communication

  • Core Domain: Medical history and notifying users.
  • Complexity: State management (Vaccinated vs. Pending) + External Comms.
  • 3rd Party API: SendGrid / EmailJS (Send confirmations).
Method Endpoint Description
POST /api/records Doctor marks patient as "Vaccinated". Triggers Email.
GET /api/records/history Get full history for Self AND Dependents.
GET /api/records/due Logic: Calculate next dose date based on vaccine rules.
POST /api/side-effects Log adverse reactions for a specific batch.

3. Milestone 1 Schedule (Feb 8 - Feb 20)

Internal Target: Finish by Friday, Feb 20 (gives 1 week buffer before Evaluation 01).

Phase 1: Setup (Days 1-2)

  • Dates: Feb 8-9
  • Group: Git Repo, Express Setup, Mongo Atlas Connection.
  • Shared Code: Write authController.js (Register/Login) and authMiddleware.js.
  • API Keys: Get keys for Cloudinary, LocationIQ, and SendGrid. Put them in .env.

Phase 2: Individual Feature Dev (Days 3-8)

  • Dates: Feb 10-15
  • Minidu: Build Dependent model. Implement logic: "Parent ID must match User ID". Implement Image Upload.
  • Nethmi: Build Hospital model. Implement Geocoding middleware.
  • Saniru: Build Appointment model. Logic: "If dependentId exists, save that name, else save User name." Integrate QR API.
  • Kaveen: Build Record model. Logic: "When status = Vaccinated, fire email function."

Phase 3: Integration & Testing (Days 9-12)

  • Dates: Feb 16-19
  • Crucial Integration:
  • Does Saniru's booking subtract from Nethmi's clinic capacity?
  • Does Kaveen's history show Minidu's vaccine details?
  • Testing: Test the "Family Flow":
  1. Login as Parent.
  2. Add Child (Minidu).
  3. Book Appt for Child (Saniru).
  4. Doctor marks Child vaccinated (Kaveen).
  5. Parent checks email (Kaveen).

4. Pre-Submission Checklist (Evaluation 01 Specific)

Group Marks (20%)

  • Architecture Diagram: Includes the "Dependent" entity logic?
  • Framework Justification: Slide explaining "Why MongoDB?" -> "Because storing nested family records and varied vaccine attributes is easier in JSON/BSON."

Individual Marks (80%) - The "Must Haves"

  • Minidu: Is the vaccine image hosted on Cloudinary? Can you add a child to a user account?
  • Nethmi: Does the Hospital registration automatically fill in Lat/Long?
  • Saniru: Does the appointment response include a valid QR code link? Can you book for a dependent?
  • Kaveen: Does the email arrive when a record is updated? Does the history endpoint show family data?

Code Quality

  • Separation: Controllers are separate from Routes.
  • Security: "Dependents" can only be viewed by their own Parent (Middleware check).
  • Validation: Inputs are validated (e.g., cannot book a date in the past).

coparent share enabled