منصة حجز وإدارة المواعيد الطبية.
Translation pending
HealthTypeScript · JavaScriptGitHub @takibou43OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
MedBook — Algerian medical appointment booking platform (Arabic RTL)
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
منصة رقمية لحجز وإدارة المواعيد الطبية، موجهة للسوق الجزائري، بواجهة عربية RTL كاملة. Frontend: React + TypeScript + Vite + Tailwind CSS + TanStack Query + React Hook Form Backend: Node.js + TypeScript + Express + Prisma ORM Database: PostgreSQL Auth: JWT (Access + Refresh) + Role-Based Access Control (PATIENT / DOCTOR / ADMIN)Read the full README ↗
منصة رقمية لحجز وإدارة المواعيد الطبية، موجهة للسوق الجزائري، بواجهة عربية RTL كاملة.
Frontend: React + TypeScript + Vite + Tailwind CSS + TanStack Query + React Hook Form Backend: Node.js + TypeScript + Express + Prisma ORM Database: PostgreSQL Auth: JWT (Access + Refresh) + Role-Based Access Control (PATIENT / DOCTOR / ADMIN)
فحوص المشروع موجودة في .github/workflows/ci.yml: بناء الأجزاء الثلاثة واختبارات الواجهتين والخادم، بما فيها اختبارات PostgreSQL في بيئة CI معزولة. نجاح الفحوص المحلية لا يؤكد حالة النسخة المنشورة؛ يجب التحقق من الحجز والصلاحيات على بيئة التشغيل قبل استقبال أطباء حقيقيين.
backend/package.json)cd medbook
cp .env.example .env
# عدّل POSTGRES_PASSWORD و JWT_SECRET و JWT_REFRESH_SECRET داخل .env
# بثلاث قيم عشوائية طويلة ومختلفة (مثل ناتج openssl rand -hex 32).
docker compose up --build
بعد اكتمال التشغيل:
الحاوية الخلفية تزامن المخطط دون قبول فقد البيانات، وتطبّق حراسات SQL ثم تبدأ الخادم بمستخدم محدود. لا تُنشأ حسابات أو بيانات مرضى تجريبية تلقائيًا. الواجهة تُبنى ثم تُخدّم عبر Nginx بمستخدم محدود، وليس خادم Vite التطويري. ملفات البيئة والمفاتيح مستبعدة من صور Docker، والكود لا يُستبدل بربط مجلدات المضيف.
إذا كان لديك مجلد بيانات PostgreSQL سابق، فاستعمل كلمة مرور الدور الحالية في POSTGRES_PASSWORD؛ تغيير المتغير وحده لا يغيّر كلمة المرور داخل قاعدة قائمة. لا تحذف مجلد البيانات لتغيير كلمة المرور.
VITE_API_URL عنوان عام يُدمج أثناء بناء الواجهة، وليس مكانًا للأسرار. عند الوصول من جهاز آخر اضبطه على عنوان API الذي يصل إليه المتصفح، ثم أعد بناء الواجهة. لتطوير الكود مع التحديث الفوري استخدم طريقة التشغيل المحلي أدناه. هذه الملفات لا تغيّر إعداد النشر الأصلي على Render أو Vercel.
ثبّت PostgreSQL محليًا وأنشئ قاعدة بيانات:
CREATE DATABASE medbook;
CREATE USER medbook WITH PASSWORD 'medbook';
GRANT ALL PRIVILEGES ON DATABASE medbook TO medbook;
cd backend
cp ../.env.example ../.env # إن لم يكن موجودًا مسبقًا
npm install
npm run prisma:generate
npm run prisma:migrate # ينشئ الجداول (سيطلب اسم migration، اكتب مثلاً init)
npm run db:seed # يعبّئ بيانات تجريبية جزائرية واقعية
npm run dev # يشغّل الخادم على http://localhost:4000
cd frontend
npm install
npm run dev # يشغّل الواجهة على http://localhost:5173
db:seed)| الدور | البريد الإلكتروني | كلمة المرور |
|---|---|---|
| إدارة | [email protected] | Admin@123 |
| طبيب | [email protected] … [email protected] | Doctor@123 |
| مريض | [email protected] … [email protected] | Patient@123 |
medbook/
├── frontend/ # واجهة المرضى: React + Vite + Tailwind (RTL)
│ └── src/
│ ├── components/ui/ # العناصر المشتركة (Button, Input, States...)
│ ├── components/layout/ # Header, Footer, Layout
│ ├── pages/ # الحجز، حالة الموعد، العيادات، account/
│ ├── hooks/ # React Query hooks
│ ├── context/ # AuthContext
│ └── lib/ # axios client, query client
├── frontend-doctor/ # واجهة الطبيب والمساعد والعيادة والإدارة
├── backend/ # Express + TypeScript
│ └── src/
│ ├── modules/ # auth, doctors, appointments, admin, reviews...
│ ├── middleware/ # auth, validate, errorHandler, rateLimiter
│ ├── lib/ # prisma client, slots.ts (منطق التوفر)
│ └── config/
├── prisma/
│ ├── schema.prisma # كل الجداول (18 نموذج)
│ └── seed.ts # بيانات جزائرية واقعية
├── docs/
│ ├── API.md
│ └── ARCHITECTURE.md
├── docker-compose.yml
├── .env.example
└── TODO.md # كل ما لم يُنفَّذ بعد أو يحتاج تحسينًا — بشفافية كاملة
cd backend
npm test
الاختبارات المضمّنة (لا تحتاج قاعدة بيانات — منطق نقي 100%):
tests/slots.test.ts — منع الحجز المزدوج (Double Booking)، رفض الحجز خارج أوقات العمل، رفض الحجز في يوم عطلة.tests/transitions.test.ts — قواعد انتقال حالة الموعد حسب الدور (مريض/طبيب/إدارة).tests/password.test.ts — تشفير كلمات المرور.tests/jwt.test.ts — توليد والتحقق من التوكنات.tests/integration/booking.integration.test.ts — اختبار تكاملي كامل، يتطلب TEST_DATABASE_URL (يُتخطّى تلقائيًا بدونه). راجع TODO.md..env (راجع .env.example).npm run build داخل frontend/ وينشر على Vercel (اضبط VITE_API_URL في إعدادات البيئة).npm run build وينشر على Railway / Render / VPS (اضبط كل متغيرات .env.example).راجع docs/API.md لكل مسارات الـ API المتاحة.