Skip to content

ismaeilalrewany/medi-schedule

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

186 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MediSchedule - Medical Appointment Management System

MediSchedule Homepage

Overview

MediSchedule is a comprehensive medical appointment management system that facilitates seamless interaction between patients, doctors, and administrators. Built with modern web technologies, it provides a robust platform for managing medical appointments with features like user authentication, appointment scheduling, availability management, and role-based access control.

๐Ÿš€ Features

For Patients

  • Patient Registration & Authentication with reCAPTCHA verification
  • Appointment Booking with available time slots
  • Appointment Management (view, filter, and search appointments)
  • Profile Management with medical history tracking
  • Responsive Interface for all device types

For Doctors

  • Doctor Registration & Authentication with specialization details
  • Appointment Management with patient information
  • Availability Scheduling with customizable time slots
  • Profile Management with qualifications and specializations
  • Patient Appointment History access

For Administrators

  • Admin Dashboard with comprehensive overview
  • User Management (patients and doctors)
  • Appointment Oversight for all users
  • System Administration capabilities
  • Advanced Filtering & Search functionality

๐Ÿ› ๏ธ Technology Stack

Backend

  • Runtime: Node.js
  • Framework: Express.js
  • Database: MongoDB with Mongoose ODM
  • Authentication: JWT with HTTP-only cookies
  • Security: bcryptjs for password hashing
  • Validation: Validator.js
  • Environment: dotenv for configuration

Frontend

  • Framework: React.js 19.0.0
  • Routing: React Router DOM
  • Styling: Tailwind CSS with DaisyUI
  • State Management: React Hooks
  • Forms: React Hook Form
  • HTTP Client: Axios
  • Security: Google reCAPTCHA

๐Ÿ“ Project Structure

medi-schedule/
โ”œโ”€โ”€ backend/                    # Server-side application
โ”‚   โ”œโ”€โ”€ app/
โ”‚   โ”‚   โ”œโ”€โ”€ controllers/       # Business logic controllers
โ”‚   โ”‚   โ”œโ”€โ”€ database/          # Database models and connection
โ”‚   โ”‚   โ”œโ”€โ”€ middleware/        # Authentication and other middleware
โ”‚   โ”‚   โ”œโ”€โ”€ routes/           # API route definitions
โ”‚   โ”‚   โ”œโ”€โ”€ services/         # External services (reCAPTCHA)
โ”‚   โ”‚   โ””โ”€โ”€ utils/            # Utility functions
โ”‚   โ””โ”€โ”€ index.js              # Server entry point
โ”œโ”€โ”€ frontend/                  # Client-side application
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/       # Reusable UI components
โ”‚   โ”‚   โ”œโ”€โ”€ pages/           # Page components
โ”‚   โ”‚   โ”œโ”€โ”€ routes/          # Route configuration
โ”‚   โ”‚   โ”œโ”€โ”€ services/        # API service calls
โ”‚   โ”‚   โ””โ”€โ”€ layouts/         # Layout components
โ”‚   โ””โ”€โ”€ index.html           # HTML entry point
โ”œโ”€โ”€ docs/                     # Documentation and assets
โ”‚   โ”œโ”€โ”€ images/              # Application screenshots
โ”‚   โ””โ”€โ”€ *.md                 # Documentation files
โ””โ”€โ”€ localssl/                # SSL certificates for local development

๐Ÿ”ง Installation & Setup

Prerequisites

  • Node.js (v16 or higher)
  • MongoDB (local or cloud instance)
  • Git

Backend Setup

  1. Navigate to backend directory:
    cd backend
  2. Install dependencies:
    npm install
  3. Create .env file (see Environment Variables)
  4. Start development server:
    npm run dev

Frontend Setup

  1. Navigate to frontend directory:
    cd frontend
  2. Install dependencies:
    npm install
  3. Create .env file (see Environment Variables)
  4. Start development server:
    npm run dev

๐Ÿ” Environment Variables

See the environment setup guides:

๐Ÿ“š API Documentation

Comprehensive API documentation is available:

๐Ÿ“– Additional Documentation

๐Ÿ–ฅ๏ธ Application Screenshots

Page Screenshot
Homepage Homepage
Login Login
Dashboard Dashboard
Appointments Appointments
Profile Profile
Register Register

๐Ÿš€ Deployment

Backend Deployment (Vercel)

The backend is configured for Vercel deployment with vercel.json:

{
  "version": 2,
  "builds": [{ "src": "index.js", "use": "@vercel/node" }],
  "routes": [{ "src": "/(.*)", "dest": "/index.js" }]
}

Frontend Deployment (Netlify)

The frontend is configured for Netlify deployment with netlify.toml:

[build]
  command = "npm run build"
  publish = "dist"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

๐Ÿ”’ Security Features

  • Password Hashing: bcryptjs with salt rounds
  • JWT Authentication: Secure token-based authentication
  • HTTP-only Cookies: Prevents XSS attacks
  • CORS Configuration: Controlled cross-origin requests
  • Input Validation: Comprehensive data validation
  • reCAPTCHA Integration: Bot protection for forms

๐Ÿ“ License

This project is licensed under the Apache License 2.0.

๐Ÿ‘จโ€๐Ÿ’ป Developer

Ismaeil Alrewany

๐Ÿ”ฎ Future Enhancements

  • Email/SMS notifications for appointments
  • Real-time updates with WebSocket
  • Payment integration
  • Advanced reporting and analytics
  • Mobile application
  • Multi-language support
  • Telemedicine integration

For detailed documentation, please refer to the docs directory.

About

MediSchedule is an appointment management system with admin dashboard developed as a practical test for a Software Developer position at AMSRC, a subsidiary of ONNMED LLC.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages