A comprehensive, modern hospital management system built with React and Node.js that streamlines healthcare operations, patient care, and administrative tasks.
Clinicare is a full-stack hospital management system designed to modernize healthcare facilities by providing digital solutions for patient management, appointment scheduling, billing, and administrative operations. The system serves multiple user types including patients, doctors, nurses, and administrators.
- Patient Management: Complete patient registration, medical records, and health information tracking
- Appointment Scheduling: Online booking system with real-time availability and automated confirmations
- Doctor & Department Management: Staff scheduling, departmental organization, and resource allocation
- Room Management: Hospital room allocation and availability tracking
- Inpatient Management: Comprehensive inpatient care tracking and management
- Payment Processing: Integrated billing system with Paystack payment gateway
- Analytics Dashboard: Real-time insights into operations, revenue, and performance metrics
- Patients: Book appointments, view medical records, make payments
- Doctors: Manage patients, view appointments, update medical records
- Nurses: Patient care management, vital signs tracking, schedule management
- Administrators: Full system access, user management, analytics, system configuration
- JWT-based authentication with refresh tokens
- Role-based access control (RBAC)
- Email verification system
- Password reset functionality
- Secure file uploads with Cloudinary integration
- React 18 - Modern UI library with hooks and functional components
- Vite - Fast build tool and development server
- React Router 7 - Client-side routing with lazy loading
- Tailwind CSS 4 - Utility-first CSS framework
- DaisyUI - Component library for Tailwind CSS
- React Hook Form - Form handling with validation
- Zod - Schema validation
- TanStack Query - Data fetching and caching
- Axios - HTTP client for API requests
- React Paystack - Payment integration
- Sonner - Toast notifications
- Day.js - Date manipulation
- Node.js - JavaScript runtime
- Express.js 5 - Web application framework
- MongoDB - NoSQL database with Mongoose ODM
- JWT - Authentication and authorization
- Bcrypt - Password hashing
- Cloudinary - Image and file storage
- Nodemailer - Email services
- Express Rate Limit - API rate limiting
- Morgan - HTTP request logger
- Node Cache - In-memory caching
- Zod - Request validation
- ESLint - Code linting and formatting
- Vercel - Deployment platform
- Git - Version control
clinicare/
βββ client/ # React frontend application
β βββ public/ # Static assets
β βββ src/
β β βββ api/ # API service functions
β β βββ components/ # Reusable UI components
β β βββ features/ # Feature-specific components
β β βββ hooks/ # Custom React hooks
β β βββ layouts/ # Layout components
β β βββ pages/ # Page components
β β βββ routes/ # Routing configuration
β β βββ store/ # State management
β β βββ utils/ # Utility functions
β βββ package.json
β βββ vite.config.js
βββ server/ # Node.js backend application
β βββ src/
β β βββ controllers/ # Request handlers
β β βββ middlewares/ # Custom middleware
β β βββ models/ # Database models
β β βββ routes/ # API routes
β β βββ services/ # Business logic
β β βββ utils/ # Utility functions
β βββ index.js # Server entry point
β βββ package.json
βββ ReadMe.md
- Node.js (v18 or higher)
- MongoDB (local or cloud instance)
- Git
Create .env files in both client/ and server/ directories:
# Database
MONGODB_URI=mongodb://localhost:27017/clinicare
MONGODB_DB_NAME=clinicare
# JWT
JWT_SECRET=your_jwt_secret_key
JWT_EXPIRES_IN=7d
JWT_REFRESH_SECRET=your_refresh_secret_key
JWT_REFRESH_EXPIRES_IN=30d
# Email Configuration
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password
# Cloudinary
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
# Paystack
PAYSTACK_SECRET_KEY=your_paystack_secret_key
PAYSTACK_PUBLIC_KEY=your_paystack_public_key
# Server
PORT=5400
NODE_ENV=developmentVITE_API_URL=http://localhost:5400/api/v1
VITE_PAYSTACK_PUBLIC_KEY=your_paystack_public_key-
Clone the repository
git clone <repository-url> cd clinicare
-
Install server dependencies
cd server npm install -
Install client dependencies
cd ../client npm install -
Start the development servers
Terminal 1 - Start the backend server:
cd server npm run devTerminal 2 - Start the frontend development server:
cd client npm run dev -
Access the application
- Frontend: http://localhost:4800
- Backend API: http://localhost:5400
- Register as a new user at
/account/signup - Verify your email using the verification code sent to your email
- Complete patient onboarding with your health information
- Access the dashboard to manage appointments, view records, and more
- Sign up and verify account
- Complete health profile setup
- Book appointments with available doctors
- View appointment history and medical records
- Make payments for services
- Access admin dashboard
- Manage patient records
- Schedule and update appointments
- Track inpatient care
- Generate reports and analytics
- Manage user accounts and roles
- Configure hospital settings
- Monitor system analytics
- Manage rooms and resources
- Oversee payment processing
POST /api/v1/auth/register- User registrationPOST /api/v1/auth/login- User loginPOST /api/v1/auth/refresh- Refresh access tokenPOST /api/v1/auth/logout- User logoutPOST /api/v1/auth/verify-account- Email verificationPOST /api/v1/auth/forgot-password- Password reset requestPOST /api/v1/auth/reset-password- Password reset
- Patients:
/api/v1/patients/* - Appointments:
/api/v1/appointments/* - Doctors:
/api/v1/doctors/* - Rooms:
/api/v1/rooms/* - Payments:
/api/v1/payments/* - Inpatients:
/api/v1/inpatients/* - Dashboard:
/api/v1/dashboard/*
- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push to main branch
- Deploy to your preferred hosting service (Railway, Render, etc.)
- Set environment variables
- Ensure MongoDB connection is configured
- Update CORS settings for production domain
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@clinicare.com or create an issue in the repository.
- React team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- MongoDB for the flexible database solution
- All contributors and users of Clinicare
Clinicare - Transforming Healthcare Management, One Hospital at a Time. π₯β¨
