diff --git a/README.md b/README.md
index 1f46c9f3..740ec81e 100644
--- a/README.md
+++ b/README.md
@@ -1,522 +1,428 @@
# El7a2ny Virtual Clinic and Pharmacy
-## Motivation
El7a2ny Virtual Clinic and Pharmacy is not just a software solution; it's a revolutionary approach to healthcare. In a world where convenience and efficiency matter, our goal is to redefine the concept of "Telehealth" by leveraging cutting-edge technologies and techniques.
-### Vision
-
-Our vision is to bridge the gap between doctors and patients, making healthcare more accessible and convenient. We aspire to eliminate the need for physical clinic visits for routine check-ups. With a simple click of a button, patients can connect with their doctors seamlessly through high-quality video calls.
-
-### Key Features
-
-- **Virtual Consultations:** Say goodbye to long waiting times and commuting. Connect with your healthcare provider instantly from the comfort of your home.
-
-- **Cutting-Edge Technologies:** We employ state-of-the-art technologies to ensure a secure, reliable, and user-friendly experience.
-
-- **Patient-Centric Approach:** Our platform is designed with the patient in mind, prioritizing ease of use, accessibility, and personalized healthcare.
+To ensure scalability, maintainability, and separation of concerns, the project was developed following the **Clean Architecture** pattern. This architectural approach allowed clear boundaries between business logic, presentation, and data layers, making the system robust and adaptable to future enhancements.
## Build Status
[](https://your-build-url)
-The current version of El7a2ny Virtual Clinic and Pharmacy is successfully passing all builds. We are committed to delivering a robust and reliable platform. In the rare event of any hidden glitches, rest assured that they are diligently handled, and they do not pose code-breaking issues. Our development team is proactive in addressing and resolving any unexpected issues to ensure a seamless experience for our users.
-
-## Code Style
-
-El7a2ny Virtual Clinic and Pharmacy follows a clear and organized coding structure based on the Model-View-Controller (MVC) architecture. This separation of concerns enhances maintainability and scalability by isolating the application logic, user interface, and data.
-
-### MVC Architecture
+The current version of El7a2ny Virtual Clinic and Pharmacy is successfully passing all builds. We are committed to delivering a robust and reliable platform. If you found any issues while using the system, you can just reach out to any one of the contributors with your issue.
-- **Model:** Manages data and business logic. This layer is responsible for interacting with the database and processing data.
+## Planned Features
-- **View:** Presents information to the user and handles user interface components. This layer ensures a clean separation between the application's logic and its presentation.
+We are continuously working to enhance the El7a2ny Virtual Clinic and Pharmacy platform. Upcoming features and improvements include:
-- **Controller:** Acts as an intermediary between the Model and View, processing user input and updating the Model and View accordingly. This layer helps in maintaining the flow of data between the Model and View.
+- **Swagger Integration**: API documentation using Swagger will be added very soon to provide an interactive and developer-friendly interface for exploring and testing the backend endpoints.
-### Routes for Code Organization
+- **Redis Caching**: Integration of Redis is planned to optimize data retrieval, reduce server load, and improve overall response time through efficient caching mechanisms.
-To enhance code readability and maintainability, we leverage routing mechanisms. Routes in our application serve as a roadmap, making it easier to understand the flow of data and actions within the codebase. This approach results in cleaner and more organized code.
+- **Testing with Jest**: Unit and integration tests will be implemented using Jest to ensure code reliability, catch regressions early, and improve development confidence.
-## Frameworks and Technologies Used
-
-El7a2ny Virtual Clinic and Pharmacy is built on the MERN (MongoDB, Express.js, React, Node.js) stack, with the addition of Next.js for seamless server-side rendering and enhanced performance.
-
-### MERN Stack
-
-- **MongoDB:** A NoSQL database for storing and managing data efficiently.
+- **Microservices Refactor**: The monolithic structure will be progressively refactored into a microservices architecture. This will improve scalability, isolate services for easier maintenance, and allow independent deployment of critical modules.
-- **Express.js:** A web application framework for Node.js that simplifies the creation of robust APIs.
+
+Code Style Guide
-- **React:** A JavaScript library for building user interfaces. The front-end of our virtual clinic is developed using React to ensure a dynamic and responsive user experience.
+## JavaScript (Node.js and React)
-- **Node.js:** A server-side runtime environment that allows us to run JavaScript on the server. It powers the backend of our application.
+- _Naming Conventions_: camelCase for variables/functions, PascalCase for React components.
-- **Next.js:** A React framework that enables server-side rendering and other performance optimizations for our user interface.
+## Express.js (Backend)
-### Payment Integration
+- _Routing_: Follow RESTful conventions for organized routes.
+- _Middleware_: Use for route-specific logic.
-- **Stripe:** We leverage Stripe for seamless and secure payment processing, providing a reliable solution for transactions within our virtual clinic and pharmacy.
+## MongoDB (Database)
-### User Interface
+- _Naming Conventions_: Maintain consistent naming for collections (singular nouns).
+- _Schema Design_: Ensure consistency across collections.
-- **Material-UI (MUI) Templates:** Our user interface benefits from the design principles and components provided by Material-UI. This ensures a consistent and visually appealing experience for our users.
+## React with Material-UI (Frontend)
-By combining these technologies, we aim to deliver a robust, scalable, and user-friendly platform for virtual healthcare and pharmacy services.
+- _MUI Components_: Leverage Material-UI components and adhere to their guidelines.
+- _Folder Structure_: Organize components by features/functions.
+- _State Management_: Use Context API for complex state (if needed).
+- _Lifecycle Methods_: Prefer hooks and functional components.
+## Git Workflow
-## Features
-
-### For Doctors:
+- _Branching_: Follow Gitflow (feature branches, develop, master).
+- _Pull Requests_: Require clear descriptions and peer reviews before merging.
-- **Registration and Account Management:** Doctors can easily register and manage their accounts. Each doctor has their own wallet, allowing them to handle transactions seamlessly.
-
-- **Hourly Rate Management:** Doctors can set their hourly rates and publish their available time slots for appointments.
-
-### For Patients:
-
-- **User Registration and Profile:** Patients can register, create profiles, and view details about different doctors and their specialties.
-
-- **Appointment Booking:** Patients can book appointments with doctors based on their availability.
-
-- **Chat and Video Calls:** After completing appointments, patients can engage in chat with doctors and make video calls for follow-up consultations.
-
-- **Health Packages Subscription:** Patients can subscribe to health packages (Silver, Gold, Platinum) offering discounts based on the tier.
+
-- **Family Members Management:** Patients can add family members to their accounts, extending subscription benefits to them.
-
-- **Pharmacy Services:** Patients can purchase medicines from the pharmacy section, checkout, and track their orders. They can also engage in chat with the pharmacy.
-
-- **Password Reset:** Patients can reset their passwords via email if forgotten.
-
-### For Pharmacists:
-
-- **Registration and Account Management:** Pharmacists can register, manage their accounts, and add medicines to the inventory.
-
-- **Medicine Management:** Pharmacists can categorize medicines as over-the-counter (OTC) or prescription-only. Medicines can be archived or unarchived as needed.
-
-### For Admins:
-
-- **Account Approval:** Admins have the authority to approve new doctor and pharmacist accounts.
-
-These features collectively make El7a2ny Virtual Clinic and Pharmacy a comprehensive platform for streamlined healthcare services, connecting doctors, patients, and pharmacists efficiently.
-
-## Credits
-
-### Frameworks, Libraries, and Resources
-
-- [Material-UI (MUI) Devias Kit](https://mui.com/store/items/devias-kit/): Credits to the creators of the MUI Devias Kit for providing a foundation of design principles and components that significantly contributed to the visual aesthetics and user experience of El7a2ny Virtual Clinic and Pharmacy.
-
-### Educational Resources
+## Screenshots
-- [Net Ninja Node.js YouTube Playlist](https://www.youtube.com/watch?v=zb3Qk8SG5Ms&list=PL4cUxeGkcC9jsz4LDYc6kv3ymONOKxwBU): Gratitude to Net Ninja for the informative and insightful Node.js tutorials. These resources played a crucial role in shaping the backend architecture of our virtual clinic.
+
+Patient Dashboard
-- [Net Ninja React YouTube Playlist](https://www.youtube.com/watch?v=j942wKiXFu8&list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d): Special thanks to Net Ninja for the comprehensive React tutorials. These tutorials were instrumental in the development of the frontend, ensuring a smooth and responsive user interface.
+
-### Other Contributions
+
-- [Any Other Third-Party Libraries or Resources Used](#): Acknowledgment to the creators of any additional libraries or resources that have been utilized in the development of El7a2ny Virtual Clinic and Pharmacy.
+
+Doctor's Appointments
-We extend our appreciation to the developers, educators, and contributors whose work has played a key role in the success of this project.
+
-## License
+
-### El7a2ny Virtual Clinic and Pharmacy
+
+Doctor Scheduling an Appointment
+
-### Third-Party Licenses
+
-- **Stripe:** Payment processing in El7a2ny Virtual Clinic and Pharmacy is facilitated by Stripe. Please refer to the [Stripe Terms of Service](https://stripe.com/terms) for information on licensing and usage.
+
+Doctors' Applications Page
-- **MUI Devias Kit:** The Material-UI Devias Kit is used for design and user interface components. Refer to the [Devias Kit License](https://mui.com/store/items/devias-kit/) for licensing details.
+
-- **Net Ninja Node.js and React YouTube Playlists:** The educational resources provided by Net Ninja are subject to their respective licenses. Please check the terms on the [Net Ninja YouTube Channel](https://www.youtube.com/@NetNinja) for more information.
+
-- **Any Other Third-Party Libraries or Resources Used:** Check the documentation or respective repositories for licensing details of any additional libraries or resources utilized in El7a2ny Virtual Clinic and Pharmacy.
+
+Appointment Payment
-It is essential to review and comply with the licenses associated with the third-party components used in this project.
+
+
-## Screenshots
+
+CodeMedic's Meet
-### Dashboard
+
-
+
-### Doctor's Profile
+
+CodeMedic's Chat
-
+
-### Appointment Booking
+
-
+### Phamrmacy
-### Appointment Payment
+
+Pharmacy Section
-
+
-### Pharmacy Section
+
-
+
+Pharmacy Cart
-### Pharmacy Cart
+
-
+
## Code Snippets
-Backend of pay with Wallet Method
-
-
-### ----------------------------------------------
-
-Frontend code of getting appointments
+Backend Snippet
+
+
+ Patient Controller Snippet
+
+```javascript
+router.patch("/:username/password", async (req, res) => {
+ try {
+ const patient = await patientService.updatePatientPassword(
+ req.params.username,
+ req.body.password
+ );
+ res.status(200).json({ data: patient });
+ } catch (error) {
+ errorHandler(error, req, res);
+ }
+});
+
+router.get("/:username/appointments", async (req, res) => {
+ try {
+ const appointments = await patientService.getPatientAppointments(
+ req.params.username,
+ req.query.status
+ );
+ res.status(200).json({ data: appointments });
+ } catch (error) {
+ errorHandler(error, req, res);
+ }
+});
+```
+
-
### ----------------------------------------------
-Backend of getting all prescriptions
-
-
-
-
-## API Reference
-
-### Patient Routes
-
-#### Register
-
-- **Endpoint:** `/register`
-- **Method:** GET
-- **Description:** Renders the patient registration view.
-
-#### Get Patients
-
-- **Endpoint:** `/getPatients`
-- **Method:** GET
-- **Description:** Retrieves a list of patients.
-
-#### Get Me
-
-- **Endpoint:** `/getMe`
-- **Method:** GET
-- **Description:** Retrieves the details of the currently authenticated patient.
-
-...
-
-#### Download Prescription PDF
-
-- **Endpoint:** `/download-prescription-pdf`
-- **Method:** POST
-- **Description:** Generates a PDF version of a prescription.
-
-#### View Health Records
-
-- **Endpoint:** `/:username/health-records`
-- **Method:** GET
-- **Description:** Retrieves health records for a specific patient.
-
-...
-
-#### Add Prescription
-
-- **Endpoint:** `/addPrescription`
-- **Method:** POST
-- **Description:** Adds a prescription.
-
-...
-
-#### Subscribe Health Package
-
-- **Endpoint:** `/subscribeHealthPackage`
-- **Method:** POST
-- **Description:** Subscribes a patient to a health package.
-
-...
-
-#### Pay with Wallet Package
-
-- **Endpoint:** `/payWithWalletPackage`
-- **Method:** PATCH
-- **Description:** Allows a patient to pay for a health package using their wallet.
-
-...
-
-#### View Available Packages
-
-- **Endpoint:** `/getAvailablePackages`
-- **Method:** GET
-- **Description:** Retrieves a list of available health packages.
-
-
-### Doctor Routes
-
-#### Register
-
-- **Endpoint:** `/register`
-- **Method:** POST
-- **Description:** Registers a new doctor, including file uploads for national ID, medical degree, and medical license.
-
-#### View Doctor Register
-
-- **Endpoint:** `/register`
-- **Method:** GET
-- **Description:** Renders the doctor registration view.
-
-...
-
-#### Schedule Follow-up
-
-- **Endpoint:** `/:doctorUsername/schedule-followup`
-- **Method:** POST
-- **Description:** Schedules a follow-up for a specific doctor.
-
-...
-
-#### Change Password
-
-- **Endpoint:** `/changePassword`
-- **Method:** POST
-- **Description:** Changes the password for the authenticated doctor.
-
-...
-
-#### View Upcoming Appointments
-
-- **Endpoint:** `/:doctorUsername/upcoming-appointments`
-- **Method:** GET
-- **Description:** Retrieves upcoming appointments for a specific doctor.
-
-...
-
-#### Add Appointments
-
-- **Endpoint:** `/addAppointments`
-- **Method:** POST
-- **Description:** Adds appointments to the doctor's schedule.
-
-...
-
-#### Update Doctor
-
-- **Endpoint:** `/`
-- **Method:** PATCH
-- **Description:** Updates the details of the authenticated doctor.
+Frontend Snippets
+
+
+Patient Account Page
+
+```javascript
+import { useState } from "react";
+import { Box, Container, Stack, Typography } from "@mui/material";
+import { Layout as DashboardLayout } from "src/layouts/dashboard/user/layout";
+import Message from "src/components/Miscellaneous/Message";
+import Title from "src/components/Table/Body/Title";
+import LoadingSpinner from "src/components/LoadingSpinner";
+import Account from "src/components/Account/Account";
+import { BACKEND_ROUTE } from "src/utils/Constants";
+import { useGet } from "src/hooks/custom-hooks";
+import Cookies from "js-cookie";
+
+const Page = () => {
+ const [patient, setPatient] = useState({});
+ const [showError, setShowError] = useState(false);
+ const [error, setError] = useState("");
+ const [loading, setLoading] = useState(true);
+
+ const fields = [
+ { name: "firstName", label: "First Name", type: "text" },
+ { name: "lastName", label: "Last Name", type: "text" },
+ { name: "email", label: "Email", type: "email" },
+ { name: "number", label: "Phone Number", type: "text" },
+ { name: "dateOfBirth", label: "Date Of Birth", type: "date" },
+ { name: "emergencyContact.name", label: "Emergency Contact Name", type: "text" },
+ { name: "emergencyContact.number", label: "Emergency Contact Number", type: "text" },
+ { name: "emergencyContact.relation", label: "Emergency Contact Relation", type: "text" },
+ ];
+
+ useGet({
+ url: `${BACKEND_ROUTE}/patients/${Cookies.get("username")}`,
+ setData: setPatient,
+ setLoading,
+ setError,
+ setShowError,
+ });
+
+ return (
+ <>
+
+
+
+
+
+ Account
+
+
+
+
+
+
+ >
+ );
+};
+
+Page.getLayout = (page) => {page};
+export default Page;
+```
+
+
+
+Doctor's Patients Page
+
+```javascript
+import { useState } from "react";
+import { Layout as DashboardLayout } from "src/layouts/dashboard/doctor/layout";
+import { useGet } from "src/hooks/custom-hooks";
+import Cookies from "js-cookie";
+import { BACKEND_ROUTE } from "src/utils/Constants";
+import { Table } from "src/components/Table/Table";
+import ObjectInfo from "src/components/ObjectInfo";
+import { DoctorPatientActions } from "src/components/DoctorPatientActions";
+import Message from "src/components/Miscellaneous/Message";
+
+const columns = ["Name", "Email", "Date Of Birth", "Actions"];
+
+const Page = () => {
+ const [allData, setAllData] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [searchName, setSearchName] = useState("");
+ const [upcoming, setUpcoming] = useState("None");
+ const [showError, setShowError] = useState(false);
+ const [error, setError] = useState("");
+ const [popUpDisplay, setPopUpDisplay] = useState(false);
+ const [popUpElement, setPopUpElement] = useState();
+
+ const username = Cookies.get("username");
+
+ const filters = [
+ {
+ type: "text",
+ name: "Search Patient Name",
+ state: searchName,
+ setState: setSearchName,
+ },
+ {
+ type: "menu",
+ name: "Upcoming",
+ state: upcoming,
+ setState: setUpcoming,
+ options: [
+ { value: "None", label: "None" },
+ { value: "Yes", label: "Yes" },
+ { value: "No", label: "No" },
+ ],
+ },
+ ];
+
+ useGet({
+ url: `${BACKEND_ROUTE}/doctors/${username}/patients`,
+ setData: setAllData,
+ setLoading,
+ setError,
+ setShowError,
+ });
+
+ const handleData = () => {
+ return allData.filter((item) => {
+ if (
+ searchName !== "" &&
+ !`${item.patient.firstName} ${item.patient.lastName}`
+ .toLowerCase()
+ .includes(searchName.toLowerCase())
+ )
+ return false;
+ if (
+ upcoming !== "None" &&
+ ((upcoming == "Yes" && item.upcoming) || (upcoming == "No" && !item.upcoming))
+ )
+ return false;
+ return true;
+ });
+ };
+
+ const data = handleData();
+
+ console.log("Data", data);
+
+ const tableRows = data.map((item) => {
+ console.log("item", item);
+ return (
+ <>
+
+
+ >
+ );
+ });
+
+ return (
+ <>
+
+
+ >
+ );
+};
+
+Page.getLayout = (page) => {page};
+
+export default Page;
+```
+
-...
-
-#### Cancel Appointment
-
-- **Endpoint:** `/CancelAppointment`
-- **Method:** PATCH
-- **Description:** Cancels a specific appointment.
-
-...
-
-#### View Patient Appointment
-
-- **Endpoint:** `/viewPatientAppointment/:patientUsername`
-- **Method:** GET
-- **Description:** Retrieves appointments for a specific patient.
-
-...
-
-#### Reschedule Appointments
-
-- **Endpoint:** `/rescheduleAppointments/:patientUsername`
-- **Method:** PATCH
-- **Description:** Reschedules appointments for a specific patient.
-
-...
-
-#### View Appointments
-
-- **Endpoint:** `/viewAppointments`
-- **Method:** GET
-- **Description:** Filters and retrieves appointments based on various parameters.
-
-### Admin Routes
-
-#### View Admin Panel
-
-- **Endpoint:** `/`
-- **Method:** GET
-- **Description:** Renders the admin panel view.
-
-#### Get Packages
-
-- **Endpoint:** `/getPackages`
-- **Method:** GET
-- **Description:** Retrieves information about available packages.
-
-...
-
-#### View Doctor Applications
-
-- **Endpoint:** `/viewDoctorApplications`
-- **Method:** GET
-- **Description:** Retrieves and views doctor applications.
-
-...
-
-#### View Doctors
-
-- **Endpoint:** `/viewDoctors`
-- **Method:** GET
-- **Description:** Retrieves and views information about registered doctors.
-
-...
-
-#### View Patients
-
-- **Endpoint:** `/viewPatients`
-- **Method:** GET
-- **Description:** Retrieves and views information about registered patients.
-
-...
-
-#### View Admins
-
-- **Endpoint:** `/viewAdmins`
-- **Method:** GET
-- **Description:** Retrieves and views information about registered administrators.
-
-...
-
-#### Change Password
-
-- **Endpoint:** `/changePassword`
-- **Method:** POST
-- **Description:** Changes the password for the authenticated admin.
-
-...
-
-#### Remove Patient
-
-- **Endpoint:** `/removePatient`
-- **Method:** POST
-- **Description:** Removes a specific patient.
-
-...
-
-#### Remove Doctor
-
-- **Endpoint:** `/removeDoctor`
-- **Method:** POST
-- **Description:** Removes a specific doctor.
-
-...
-
-#### Remove Admin
-
-- **Endpoint:** `/removeAdmin`
-- **Method:** POST
-- **Description:** Removes a specific admin.
-
-...
-
-#### Add Admin
-
-- **Endpoint:** `/addAdmin`
-- **Method:** POST
-- **Description:** Adds a new admin.
-
-...
-
-#### Create Admin
-
-- **Endpoint:** `/createAdmin`
-- **Method:** POST
-- **Description:** Creates a new admin.
-
-...
-
-#### View Register Admin
-
-- **Endpoint:** `/register`
-- **Method:** GET
-- **Description:** Renders the admin registration view.
-
-...
-
-#### Remove User
-
-- **Endpoint:** `/removeUser`
-- **Method:** DELETE
-- **Description:** Removes a user (generic endpoint, specifics may vary).
-
-...
+## Frameworks and Technologies Used
+- [Node.js](https://nodejs.org/)
+- [Express](https://expressjs.com/)
+- [React](https://reactjs.org/)
+- [MongoDB](https://www.mongodb.com/)
+- [Mongoose](https://mongoosejs.com/)
+- [Material-UI](https://mui.com/)
+- [Stripe](https://stripe.com/)
+- [Git](https://git-scm.com/)
+- [MongoDB Atlas](https://www.mongodb.com/atlas)
+- [Postman](https://www.postman.com/)
+- [VSCode](https://code.visualstudio.com/)
+- [Socket IO](https://socket.io/)
+- [JWT](https://jwt.io/)
+- [Node Mailer](https://nodemailer.com/)
-#### Update Admin
-- **Endpoint:** `/updateAdmin`
-- **Method:** PATCH
-- **Description:** Updates information for a specific admin.
+## Features
-...
+### For Doctors:
-#### Get All Admins
+- **Registration and Account Management:** Doctors can easily register and manage their accounts. Each doctor has their own wallet, allowing them to handle transactions seamlessly.
-- **Endpoint:** `/getAllAdmins`
-- **Method:** GET
-- **Description:** Retrieves information about all admins.
+- **Hourly Rate Management:** Doctors can set their hourly rates and publish their available time slots for appointments.
+### For Patients:
-### Chat Routes
+- **User Registration and Profile:** Patients can register, create profiles, and view details about different doctors and their specialties.
-#### Get Patient Chats
+- **Appointment Booking:** Patients can book appointments with doctors based on their availability.
-- **Endpoint:** `/getPatientChats`
-- **Method:** GET
-- **Description:** Retrieves the list of chats for a specific patient.
+- **Chat and Video Calls:** After completing appointments, patients can engage in chat with doctors and make video calls for follow-up consultations.
-#### Get Doctor Chats
+- **Health Packages Subscription:** Patients can subscribe to health packages (Silver, Gold, Platinum) offering discounts based on the tier.
-- **Endpoint:** `/getDoctorChats`
-- **Method:** GET
-- **Description:** Retrieves the list of chats for a specific doctor.
+- **Family Members Management:** Patients can add family members to their accounts, extending subscription benefits to them.
-#### Get Messages
+- **Pharmacy Services:** Patients can purchase medicines from the pharmacy section, checkout, and track their orders. They can also engage in chat with the pharmacy.
-- **Endpoint:** `/getMessages`
-- **Method:** GET
-- **Description:** Retrieves the messages for a specific chat.
+- **Password Reset:** Patients can reset their passwords via email if forgotten.
-#### Send Message
+### For Pharmacists:
-- **Endpoint:** `/sendMessage`
-- **Method:** POST
-- **Description:** Sends a message in a specific chat.
+- **Registration and Account Management:** Pharmacists can register, manage their accounts, and add medicines to the inventory.
-### Generic Routes
+- **Medicine Management:** Pharmacists can categorize medicines as over-the-counter (OTC) or prescription-only. Medicines can be archived or unarchived as needed.
-#### Login
+### For Admins:
-- **Endpoint:** `/login`
-- **Method:** GET
-- **Description:** Renders the login view.
+- **Account Approval:** Admins have the authority to approve new doctor and pharmacist accounts.
-- **Endpoint:** `/login`
-- **Method:** POST
-- **Description:** Handles user authentication and login.
+These features collectively make El7a2ny Virtual Clinic and Pharmacy a comprehensive platform for streamlined healthcare services, connecting doctors, patients, and pharmacists efficiently.
-#### Logout
+## Credits
-- **Endpoint:** `/logout`
-- **Method:** POST
-- **Description:** Logs out the authenticated user.
+- [NodeJs docs](https://nodejs.org/en/docs)
+- [Express docs](https://expressjs.com/en/4x/api.html)
+- [ReactJs docs](https://reactjs.org/docs/getting-started.html)
+- [Mongoose docs](https://mongoosejs.com/docs/)
+- [Stripe docs](https://stripe.com/docs)
-#### Reset Password
+### Other Contributions
-- **Endpoint:** `/resetPassword`
-- **Method:** POST
-- **Description:** Resets the password for the user.
+- [Any Other Third-Party Libraries or Resources Used](#): Acknowledgment to the creators of any additional libraries or resources that have been utilized in the development of El7a2ny Virtual Clinic and Pharmacy.
-#### Get Me
+We extend our appreciation to the developers, educators, and contributors whose work has played a key role in the success of this project.
-- **Endpoint:** `/getMe`
-- **Method:** GET
-- **Description:** Retrieves details about the authenticated user.
+## API Reference
+Will be added very soon
## Installation
@@ -524,93 +430,84 @@ To get started with the El7a2ny Virtual Clinic and Pharmacy, follow the steps be
### Clinic Installation
- Clone the Clinic repository from GitHub:
+Clone the Clinic repository from GitHub:
- ```bash
- git clone https://github.com/advanced-computer-lab-2023/CodeMedics-Clinic
- ```
+ ```bash
+ git clone https://github.com/advanced-computer-lab-2023/CodeMedics-Clinic
+````
### Clinic Installation
- Clone the Clinic repository from GitHub:
+Clone the Clinic repository from GitHub:
- ```bash
- git clone https://github.com/advanced-computer-lab-2023/CodeMedics-Pharmacy
- ```
+```bash
+git clone https://github.com/advanced-computer-lab-2023/CodeMedics-Pharmacy
+```
## How to Use
### Clinic
1. ```bash
- cd CodeMedics-Clinic
- ```
+ cd CodeMedics-Clinic
+ ```
2. ```bash
- npm install
- ```
+ npm install
+ ```
3. ```bash
- cd CodeMedics-Clinic/Frontend/el7a2ny-frontend
- ```
+ cd CodeMedics-Clinic/Frontend/el7a2ny-frontend
+ ```
4. ```bash
- npm install
- ```
+ npm install
+ ```
5. Setup port to be 8000 and setup MONGO_URI
6. To Run the backend, navigate to the root folder and type in
- ```bash
- nodemon app
- ```
+ ```bash
+ nodemon app
+ ```
+
7. To Run the Frontend, navigate to /frontend/el7a2ny-frontend and type in
- ```bash
- npm run dev
- ```
+ ```bash
+ npm run dev
+ ```
8. The Clinic should be accessible at http://localhost:3001/
### Pharmacy
1. ```bash
- cd CodeMedics-Pharmacy
- ```
+ cd CodeMedics-Pharmacy
+ ```
2. ```bash
- npm install
- ```
+ npm install
+ ```
3. ```bash
- cd CodeMedics-Pharmacy/Frontend/el7a2ny-frontend
- ```
+ cd CodeMedics-Pharmacy/Frontend/el7a2ny-frontend
+ ```
4. ```bash
- npm install
- ```
+ npm install
+ ```
5. Setup port to be 8001 and setup MONGO_URI
6. To Run the backend, navigate to the root folder and type in
- ```bash
- nodemon app
- ```
+ ```bash
+ nodemon app
+ ```
+
7. To Run the Frontend, navigate to /frontend/el7a2ny-frontend and type in
- ```bash
- npm run dev
- ```
+ ```bash
+ npm run dev
+ ```
+
8. The Pharmacy should be accessible at http://localhost:3001/
## Tests
### Postman
-Testing Login
-
-
-
-Fetching family members of logged in user
-
-
-
-Getting all prescriptions prescriped by a certain doctor
-
-
-## Contribute
-There may be user experience problems on our website that can be handled; perhaps enhancing the website with more features that are satisfying can help it stand out more.
\ No newline at end of file
+Will be added soon
diff --git a/screenshots/AdminViewingDoctorsApplications.png b/screenshots/AdminViewingDoctorsApplications.png
new file mode 100644
index 00000000..74e07ffa
Binary files /dev/null and b/screenshots/AdminViewingDoctorsApplications.png differ
diff --git a/screenshots/AppointmentPage.png b/screenshots/AppointmentPage.png
new file mode 100644
index 00000000..287f752e
Binary files /dev/null and b/screenshots/AppointmentPage.png differ
diff --git a/screenshots/Appointment_Payment.png b/screenshots/Appointment_Payment.png
deleted file mode 100644
index 9b393e1a..00000000
Binary files a/screenshots/Appointment_Payment.png and /dev/null differ
diff --git a/screenshots/Chats.jpg b/screenshots/Chats.jpg
new file mode 100644
index 00000000..609c94aa
Binary files /dev/null and b/screenshots/Chats.jpg differ
diff --git a/screenshots/DoctorAppointments.png b/screenshots/DoctorAppointments.png
new file mode 100644
index 00000000..f17f42f6
Binary files /dev/null and b/screenshots/DoctorAppointments.png differ
diff --git a/screenshots/PatientDashboard.png b/screenshots/PatientDashboard.png
new file mode 100644
index 00000000..dd3be7b8
Binary files /dev/null and b/screenshots/PatientDashboard.png differ
diff --git a/screenshots/PatientMeetWithDoctor.jpg b/screenshots/PatientMeetWithDoctor.jpg
new file mode 100644
index 00000000..02f6df3a
Binary files /dev/null and b/screenshots/PatientMeetWithDoctor.jpg differ
diff --git a/screenshots/pharmacy_cart.png b/screenshots/PharmacyCart.png
similarity index 100%
rename from screenshots/pharmacy_cart.png
rename to screenshots/PharmacyCart.png
diff --git a/screenshots/pharmacy_section.png b/screenshots/PharmacySection.png
similarity index 100%
rename from screenshots/pharmacy_section.png
rename to screenshots/PharmacySection.png
diff --git a/screenshots/postman_test1.png b/screenshots/PostmanTest1.png
similarity index 100%
rename from screenshots/postman_test1.png
rename to screenshots/PostmanTest1.png
diff --git a/screenshots/postman_test2.png b/screenshots/PostmanTest2.png
similarity index 100%
rename from screenshots/postman_test2.png
rename to screenshots/PostmanTest2.png
diff --git a/screenshots/postman_test3.png b/screenshots/PostmanTest3.png
similarity index 100%
rename from screenshots/postman_test3.png
rename to screenshots/PostmanTest3.png
diff --git a/screenshots/ScheduleAppointments.png b/screenshots/ScheduleAppointments.png
new file mode 100644
index 00000000..0c44674e
Binary files /dev/null and b/screenshots/ScheduleAppointments.png differ
diff --git a/screenshots/appointment_booking.png b/screenshots/appointment_booking.png
deleted file mode 100644
index 364d4c65..00000000
Binary files a/screenshots/appointment_booking.png and /dev/null differ
diff --git a/screenshots/code_example1.png b/screenshots/code_example1.png
deleted file mode 100644
index fad8635e..00000000
Binary files a/screenshots/code_example1.png and /dev/null differ
diff --git a/screenshots/code_example2.png b/screenshots/code_example2.png
deleted file mode 100644
index 685302f1..00000000
Binary files a/screenshots/code_example2.png and /dev/null differ
diff --git a/screenshots/code_example3.png b/screenshots/code_example3.png
deleted file mode 100644
index ecfd4f1f..00000000
Binary files a/screenshots/code_example3.png and /dev/null differ
diff --git a/screenshots/dashboard.png b/screenshots/dashboard.png
deleted file mode 100644
index ef6619a2..00000000
Binary files a/screenshots/dashboard.png and /dev/null differ
diff --git a/screenshots/doctor_profile.png b/screenshots/doctor_profile.png
deleted file mode 100644
index 24cc9e02..00000000
Binary files a/screenshots/doctor_profile.png and /dev/null differ