A FastAPI-based REST API for searching local clinic services in Sierra Leone, managing clinic listings, booking appointments, and collecting patient reviews.
# Clinic Service API
A FastAPI-based REST API for searching local clinic services in Sierra Leone, managing clinic listings, booking appointments, and collecting patient reviews.
## Project Alignment
- **Course requirement:** FastAPI industry-standard REST API for Object-Oriented Programming 2.
- **Selected domain:** Clinic Service API for searching local clinic services.
- **SDG alignment:** SDG 3, Good Health and Well-being, by improving discoverability of local health services.
- **Sierra Leone problem focus:** Patients often struggle to find nearby clinics, available services, operating hours, and contact details quickly. This API centralizes that information and supports appointment booking.
## Features
- JWT authentication with password hashing.
- Role-based access control for `admin`, `staff`, and `patient`.
- PostgreSQL database integration through SQLAlchemy ORM.
- Dependency injection for database sessions and authenticated users.
- CRUD endpoints for clinics, clinic services, appointments, reviews, and users.
- Clinic search by keyword, city, district, service name, and open-now status.
- Async appointment confirmation simulation using `async`/`await`.
- Swagger UI at `/docs` and ReDoc at `/redoc`.
- MIT open-source license.
## Tech Stack
- Python 3.11+
- FastAPI
- SQLAlchemy ORM
- PostgreSQL
- Psycopg
- JWT via `python-jose`
- Password hashing via `passlib[bcrypt]`
## Project Structure
```text
app/
api/ Versioned route modules and dependencies
core/ Settings and security utilities
db/ SQLAlchemy engine, session, and table initialization
models/ ORM models
schemas/ Pydantic request/response schemas
services/ Async service-layer tasks
docs/ Report, demo guide, and screenshots
scripts/ Database creation and seed scripts
tests/ API tests
```
## Setup
1. Create and activate a virtual environment.
```bash
python -m venv .venv
.venv\Scrip …