You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
پلتفرم چندکلینیکی BeautyClinic یک SaaS برای مدیریت کلینیکهای زیبایی است که احراز هویت مبتنی بر OTP (کاوهنگار)، طرح رایگان/پولی، پرداخت BitPay و داشبورد وب (Next.js) را در قالب یک مونو ریپو ارائه میکند. این سند راهاندازی سریع، متغیرهای محیطی و جریانهای کلیدی MVP را پوشش میدهد.
پشته و معماری
Backend
Python 3.12، Django 5، Django REST Framework و SimpleJWT برای API و صدور توکن.
PostgreSQL برای داده اصلی و Redis برای کش/Rate Limit OTP.
Celery اختیاری برای صفبندی ارسال OTP و وبهوکها.
Kavenegar برای ارسال کد یکبارمصرف و BitPay برای پرداخت اشتراک.
Frontend
Next.js (App Router) با TypeScript، TailwindCSS و React Query برای مدیریت داده.
Zod و React Hook Form برای اعتبارسنجی فرمهای احراز هویت و عملیات کلینیک.
ذخیره توکن دسترسی در HttpOnly cookie یا حافظه به همراه Refresh cookie.
زیرساخت و سرویسها
Docker Compose برای اجرای PostgreSQL، Redis، Backend و Frontend.
پیکربندی CORS محدود به مبدأ فرانتاند و ثبت لاگ برای OTP و وبهوک پرداخت.
احراز هویت OTP (کاوهنگار): ارسال کد ۶ رقمی با تمپلیتهای ورود و بازیابی، نگهداری هش OTP و محدودیت نرخ ارسال (۳ بار در ۱۰ دقیقه). پس از تایید، کاربر و کلینیک اولیه ایجاد میشود.
مدیریت کلینیک و نقشها: کاربران با نقش OWNER و STAFF (و امکان DOCTOR) در یک پایگاه داده مشترک نگهداری میشوند و تمامی کوئریها بر اساس clinic_id محدود میشوند.
رزرو و پرونده: بیمار، خدمت، نوبت و Procedure با وضعیتهای SCHEDULED/CHECKED_IN/DONE/CANCELED/NO_SHOW و نسبتدهی به کاربر ایجادکننده ذخیره میشود.
پرداخت و اشتراک: پلن FREE/Paid با BitPay مدیریت میشود. ایجاد Checkout از Backend انجام میشود، فعالسازی پلن تنها پس از وبهوک موفق BitPay صورت میگیرد و وضعیت اشتراک در /app/billing نمایش داده میشود.
تست و کیفیت
اجرای تستهای Backend (پس از نصب وابستگیها):
cd backend
source .venv/bin/activate
python app/manage.py test
اجرای Lint/تستهای Frontend (در صورت فعال بودن اسکریپتها):
cd frontend
npm test
نکات امنیت و عملیات
مقادیر محرمانه (کلیدها و توکنها) را فقط در فایلهای .env نگه دارید و در کنترل نسخه قرار ندهید.
دسترسی CORS را به دامنههای مورد اعتماد محدود کنید و طول عمر توکنها را مطابق نیاز محیط تولید کاهش دهید.
لاگ OTP و پرداخت را بدون ثبت کد خام یا داده کارت نگهداری کنید و وبهوک BitPay را با BITPAY_WEBHOOK_SECRET اعتبارسنجی نمایید.