# Work System - Project Structure Guide ## نظرة عامة هذا المشروع مقسوم إلى 3 أجزاء رئيسية: - `backend/`: خدمة API مبنية بـ NestJS. - `frontend/`: واجهة اختبار بسيطة مبنية بـ Next.js (App Router). - `docker-compose.yml`: تشغيل الخدمات معًا (backend + frontend + postgres). --- ## الشجرة العامة ```text work-system/ ├── .env ├── Makefile ├── PROJECT_STRUCTURE.md ├── docker-compose.yml ├── backend/ │ ├── .git/ │ ├── Dockerfile │ ├── nest-cli.json │ ├── package.json │ ├── tsconfig.json │ ├── tsconfig.build.json │ └── src/ │ ├── main.ts │ ├── app.module.ts │ ├── auth/ │ ├── branches/ │ │ └── dto/ │ ├── shifts/ │ │ └── dto/ │ ├── tasks/ │ │ └── dto/ │ └── users/ │ └── dto/ └── frontend/ ├── .env.local ├── .eslintrc.json ├── Dockerfile ├── README.md ├── components.json ├── docker-compose.yml ├── next-env.d.ts ├── next.config.ts ├── package.json ├── postcss.config.js ├── tailwind.config.ts ├── tsconfig.json ├── public/ └── src/ ├── app/ │ ├── layout.tsx │ ├── page.tsx │ ├── globals.css │ └── api/backend/[...path]/route.ts ├── components/ui/ └── lib/utils.ts ``` --- ## ملفات الجذر (Root) - `.env` - متغيرات البيئة المشتركة (خصوصًا backend و postgres). - `docker-compose.yml` - تعريف الخدمات: - `backend` من `./backend` - `frontend` من `./frontend` - `postgres` قاعدة البيانات - `Makefile` - أوامر مختصرة للتشغيل: - `make build`, `make up`, `make down`, `make ps`, `make logs` - `PROJECT_STRUCTURE.md` - هذا الملف لتوثيق البنية. --- ## backend/ - `package.json` - إعدادات الحزم وسكربتات NestJS (`build`, `start`, `start:dev`, `start:prod`). - `nest-cli.json` - إعدادات Nest CLI وتحديد `sourceRoot`. - `tsconfig.json` و `tsconfig.build.json` - إعدادات TypeScript للتطوير والبناء. - `Dockerfile` - بناء وتشغيل backend داخل حاوية Docker. - `src/main.ts` - نقطة تشغيل NestJS والاستماع على `APP_PORT`. - `src/app.module.ts` - الموديول الرئيسي للتطبيق. - `src/auth`, `src/branches`, `src/shifts`, `src/tasks`, `src/users` - مجلدات الوحدات (Modules) الخاصة بالدومين. - `src/*/dto` - تعريفات DTO لكل وحدة. --- ## frontend/ - `package.json` - إعدادات Next.js وسكربتات التشغيل. - `next.config.ts`, `next-env.d.ts` - إعدادات Next.js. - `tsconfig.json` - إعدادات TypeScript للواجهة. - `tailwind.config.ts`, `postcss.config.js` - إعدادات TailwindCSS و PostCSS. - `.eslintrc.json` - إعداد ESLint. - `components.json` - إعداد shadcn/ui. - `.env.local` - يحتوي `BACKEND_URL` للاتصال بالـ backend عبر proxy. - `Dockerfile` - بناء وتشغيل frontend داخل Docker. - `src/app/page.tsx` - صفحة الواجهة الوحيدة (تسجيل دخول + اختبار endpoint محمي). - `src/app/api/backend/[...path]/route.ts` - Proxy server-side لتمرير الطلبات إلى backend مع الكوكيز. - `src/components/ui/*` - مكونات UI المستخدمة: `button`, `input`, `card`, `label`, `alert`. - `src/lib/utils.ts` - دوال مساعدة للتعامل مع class names. - `frontend/README.md` - تعليمات تشغيل frontend محليًا. --- ## كيف يتم التشغيل ### عبر Makefile ```bash make build make up make ps ``` ### مباشرة عبر Docker Compose ```bash docker compose build docker compose up -d docker compose ps ``` ### المنافذ الافتراضية - Backend: `http://localhost:3000` - Frontend: `http://localhost:3001` - Postgres: `localhost:5432`