Skip to main content

Monorepo

ریپازیتوری یک Turborepo monorepo است — یعنی بک‌اند، وب و پکیجِ contracts هر سه در یک ریپازیتوری زندگی می‌کنند و با یک دستور واحد build/dev/test می‌شوند. package.json ریشه این را با workspaces: ["apps/*", "packages/*"] تعریف کرده و اسکریپت‌های dev، build، dev:api، dev:web، lint، test را در خودش دارد.

ساختار

  • apps/api (taghvimam-backend) — Express API برای اپ اندروید و calendar وب. مسیرها، Prisma، احراز هویت. اجرا: npm run dev:api یا از ریشه npm run dev --workspace=taghvimam-backend.
  • apps/calendar-web — React (Vite) calendar UI. اجرا: npm run dev:web یا از ریشه npm run dev --workspace=calendar-web.
  • packages/contracts@taghvimam/contracts: اسکیماهای Zod + تایپ‌های TypeScriptِ استنباط‌شده که منبعِ واحدِ حقیقت برای تمام DTO‌های API هستند. هر دو اپ تایپ‌های DTO را از این‌جا ایمپورت می‌کنند.

مسیرهای وب: / (خانه) و /calendar-fa و /calendar (هر دو، صفحهٔ تقویم جلالی).

base URL برای اپ وب

در apps/calendar-web تنظیم می‌شود — در dev، پروکسیِ Vite در vite.config.ts درخواست‌های /api را به http://localhost:5000 می‌فرستد. برای API غیرِ پروکسی‌شده (تولید) VITE_API_URL را روی یک origin مطلق (مثل https://api.taghvimam.ir) بگذارید.

دستورهای ریشه (Turbo)

npm run dev # همزمان: API روی :5000، وب روی :5173
npm run build # build همهٔ workspace‌ها (contracts → api → web)
npm run lint # lint همه
npm run test # تست همه

برای جزئیاتِ اتصالِ فرانت‌اند به بک‌اند به کلاینت وب، و برای الگوهای UI واکنش‌گرا به UI واکنش‌گرا مراجعه کنید.