149 lines
4.3 KiB
Markdown
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`
|
|
|