尚未检测到更新。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 المتاحة.