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