A modern full-stack medical portal for small clinics & NGOs to manage community health checks, telemedicine sessions, and basic health utilities — powered by Spring Boot (Backend) and a clean Tailwind + DaisyUI (Frontend).
To better visualize how the backend of the Community Health Check & Telemedicine Portal works, here are a set of conceptual animations that illustrate the architecture, request flow, API routing, authentication, and data lifecycle of the system.
These animations help explain the internal process without requiring a live demo.
A high-level visual of how the backend, database, security layer, and frontend communicate.
This animation demonstrates how login, token generation, verification, and protected routes work.
Shows how an incoming request moves through Controller → Service → Repository → Database → Response.
Illustrates the process of creating an appointment using REST endpoints.
Explains how global exception handlers catch errors and return JSON ApiResponses.
An animation showing how create/read/update/delete operations are handled using Spring Data JPA.
Conceptual flow of how BMI and glucose calculations pass through your backend layers.
- Patients & doctors can book/manage appointments.
- Clean RESTful API endpoints.
- Calendar & time-slot selection (future enhancement-ready).
- Jitsi Meet API integrated.
- One-click online consultation.
- BMI Calculator
- Glucose Logging
- Extendable design for future vitals (BP, SPO₂, etc.)
- JWT Authentication
- Role-based Access Control → Admin, Doctor, Patient
- Secure API layer with CORS setup
- DTO-driven communication
- Layered structure → Controller → Service → Repository
- Global Exception Handlers
- Reusable ApiResponse model
doctor-portal/
│
├── src/
│ ├── main/
│ │ ├── java/com/pranta/doctor_portal/
│ │ │ ├── appointment/ -> Appointment model, DTOs, controller, service, repo
│ │ │ ├── user/ -> User roles, security config, auth, services
│ │ │ ├── health/ -> BMI + Glucose controllers + DTOs
│ │ │ ├── contact/ -> Contact form handling
│ │ │ ├── common/ -> ApiResponse, global exceptions
│ │ │ └── DoctorPortalApplication.java
│ │ │
│ │ └── resources/
│ │ ├── application.properties -> DB config & Spring Boot settings
│ │ └── static/ -> Frontend static assets
│ │
│ └── test/ -> Unit tests
│
└── pom.xml -> Maven dependencies
| Dependency | Version |
|---|---|
| ☕ Java | 17+ |
| 📦 Maven | Latest |
| 🗄️ MySQL | 8.x (or any datasource you configure) |
| 🖥️ Optional | XAMPP for local DB |
git clone https://github.com/yourusername/doctor-portal.git
cd doctor-portal2️⃣ Configure MySQL in application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/doctor_portal_db
spring.datasource.username=root
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
server.port=80813️⃣ Build & Run
mvn clean package
mvn spring-boot:run
➡ Backend will run at:
http://localhost:8081🔗 API Endpoints (Examples)
➤ Create Appointment
POST /api/appointments
Body
{
"patientName": "Pranta",
"patientEmail": "p@gmail.com",
"patientPhone": "0177777777",
"doctorName": "Dr. Rahman",
"appointmentDate": "2025-11-19",
"appointmentTime": "14:30:00"
}
➤ List All Appointments
GET /api/appointments
➤ Get Appointment by ID
GET /api/appointments/{id}🤝 Contributing
Fork the repository
Create a new branch
git checkout -b feature/your-featureCommit & push
Open a Pull Request with clear description
⭐ If this project helps you, don't forget to star the repo!





