A modern, open-source telehealth and healthcare appointment platform for connecting patients with healthcare providers.
CareWeave is a comprehensive healthcare platform that enables seamless appointment booking, telehealth consultations, and in-person medical visits. Originally developed as a Kenyan healthcare solution, it's now available as an open-source project for the global community.
The platform bridges the gap between patients seeking medical care and healthcare providers, offering a user-friendly interface for managing appointments, doctor profiles, consultations, and healthcare services.
- 🔍 Doctor Discovery - Search and filter doctors by specialty, location, and availability
- 📅 Smart Appointment Booking - Real-time availability and flexible scheduling
- 💻 Telehealth Visits - Video consultations powered by Stream.io
- 🏥 In-Person Visits - Book physical appointments with nearby healthcare providers
- 👤 User Profiles - Comprehensive patient profile management
- 💊 Prescriptions - Access and manage digital prescriptions
- 📊 Medical History - Organized health records and appointment history
- 🔐 Secure Authentication - NextAuth integration with password encryption
- 🎯 Doctor Onboarding - Multi-step verification and profile creation
- 📋 Profile Management - Detailed professional credentials, specializations, and experience
- 📅 Availability Management - Set weekly availability slots and manage schedules
- 💰 Pricing Control - Set hourly consultation rates
- 👥 Patient Management - View and manage patient consultations
- 📈 Analytics Dashboard - Track appointments, revenue, and performance metrics
- 💬 Messaging System - Direct communication with patients
- 🏥 Practice Information - Add hospital/clinic details and services offered
- 🌍 Multi-language Support - Internationalization ready
- 🎨 Dark Mode - Theme switching capabilities
- 📱 PWA Ready - Progressive Web App support for offline access
- 🔐 Role-Based Access - Patient, Doctor, and Admin roles
- 💳 Payment Integration - Paystack integration for payments
- 📧 Email Notifications - Automated notifications via Resend
- 📄 Document Management - Upload and store medical documents
- 🗂️ E-Triage System - Initial patient assessment workflow
- Framework: Next.js 14 (React 18)
- Language: TypeScript
- UI Components:
- shadcn/ui (Radix UI based)
- Headless UI
- Flowbite
- Styling: Tailwind CSS with custom animations
- Form Management: React Hook Form + Zod validation
- State Management: React Context API
- Real-time Communication: Stream.io Video SDK
- Rich Text: React Quill
- Icons: Heroicons, Lucide, Tabler Icons
- Utilities: SWR, date-fns, clsx
- Framework: Next.js API Routes
- Database: SQLite + Prisma ORM
- Authentication: NextAuth.js with password encryption (bcrypt)
- Email: Nodemailer + Resend
- File Upload: UploadThing
- PDF Generation: React PDF + jsPDF AutoTable
- Video Calls: Stream.io Video React SDK
- Payments: Paystack
- PWA: @ducanh2912/next-pwa
- Node.js 18+ and npm/yarn
- PostgreSQL or SQLite database
- Git
-
Clone the repository
git clone https://github.com/Qodestackr/CareWeave.git cd CareWeave -
Install dependencies
npm install # or yarn install -
Set up environment variables
cp .env.example .env.local
Update
.env.localwith your configuration:# Database DATABASE_URL="file:./dev.db" # NextAuth NEXTAUTH_URL="http://localhost:3000" NEXTAUTH_SECRET="your-secret-key-here" # Stream.io NEXT_PUBLIC_STREAM_KEY=your_stream_key NEXT_PUBLIC_STREAM_API_URL=your_stream_api_url # Paystack NEXT_PUBLIC_PAYSTACK_PUBLIC_KEY=your_paystack_key PAYSTACK_SECRET_KEY=your_paystack_secret # UploadThing UPLOADTHING_SECRET=your_uploadthing_secret UPLOADTHING_APP_ID=your_uploadthing_app_id # Email (Resend) RESEND_API_KEY=your_resend_api_key
-
Set up the database
npx prisma generate npx prisma migrate dev
-
Start the development server
npm run dev
Open http://localhost:3000 in your browser.
├── app/ # Next.js app directory
├── components/ # Reusable React components
├── context/ # React Context API state management
├── lib/ # Utility functions and helpers
├── prisma/ # Database schema and migrations
├── public/ # Static assets
├── styles/ # Global styles
├── types/ # TypeScript type definitions
├── utils/ # Helper utilities
├── config/ # Configuration files
├── constants/ # Application constants
└── imported/ # Legacy/imported components
- Registration with basic info (name, email, password)
- Bio data collection (name, DOB, gender)
- Professional profile setup (license, experience)
- Contact information
- Education and specialization
- Practice details (hospital, services, rates)
- Additional documents and accomplishments
- Profile verification and approval
- Browse and search doctors
- View doctor profiles and availability
- Select date and time slot
- Complete appointment details
- Process payment (if applicable)
- Receive confirmation and join telehealth link
- Complete consultation
- Access prescriptions and medical notes
- Patient Role: Can view doctors, book appointments, access personal health info
- Doctor Role: Can manage profile, availability, appointments, and patient records
- Admin Role: Full platform access for user and content management
All passwords are securely hashed using bcrypt before storage.
The application uses Prisma ORM with the following primary entities:
- User: Patient and provider accounts
- DoctorProfile: Extended doctor information
- Appointment: Booking records
- Service: Medical services offered
- Prescription: Digital prescriptions
- Insurance: Insurance provider details
We welcome contributions from the community! To contribute:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
- Follow TypeScript best practices
- Use ESLint and Prettier for code formatting
- Write clear, descriptive commit messages
- Test your changes before submitting a PR
- Update documentation as needed
Found a bug or have a feature idea? Open an issue with:
- Clear description of the problem/suggestion
- Steps to reproduce (for bugs)
- Expected vs. actual behavior
- Screenshots (if applicable)
This project is licensed under the MIT License - see the LICENSE file for details.
- Live Demo: https://CareWeave.vercel.app
- Repository: https://github.com/Qodestackr/CareWeave
- Issues: https://github.com/Qodestackr/CareWeave/issues
For support, open an issue on GitHub or contact the maintainers.
Built with ❤️ for open-source healthcare technology
Made by @Qodestackr