Shifaa is a comprehensive medical appointment management system built with Laravel 11. It provides a robust API to manage doctors, patients, schedules, appointments, and more.
- User Management: User registration and authentication for doctors and patients.
- Profile Management: Users can manage their profiles.
- Doctor Management: Create, read, update, and delete doctor records.
- Patient Management: Create, read, update, and delete patient records.
- Specialty Management: Manage medical specialties.
- Schedule Management: Doctors can manage their schedules.
- Appointment Management: Patients can book appointments with doctors.
- Search: Search for doctors by specialty.
- Clone the repository:
git clone https://github.com/your-username/shifaa.git
- Install dependencies:
composer install
- Create a copy of the
.env.examplefile and name it.env:cp .env.example .env
- Generate an application key:
php artisan key:generate
- Configure your database in the
.envfile. - Run the database migrations:
php artisan migrate
- Seed the database (optional):
php artisan db:seed
- Start the development server:
php artisan serve
All endpoints are prefixed with /api/v1.
| Method | URI | Name | Description | Middleware |
|---|---|---|---|---|
| POST | /register |
register |
Register a new user | |
| POST | /login |
login |
Log in a user | |
| GET | HEAD | /profiles |
profiles.index |
Display a listing of the resource. |
| POST | /profiles |
profiles.store |
Store a newly created resource in storage. | auth:sanctum |
| GET | HEAD | /profiles/{profile} |
profiles.show |
Display the specified resource. |
| PUT | PATCH | /profiles/{profile} |
profiles.update |
Update the specified resource in storage. |
| DELETE | /profiles/{profile} |
profiles.destroy |
Remove the specified resource from storage. | auth:sanctum |
| GET | HEAD | /doctors |
doctors.index |
Display a listing of the resource. |
| POST | /doctors |
doctors.store |
Store a newly created resource in storage. | |
| GET | HEAD | /doctors/{doctor} |
doctors.show |
Display the specified resource. |
| PUT | PATCH | /doctors/{doctor} |
doctors.update |
Update the specified resource in storage. |
| DELETE | /doctors/{doctor} |
doctors.destroy |
Remove the specified resource from storage. | |
| GET | HEAD | /specialties |
specialties.index |
Display a listing of the resource. |
| POST | /specialties |
specialties.store |
Store a newly created resource in storage. | |
| GET | HEAD | /specialties/{specialty} |
specialties.show |
Display the specified resource. |
| PUT | PATCH | /specialties/{specialty} |
specialties.update |
Update the specified resource in storage. |
| DELETE | /specialties/{specialty} |
specialties.destroy |
Remove the specified resource from storage. | |
| GET | HEAD | /search-doctors |
Search for doctors. | |
| GET | HEAD | /patients |
patients.index |
Display a listing of the resource. |
| POST | /patients |
patients.store |
Store a newly created resource in storage. | auth:sanctum |
| GET | HEAD | /patients/{patient} |
patients.show |
Display the specified resource. |
| PUT | PATCH | /patients/{patient} |
patients.update |
Update the specified resource in storage. |
| DELETE | /patients/{patient} |
patients.destroy |
Remove the specified resource from storage. | auth:sanctum |
| GET | HEAD | /schedules |
schedules.index |
Display a listing of the resource. |
| POST | /schedules |
schedules.store |
Store a newly created resource in storage. | auth:sanctum |
| GET | HEAD | /schedules/{schedule} |
schedules.show |
Display the specified resource. |
| PUT | PATCH | /schedules/{schedule} |
schedules.update |
Update the specified resource in storage. |
| DELETE | /schedules/{schedule} |
schedules.destroy |
Remove the specified resource from storage. | auth:sanctum |
| GET | HEAD | /slots |
slots.index |
Display a listing of the resource. |
| POST | /slots |
slots.store |
Store a newly created resource in storage. | auth:sanctum |
| GET | HEAD | /slots/{slot} |
slots.show |
Display the specified resource. |
| PUT | PATCH | /slots/{slot} |
slots.update |
Update the specified resource in storage. |
| DELETE | /slots/{slot} |
slots.destroy |
Remove the specified resource from storage. | auth:sanctum |
| GET | HEAD | /appointments |
appointments.index |
Display a listing of the resource. |
| POST | /appointments |
appointments.store |
Store a newly created resource in storage. | auth:sanctum |
| GET | HEAD | /appointments/{appointment} |
appointments.show |
Display the specified resource. |
| PUT | PATCH | /appointments/{appointment} |
appointments.update |
Update the specified resource in storage. |
| DELETE | /appointments/{appointment} |
appointments.destroy |
Remove the specified resource from storage. | auth:sanctum |
| GET | HEAD | /available-dates |
Get available appointment dates. | |
| GET | HEAD | /profile |
Get the authenticated user's profile. |
The database schema is defined by the migration files in the database/migrations directory. The main tables are:
users: Stores user information.profiles: Stores user profiles.doctors: Stores doctor information.patients: Stores patient information.specialties: Stores medical specialties.schedules: Stores doctor schedules.slots: Stores available appointment slots.appointments: Stores appointment information.
You can use a tool like Postman or Insomnia to interact with the API.
Contributions are welcome! Please feel free to submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.