尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證MedBook — Algerian medical appointment booking platform (Arabic RTL)
翻譯準備中
取自儲存庫 README
正在載入完整 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)檢視完整 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 المتاحة.