Skip to content

Latest commit

 

History

History
135 lines (105 loc) · 4.65 KB

File metadata and controls

135 lines (105 loc) · 4.65 KB

پنل مدیریت (Admin Panel)

یک داشبورد مدیریتی مدرن با React که از DummyJSON API برای احراز هویت و مدیریت کاربران استفاده می‌کند. رابط کاربری دو زبانه (فارسی / انگلیسی) با پشتیبانی کامل RTL و LTR، حالت تاریک/روشن و طراحی واکنش‌گرا برای موبایل و دسکتاپ.

نسخه زنده: admin-panel-tan-mu.vercel.app

پیش‌نمایش

دموی پنل مدیریت

ویژگی‌ها

احراز هویت (JWT)

  • ورود با DummyJSON (/auth/login)
  • ذخیره access token و refresh token در Zustand (persist)
  • تازه‌سازی خودکار توکن هنگام انقضا
  • مسیرهای محافظت‌شده و هدایت مهمان به صفحه ورود

داشبورد

  • کارت‌های آماری: کل کاربران، نقش‌های فعال، مدیران، کاربران عادی
  • نمودار میله‌ای توزیع کاربران بر اساس نقش (Recharts)
  • اسکلتون لودر هنگام بارگذاری

مدیریت کاربران

  • لیست کاربران با pagination
  • جستجو بر اساس نام و فیلتر نقش
  • افزودن، ویرایش و حذف کاربر (CRUD)
  • اعتبارسنجی فرم با Zod
  • حذف خوش‌بینانه (Optimistic Delete)
  • نمای جدول در دسکتاپ و کارت در موبایل

نقش‌ها و دسترسی‌ها

  • نقش‌های پیش‌فرض (Admin، Moderator، User)
  • ایجاد نقش سفارشی با انتخاب permission
  • ویرایش و حذف نقش‌های سفارشی

تجربه کاربری

  • دو زبانه: فارسی (پیش‌فرض) و انگلیسی
  • RTL/LTR: منوی کشویی از راست در فارسی
  • تم: حالت روشن و تاریک
  • واکنش‌گرا: هدر موبایل، نوار پایین، drawer کناری
  • Error Boundary برای خطاهای غیرمنتظره
  • اسکلتون لودر در جداول و داشبورد

فناوری‌ها

لایه ابزار
UI React 19, TypeScript, Tailwind CSS v4
Build Vite 8
Routing React Router v7
State Zustand (persist)
Data TanStack Query, TanStack Table
Validation Zod
Charts Recharts
API DummyJSON

شروع سریع

پیش‌نیاز

  • Node.js 18+
  • npm

نصب و اجرا

git clone <repo-url>
cd admin-panel
npm install
npm run dev

مرورگر را باز کنید: http://localhost:5173

اطلاعات ورود (DummyJSON)

فیلد مقدار
نام کاربری emilys
رمز عبور emilyspass

اسکریپت‌ها

npm run dev          # سرور توسعه
npm run build        # بیلد production
npm run preview      # پیش‌نمایش بیلد
npm run lint         # ESLint
npm run record:demo  # ضبط GIF دمو (سرور dev باید در حال اجرا باشد)

ساختار پروژه

src/
├── app/              # router, store, query-client, theme, locale
├── pages/            # LoginPage, DashboardPage, UsersPage, RolesPage
├── features/
│   ├── auth/         # Login, AuthProvider, JWT
│   ├── users/        # CRUD, filters, table
│   ├── roles/        # Roles & permissions
│   └── dashboard/    # Stats & chart
├── shared/
│   ├── components/   # Layout, Modal, DataTable, ...
│   ├── i18n/         # fa.ts, en.ts
│   ├── hooks/
│   ├── schemas/      # Zod schemas
│   └── services/     # API client
└── assets/

معماری

  • Feature-based: هر ماژول (auth, users, roles) شامل components، hooks، services و store خودش است
  • Shared layer: کامپوننت‌ها، i18n، API client و utilityهای مشترک
  • Protected routes: ProtectedRoute و GuestRoute در router
  • Optimistic updates: حذف کاربر قبل از پاسخ سرور در UI اعمال می‌شود

API

پروژه از DummyJSON استفاده می‌کند:

  • POST /auth/login — ورود
  • POST /auth/refresh — تازه‌سازی توکن
  • GET /users — لیست کاربران (pagination, search)
  • POST /users/add — افزودن کاربر
  • PUT /users/:id — ویرایش
  • DELETE /users/:id — حذف

زبان

English README.en.md
Index README.md