work-sestym/PROJECT_STRUCTURE.md
2026-02-28 20:58:17 +01:00

149 lines
4.3 KiB
Markdown

# 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`