Full Stack Application that manages patients, clinics and their relationships
-
Backend:
- FastAPI
- Python 3.9+
- Swagger
-
Frontend:
- React.js
- TailwindCSS
- Zod
- React Hook Form
-
Database:
- PostgreSQL
-
Containerization:
- Docker
- Docker Compose
-
Version Control:
- Git
- Github
To install and run the project, follow these steps:
-
Clone the repository:
git clone https://github.com/cunegundess/MediSync.git
-
Navigate to the project directory:
cd MediSync -
Create a .env file with the following content:
POSTGRES_USER=medisync POSTGRES_PASSWORD=medisync1234# POSTGRES_DB=medisync_database POSTGRES_URL=postgresql://medisync:medisync1234#@postgres/medisync_database VITE_BACKEND_API_URL=http://localhost:8000 -
Now run the project the following command:
docker compose -f docker-compose.yml up --build
Once the application is running, the backend will be available at http://localhost:8000 and the frontend at http://localhost:5173. The Swagger UI will be available at http://localhost:8000/docs
-
Get All Clinics
- URL:
/clinics - Method:
GET - Description: Retrieves a list of all clinics in the system.
- URL:
-
Create Clinic
- URL:
/clinics - Method:
POST - Description: Allows the creation of a new clinic. The request body should include details such as clinic name and specialty.
- URL:
-
Update Clinic
- URL:
/clinics/{clinic_id} - Method:
PUT - Description: Updates the details of an existing clinic. The request body should contain updated information about the clinic.
- URL:
-
Delete Clinic
- URL:
/clinics/{clinic_id} - Method:
DELETE - Description: Deletes a clinic from the system using its unique identifier (
clinic_id).
- URL:
-
Get All Patients
- URL:
/patients - Method:
GET - Description: Retrieves a list of all patients in the system.
- URL:
-
Create Patient
- URL:
/patients - Method:
POST - Description: Allows the creation of a new patient. The request body should include patient details like name, email and phone number.
- URL:
-
Update Patient
- URL:
/patients/{patient_id} - Method:
PUT - Description: Updates a patient's details using their unique identifier (
patient_id). The request body should include the updated patient information.
- URL:
-
Delete Patient
- URL:
/patients/{patient_id} - Method:
DELETE - Description: Deletes a patient from the system by their unique identifier (
patient_id).
- URL:
-
Get All Relationships
- URL:
/relationships/ - Method:
GET - Description: Retrieves a list of all relationships between patients and clinics.
- URL:
-
Create Relationship
- URL:
/relationships/ - Method:
POST - Description: Allows the creation of a new relationship. The request body should include patient_id, clinic_id and relationship_type
- URL:
-
Update Relationship
- URL:
/relationships/{relationship_id} - Method:
PUT - Description: Updates a patient's details using their unique identifier (
patient_id). The request body should include the updated patient information.
- URL:
-
Delete Relationship
- URL:
/relationships/{relationship_id} - Method:
DELETE - Description: Deletes a relationship from the system by their unique identifier (
relationship_id).
- URL:
- Backend | Implement Unit Tests
- Backend | Create Patients CRUD
- Backend | Create Clinics CRUD
- Backend | Create Relationships CRUD
- Backend | Create Clinics Routes
- Frontend | Implement Patients screen and components
- Frontend | Implement Clinics screen and API integration
- Frontend | Implement Relationships screen and API integration
- Frontend | Create Modal components for Entities
- Frontend | Integrate Patients data with backend after PUT request
- Frontend | Fix background opacity in modals and remove column name from icons
- Docker | Configure PostgreSQL for backend
- Docker | Configure Docker for frontend
- Docker | Add API URL as an environment variable for frontend
- Frontend | Implement React Router and create pages
- Frontend | Style Sidebar and HomePage, remove PageFooter
- Frontend | Implement form validations
