{
  "title": "ساختار پروژه (Project Structure)",
  "slug": "team/frontend/architecture/project-structure",
  "url": "/docs/team/frontend/architecture/project-structure",
  "frontmatter": {
    "layout": "doc",
    "title": "ساختار پروژه (Project Structure)",
    "description": "ساختار پروژه کلاینت و تفکیک لایه تنظیمات پلتفرم (.nons) از منطق اجرایی (src)",
    "version": "1.0.0",
    "status": "PRIVATE",
    "author": "Antigravity",
    "owner": "xoxxel",
    "created_at": "2026-06-30",
    "updated_at": "2026-06-30",
    "tags": "",
    "reviewers": ""
  },
  "sections": [
    {
      "level": 1,
      "heading": "ساختار پروژه (Project Structure)",
      "content": "معماری پلتفرم Nons بر اساس یک اصل اساسی بنا شده است: **تفکیک کامل پیکربندی‌های پلتفرم از بدنه کد اجرایی برنامه (Implementation Code)**. بر این اساس، پروژه‌های فرانت‌اند باید به دو بخش مجزا تقسیم شوند: پوشه پیکربندی پلتفرم (`.nons/`) در ریشه پروژه و پوشه پیاده‌سازی بصری و کلاینت (`src/`).\n\n---"
    },
    {
      "level": 2,
      "heading": "ساختار دایرکتوری درختی ریشه پروژه",
      "content": "پروژه‌های مصرف‌کننده پلتفرم Nons باید دایرکتوری ریشه خود را مطابق الگوی زیر ساختاردهی کنند:\n\n```\nproject/\n├── .nons/              # لایه پیکربندی پلتفرم (خارج از کدهای منبع برنامه)\n│   ├── config.yaml\n│   ├── theme.yaml\n│   ├── locale.yaml\n│   ├── navigation.yaml\n│   ├── permissions.yaml\n│   ├── services/       # رجیستری سرویس‌های بک‌اند (تولیدشده توسط nons service add)\n│   │   ├── auth.json\n│   │   └── iam.json\n│   ├── registry/       # Service Manifestها (تولیدشده توسط nons registry build)\n│   └── generated/      # مصنوعات تولیدشده (تولیدشده توسط nons generate)\n├── src/                # پیاده‌سازی کدهای اجرایی برنامه\n└── package.json        # تنظیمات و وابستگی‌های پروژه\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "ساختار دایرکتوری کدهای برنامه (`src/`)",
      "content": "پوشه `src/` منحصراً مسئول پیاده‌سازی و ساخت ابزارهای اجرای کلاینت و رابط کاربری (Application Implementation) است و به بخش‌های زیر تقسیم می‌شود:\n\n```\nsrc/\n├── pages/              # منطق و کنترلرهای صفحات پنل کاربری\n├── templates/          # قالب‌ها و ساختار چیدمان بصری کامپوننت‌ها\n├── components/         # کامپوننت‌های پایه و ماژول‌های UI Kit غیر وابسته به دامنه\n├── layouts/            # لایه‌های عمومی و بدنه کلی صفحات (مانند هدر و سایدبار)\n├── providers/          # پرووایدرهای کانتکست و وضعیت سراسری کلاینت\n└── hooks/              # هوک‌های سفارشی کلاینت برای استفاده مجدد از منطق‌ها\n```\n\n---"
    },
    {
      "level": 2,
      "heading": "قوانین و محدودیت‌های توسعه (Strict Rules)",
      "content": "1. **قانون ممنوعیت پیکربندی در `src/`:** هیچ‌گونه اطلاعات پیکربندی، منو، تعاریف دسترسی یا مشخصات پلتفرم (Platform Configuration) نباید در داخل پوشه `src/` قرار گیرد. پوشه `src/` صرفاً وظیفه خواندن و اجرای پیکربندی‌ها را از لایه پلتفرم دارد.\n2. **پایداری ساختار کد:** معماری `src/` باید به گونه‌ای طراحی شود که در صورت تغییر پیکربندی‌ها در لایه پلتفرم، نیازی به بیلد مجدد یا دستکاری در کدهای داخل `src/` نباشد.\n3. **پشتیبانی از فریم‌ورک‌های چندگانه:** اجزای درون پوشه `src/` می‌توانند بر اساس فریم‌ورک مورد استفاده در پروژه (مانند React یا Vue) پیاده‌سازی شوند، اما خروجی و منطق تغذیه آن‌ها همیشه یکسان است."
    }
  ]
}