5.5 KiB
5.5 KiB
1. The Core Strategy: "Microservices" Approach
- Shared Foundation (Group Task): Everyone works together on Day 1 to set up the
Usermodel,Authmiddleware (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) andauthMiddleware.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
Dependentmodel. Implement logic: "Parent ID must match User ID". Implement Image Upload. - Nethmi: Build
Hospitalmodel. Implement Geocoding middleware. - Saniru: Build
Appointmentmodel. Logic: "IfdependentIdexists, save that name, else save User name." Integrate QR API. - Kaveen: Build
Recordmodel. 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":
- Login as Parent.
- Add Child (Minidu).
- Book Appt for Child (Saniru).
- Doctor marks Child vaccinated (Kaveen).
- 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).