{"id":51129638,"url":"https://github.com/poran-dip/doc-connect","last_synced_at":"2026-06-25T11:01:05.651Z","repository":{"id":279905701,"uuid":"940392489","full_name":"poran-dip/doc-connect","owner":"poran-dip","description":"Doc Connect is a simple full stack healthcare app.  For a feature rich healthcare platform built on the foundation of Doc Connect, check out repository \"eazy-doc\".","archived":false,"fork":false,"pushed_at":"2026-05-06T10:44:27.000Z","size":19746,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-06T12:35:18.087Z","etag":null,"topics":["cookies","full-stack","healthcare","jwt","mern-stack","railway"],"latest_commit_sha":null,"homepage":"https://doc-connect.up.railway.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/poran-dip.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-28T05:06:28.000Z","updated_at":"2026-05-06T10:44:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"bfc2134d-48fb-47ed-ba8a-ecdcf1532f0a","html_url":"https://github.com/poran-dip/doc-connect","commit_stats":null,"previous_names":["poran-dip/doc-connect"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/poran-dip/doc-connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poran-dip%2Fdoc-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poran-dip%2Fdoc-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poran-dip%2Fdoc-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poran-dip%2Fdoc-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/poran-dip","download_url":"https://codeload.github.com/poran-dip/doc-connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/poran-dip%2Fdoc-connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34771664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["cookies","full-stack","healthcare","jwt","mern-stack","railway"],"created_at":"2026-06-25T11:01:04.886Z","updated_at":"2026-06-25T11:01:05.651Z","avatar_url":"https://github.com/poran-dip.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Doc Connect\n\n**Doc Connect** was originally made for **Codestellation 2025**, a hackathon organized as part of **Udbhavanam 12.0** under **Pyrokinesis 2025**, the annual tech event held at **Assam Engineering College** for the year 2025. I teamed up with [Parashar Deb](https://github.com/ParasharDeb), [Dikshyan Chakraborty](https://github.com/Dikshyan), and Yashuwanta Bungurung.\n\nThe original hackathon submission (plain HTML, no React, no proper auth) lives in the [`hackathon-legacy`](https://github.com/poran-dip/doc-connect/tree/hackathon-legacy) branch. What you're looking at now is a complete rewrite — same concept, done properly.\n\n## What It Does\n\nDoc Connect is a healthcare appointment management system with three distinct user roles:\n\n- **Patients** — book appointments by department, flag emergencies, track appointment status, edit or cancel upcoming appointments\n- **Doctors** — view assigned appointments, mark them as completed, manage their availability status\n- **Admins** — full CRUD access across all patients, doctors, appointments, and other admins; assign available doctors to upcoming appointments\n\n## Tech Stack\n\nFull MERN stack, properly this time:\n\n- **MongoDB** + **Mongoose** — database with discriminator-based user models\n- **Express** + **Node.js** — REST API with role-based authentication and authorization\n- **React** via **React Router v7** — SSR-enabled frontend with file-based routing\n- **TypeScript** — end to end, both client and server\n- **bcryptjs** — password hashing\n- **jose** + **jsonwebtoken** — JWT-based auth with HTTP-only cookie persistence\n- **Tailwind CSS v4** — styling\n- **Vite** — frontend build tool\n- **Docker** — containerized deployment\n\n## Project Structure\n\n```bash\ndoc-connect/\n├── server/   # Express REST API\n└── web/      # React Router v7 SSR frontend\n```\n\n## Getting Started\n\nMake sure you have Node.js and MongoDB running locally.\n\n```bash\n# Clone the repo\ngit clone https://github.com/poran-dip/doc-connect\ncd doc-connect\n\n# Install dependencies\ncd server \u0026\u0026 npm install\ncd ../web \u0026\u0026 npm install\n\n# Set up environment variables\ncp server/.env.example server/.env\ncp web/.env.example web/.env\n\n# Seed the database\ncd server \u0026\u0026 npm run seed\n\n# Start both services\ncd server \u0026\u0026 npm run dev   # runs on http://localhost:3000\ncd web \u0026\u0026 npm run dev      # runs on http://localhost:5173\n```\n\nOr with Docker:\n\n```bash\ndocker compose up --build\n```\n\nWeb will be available at `http://localhost:4000`, API at `http://localhost:3000`.\n\n## Seed Credentials\n\nAfter running `npm run seed`, you can sign in with:\n\n| Role    | Email                   | Password    |\n| ------- | ----------------------- | ----------- |\n| Patient | john.doe@example.com    | password123 |\n| Doctor  | sarah.smith@example.com | doctor123   |\n| Admin   | admin@example.com       | admin123    |\n\n## Comparison with Eazydoc\n\n[Eazydoc](https://github.com/poran-dip/eazy-doc) was built for the GDG On Campus Solution Challenge 2025 and is the spiritual successor to this project. It has a more impressive UI. That said, Doc Connect v2 holds its own in several ways:\n\n- Proper JWT authentication with HTTP-only cookies — Eazydoc's auth is more ad-hoc\n- MongoDB access controls and role-based authorization baked in at the API level — Eazydoc’s database layer was optimized for rapid hackathon iteration (not as secure)\n- Fully containerized with Docker — Eazydoc has none of that\n- Clean client/server separation with a proper REST API — Eazydoc mixes concerns\n- Every feature that exists actually works — no mock data or unimplemented stubs\n\nThey're different projects solving the same problem at different levels of polish and in different directions. Doc Connect v2 prioritizes correctness and architecture; Eazydoc prioritizes UI and feature breadth. Both are works in progress.\n\nLicensed under Apache 2.0 — build something cool with it.\n\n— Poran Dip\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporan-dip%2Fdoc-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fporan-dip%2Fdoc-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporan-dip%2Fdoc-connect/lists"}