{"id":28473804,"url":"https://github.com/arnobt78/HealthCare-Doctor-Appointment--NextJS","last_synced_at":"2025-07-02T02:30:50.635Z","repository":{"id":297714745,"uuid":"867222800","full_name":"arnobt78/HealthCare-Doctor-Appointment--NextJS","owner":"arnobt78","description":"HealthCare Doctor Appointment is a healthcare patient management application using Next.js that allows patients to easily register, book, and manage their appointments with doctors, featuring administrative tools for scheduling, confirming, and canceling appointments, along with SMS notifications, and deployed on Vercel.","archived":false,"fork":false,"pushed_at":"2025-06-16T15:14:42.000Z","size":4457,"stargazers_count":11,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-16T16:29:09.047Z","etag":null,"topics":["admin-dashboard","apprwrite-storage","appwrite","appwrite-database","booking-appointments","doctor-appointment-booking","doctor-patient-interaction","healthcare","healthcare-admin-dashboard","healthcare-application","nextjs-typescript","patient-management","radix-ui","react-tailwindcss","sentry","shadcn-ui","sms-notification","twilio","twilio-sms","zod"],"latest_commit_sha":null,"homepage":"https://healthcare-arnob.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arnobt78.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-03T16:59:21.000Z","updated_at":"2025-06-16T15:23:09.000Z","dependencies_parsed_at":"2025-06-07T02:27:30.222Z","dependency_job_id":"2cd30d17-92d1-44d1-93fa-c84892f586de","html_url":"https://github.com/arnobt78/HealthCare-Doctor-Appointment--NextJS","commit_stats":null,"previous_names":["arnobt78/healthcare--nextjs","arnobt78/healthcare-doctor-appointment--nextjs"],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/arnobt78/HealthCare-Doctor-Appointment--NextJS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobt78%2FHealthCare-Doctor-Appointment--NextJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobt78%2FHealthCare-Doctor-Appointment--NextJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobt78%2FHealthCare-Doctor-Appointment--NextJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobt78%2FHealthCare-Doctor-Appointment--NextJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arnobt78","download_url":"https://codeload.github.com/arnobt78/HealthCare-Doctor-Appointment--NextJS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobt78%2FHealthCare-Doctor-Appointment--NextJS/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263063840,"owners_count":23407997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin-dashboard","apprwrite-storage","appwrite","appwrite-database","booking-appointments","doctor-appointment-booking","doctor-patient-interaction","healthcare","healthcare-admin-dashboard","healthcare-application","nextjs-typescript","patient-management","radix-ui","react-tailwindcss","sentry","shadcn-ui","sms-notification","twilio","twilio-sms","zod"],"created_at":"2025-06-07T12:30:43.012Z","updated_at":"2025-07-02T02:30:50.622Z","avatar_url":"https://github.com/arnobt78.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HealthCare-Doctor-Appointment--NextJS\n\n![Screenshot 2024-10-03 at 17 46 26](https://github.com/user-attachments/assets/cbf4b819-b692-4a40-b422-12638e169e9d) ![Screenshot 2024-10-03 at 18 46 10](https://github.com/user-attachments/assets/751efebd-2026-43bc-a18a-5aaab140228e) ![Screenshot 2024-10-03 at 18 46 23](https://github.com/user-attachments/assets/5498ff6f-91cd-403d-9806-3c4734106bed) ![Screenshot 2024-10-03 at 18 46 38](https://github.com/user-attachments/assets/b86553f6-a70b-446b-a40f-c1c17607d9de) ![Screenshot 2024-10-03 at 18 48 59](https://github.com/user-attachments/assets/46be502e-8f95-40eb-9009-83f3c1a09bcb) ![Screenshot 2024-10-03 at 18 49 57](https://github.com/user-attachments/assets/f07f1475-1038-485d-9e9d-01c5f17451ad) ![Screenshot 2024-10-03 at 18 56 32](https://github.com/user-attachments/assets/47b5d698-56b3-4f73-b8b5-d0c1636f1432) ![Screenshot 2024-10-04 at 03 55 09](https://github.com/user-attachments/assets/205cf346-88cd-42e2-9a4c-476cc09a3b71) ![Screenshot 2024-10-03 at 20 33 18](https://github.com/user-attachments/assets/45dcb2ed-30f0-4871-b6cc-647799541fe9) ![Screenshot 2024-10-03 at 20 33 49](https://github.com/user-attachments/assets/67e31616-959e-4cf3-9f8c-63717ef14b72)\n\nHealthCare is a full-stack healthcare patient management application designed for clinics and hospitals. Built using Next.js and TypeScript, it streamlines patient registration, appointment scheduling, admin management, notifications, and file uploads—all with a modern, responsive UI.\n\n**Live Demo:** https://healthcare-arnob.vercel.app/\n\n---\n\n## Table of Contents\n\n- [Project Overview](#project-overview)\n- [Key Features](#key-features)\n- [Technology Stack](#technology-stack)\n- [Project Structure](#project-structure)\n- [Getting Started](#getting-started)\n  - [Installation](#installation)\n  - [Running the App](#running-the-app)\n  - [Environment Variables](#environment-variables)\n  - [Appwrite Setup](#appwrite-setup)\n  - [Twilio Setup](#twilio-setup)\n  - [Sentry Setup](#sentry-setup)\n- [Functional Walkthrough](#functional-walkthrough)\n- [Code Examples](#code-examples)\n- [Troubleshooting \u0026 Resources](#troubleshooting--resources)\n- [Keywords](#keywords)\n\n---\n\n## Project Overview\n\n**HealthCare--NextJS** enables clinics to manage patient data, appointments, and notifications efficiently. It provides:\n\n- User registration and authentication\n- Patient profiles and medical details\n- Doctor and appointment management\n- Admin dashboard for appointment control\n- Automated SMS notifications via Twilio\n- File storage using Appwrite\n- Performance/error monitoring with Sentry\n- Responsive design for all devices\n\n---\n\n## Key Features\n\n- **Patient Registration:** Users can sign up and create detailed profiles.\n- **Appointment Booking:** Patients easily schedule appointments with doctors.\n- **Admin Dashboard:** Admins manage, confirm, schedule, or cancel appointments.\n- **SMS Notifications:** Patients receive SMS confirmations for appointments.\n- **File Upload:** Secure upload and storage of files (e.g., patient docs) via Appwrite.\n- **Performance Monitoring:** Integrated Sentry for tracking errors and performance.\n- **Responsive UI:** Fully responsive for desktop, tablet, and mobile.\n- **Form Validation:** Robust validation with Zod.\n- **Modern UI:** Built with Shadcn-UI and TailwindCSS.\n\n---\n\n## Technology Stack\n\n- **Frontend:** Next.js, React, TypeScript, TailwindCSS, Shadcn-UI\n- **Backend/Services:** Appwrite (Database + Storage), Twilio (SMS), Sentry (Monitoring)\n- **Validation:** Zod\n- **Utilities:** clsx, tailwind-merge\n\n---\n\n## Project Structure\n\n```\n/app                # Next.js app directory (pages, components, layouts)\n  /globals.css      # Global styles\n/components         # Reusable UI components\n/constants          # Constant values, enums, lists (e.g., doctors, status icons)\n/lib                # Utility functions (e.g., date formatting, encryption, validation)\n/types              # TypeScript type and interface definitions\n/public/assets      # Static images, icons, backgrounds\n```\n\n**Example File Structure:**\n- `tailwind.config.ts` - TailwindCSS configuration\n- `types/index.d.ts` - TypeScript types for forms and models\n- `lib/utils.ts` - Utility functions (formatting, encryption, etc.)\n- `lib/validation.ts` - Zod validation schemas\n- `constants/index.ts` - App constants (doctor list, identification types, etc.)\n\n---\n\n## Getting Started\n\n### Installation\n\n1. **Clone the repository:**\n   ```bash\n   git clone https://github.com/arnobt78/HealthCare--NextJS.git\n   cd HealthCare--NextJS\n   ```\n\n2. **Install dependencies:**\n   ```bash\n   npm install\n   # or\n   yarn install\n   ```\n\n### Running the App\n\nStart the development server:\n```bash\nnpm run dev\n# or\nyarn dev\n# or\npnpm dev\n# or\nbun dev\n```\nVisit http://localhost:3000 to view the app.\n\n### Environment Variables\n\nCreate a `.env.local` file in your project root and add:\n```env\n# APPWRITE\nNEXT_PUBLIC_ENDPOINT=https://cloud.appwrite.io/v1\nNEXT_PUBLIC_PROJECT_ID=\nNEXT_PUBLIC_API_KEY=\nNEXT_PUBLIC_DATABASE_ID=\nNEXT_PUBLIC_PATIENT_COLLECTION_ID=\nNEXT_PUBLIC_APPOINTMENT_COLLECTION_ID=\nNEXT_PUBLIC_BUCKET_ID=\n\nNEXT_PUBLIC_ADMIN_PASSKEY=123123\n```\n\u003e Replace the placeholder values with your actual Appwrite credentials.\n\n### Appwrite Setup\n\n1. **Sign up at [Appwrite](https://appwrite.io/).**\n2. **Create a project** and note the Project ID and API Key.\n3. **Create a database** (e.g., `patient-db`) with three collections:\n   - `patient`\n   - `doctor`\n   - `appointment`\n4. **Attributes for `patient`:**\n   - `email` (Required)\n   - `phone` (Required)\n   - `irerId` (Required)\n   - `name` (Required)\n   - `privacyConsent` (Boolean, Required)\n   - `gender` (Enum)\n   - `birthDate`, `address`, `occupation`, `emergencyContactName`, `emergencyContactNumber`, `primaryPhysician`, `insuranceProvider`, `insurancePolicyNumber`, `allergies`, `currentMedication`, `familyMedicalHistory`, `pastMedicalHistory`, `identificationType`, `identificationNumber`, `identificationDocument`\n5. **Attributes for `appointment`:**\n   - Relationship: Many-to-One with `patient`\n   - `schedule` (Datetime, Required)\n   - `reason` (String, Required)\n   - `note`, `primaryPhysician` (String, Required), `status`, `cancellationReason`\n\n\u003e See [Appwrite Docs](https://appwrite.io/docs) for full details.\n\n### Twilio Setup\n\n1. **Sign up at [Twilio](https://www.twilio.com/).**\n2. Get your **Account SID, Auth token, and Sender number**.\n3. Add these to your Appwrite project's Messaging \u003e Twilio integration.\n4. For Appwrite + Twilio docs, see: [Appwrite Messaging \u0026 Twilio](https://appwrite.io/docs/products/messaging/twilio)\n\n### Sentry Setup\n\nFor error and performance monitoring:\n- [Sentry Official Docs](https://sentry.io/welcome/)\n\n---\n\n## Functional Walkthrough\n\n1. **Register as a Patient:**  \n   New users can register, fill out medical and contact details, and consent to privacy policies.\n\n2. **Book Appointments:**  \n   Patients can view available doctors, select time slots, and provide the reason for their visit. Multiple appointments can be managed.\n\n3. **Admin Panel:**  \n   Admins can:\n   - View all appointments\n   - Confirm or schedule appointments\n   - Cancel appointments (with SMS notifications)\n   - Manage patient records and uploaded documents\n\n4. **Notifications:**  \n   - Patients receive SMS notifications on successful appointment confirmation.\n\n5. **Performance and Error Tracking:**  \n   - Sentry integration monitors errors and performance bottlenecks.\n\n6. **File Upload:**  \n   - Users can upload documents (e.g., insurance, ID) securely.\n\n---\n\n## Code Examples\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003etailwind.config.ts\u003c/code\u003e\u003c/summary\u003e\n\n```typescript\nimport type { Config } from \"tailwindcss\";\nconst { fontFamily } = require(\"tailwindcss/defaultTheme\");\n\nconst config = {\n  darkMode: [\"class\"],\n  content: [\n    \"./pages/**/*.{ts,tsx}\",\n    \"./components/**/*.{ts,tsx}\",\n    \"./app/**/*.{ts,tsx}\",\n    \"./src/**/*.{ts,tsx}\",\n  ],\n  theme: {\n    container: {\n      center: true,\n      padding: \"2rem\",\n      screens: { \"2xl\": \"1400px\" },\n    },\n    extend: {\n      colors: {\n        green: { 500: \"#24AE7C\", 600: \"#0D2A1F\" },\n        blue: { 500: \"#79B5EC\", 600: \"#152432\" },\n        red: { 500: \"#F37877\", 600: \"#3E1716\", 700: \"#F24E43\" },\n        light: { 200: \"#E8E9E9\" },\n        dark: {\n          200: \"#0D0F10\", 300: \"#131619\", 400: \"#1A1D21\",\n          500: \"#363A3D\", 600: \"#76828D\", 700: \"#ABB8C4\"\n        }\n      },\n      fontFamily: { sans: [\"var(--font-sans)\", ...fontFamily.sans] },\n      backgroundImage: {\n        appointments: \"url('/assets/images/appointments-bg.png')\",\n        pending: \"url('/assets/images/pending-bg.png')\",\n        cancelled: \"url('/assets/images/cancelled-bg.png')\"\n      },\n      // ...more config\n    }\n  },\n  plugins: [require(\"tailwindcss-animate\")],\n} satisfies Config;\n\nexport default config;\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003elib/utils.ts\u003c/code\u003e\u003c/summary\u003e\n\n```typescript\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n\nexport const formatDateTime = (dateString: Date | string) =\u003e {\n  // returns formatted date/time objects\n};\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ccode\u003etypes/index.d.ts\u003c/code\u003e\u003c/summary\u003e\n\n```typescript\ndeclare type Gender = \"Male\" | \"Female\" | \"Other\";\ndeclare type Status = \"pending\" | \"scheduled\" | \"cancelled\";\n\ndeclare interface RegisterUserParams {\n  name: string;\n  email: string;\n  phone: string;\n  // ...additional fields\n}\n```\n\u003c/details\u003e\n\n---\n\n## Troubleshooting \u0026 Resources\n\n- **Node.js Installation:** [Download Node.js](https://nodejs.org/en/)\n- **Appwrite Docs:** [Appwrite Documentation](https://appwrite.io/docs)\n- **Twilio Docs:** [Twilio Messaging](https://appwrite.io/docs/products/messaging/twilio)\n- **Sentry Docs:** [Sentry Monitoring](https://sentry.io/welcome/)\n- **YouTube Tutorial:** [HealthCare App with Next.js \u0026 Appwrite](https://www.youtube.com/watch?v=lEflo_sc82g)\n- **CORS Issues with Appwrite:** [Solving CORS Errors](https://www.youtube.com/watch?v=oEpRh9H5l5g)\n\n---\n\n## Keywords\n\nNext.js, HealthCare, Patient Management, Appointment, Twilio, Appwrite, Sentry, TypeScript, TailwindCSS, Shadcn-UI, Zod, Admin Dashboard, File Upload, Responsive Design, SMS Notification, Medical App, Full Stack, Clinic, Hospital, Database, Form Validation, React\n\n---\n\n\u003e **Note:**  \nThis README preserves all original screenshot images and provides an updated, detailed project overview for easier understanding and onboarding. For further customization or advanced deployment, please consult the official documentation of each integrated technology.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnobt78%2FHealthCare-Doctor-Appointment--NextJS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnobt78%2FHealthCare-Doctor-Appointment--NextJS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnobt78%2FHealthCare-Doctor-Appointment--NextJS/lists"}