diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 7149fe9..4b60f1b 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -36,7 +36,7 @@ body: attributes: label: Шаги воспроизведения placeholder: | - 1. Запустить Server и maze + 1. Запустить Server и Client 2. Открыть каталог 3. Добавить товар в корзину 4. Обновить страницу diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml index 4186ad3..be85ae7 100644 --- a/.github/ISSUE_TEMPLATE/task.yml +++ b/.github/ISSUE_TEMPLATE/task.yml @@ -19,7 +19,7 @@ body: attributes: label: Область options: - - Фронт (maze) + - Фронт (Client) - Бэкенд (Server) - Инфра / DevOps - Документация diff --git a/Client/.dockerignore b/Client/.dockerignore new file mode 100644 index 0000000..8f1ef39 --- /dev/null +++ b/Client/.dockerignore @@ -0,0 +1,16 @@ +node_modules +.next +.git +.gitignore +Dockerfile +.dockerignore +*.md +.env +.env.* +!.env.example +npm-debug.log* +coverage +.DS_Store +*.tsbuildinfo +next-env.d.ts +.vercel diff --git a/maze/.env.example b/Client/.env.example similarity index 100% rename from maze/.env.example rename to Client/.env.example diff --git a/maze/.gitignore b/Client/.gitignore similarity index 100% rename from maze/.gitignore rename to Client/.gitignore diff --git a/maze/.node-version b/Client/.node-version similarity index 100% rename from maze/.node-version rename to Client/.node-version diff --git a/Client/.npmrc b/Client/.npmrc new file mode 100644 index 0000000..b215581 --- /dev/null +++ b/Client/.npmrc @@ -0,0 +1 @@ +fund=false diff --git a/maze/AGENTS.md b/Client/AGENTS.md similarity index 100% rename from maze/AGENTS.md rename to Client/AGENTS.md diff --git a/maze/CLAUDE.md b/Client/CLAUDE.md similarity index 100% rename from maze/CLAUDE.md rename to Client/CLAUDE.md diff --git a/Client/Dockerfile b/Client/Dockerfile new file mode 100644 index 0000000..da2814f --- /dev/null +++ b/Client/Dockerfile @@ -0,0 +1,36 @@ +# Next.js App Router (SSR) — не статический /dist под nginx. +# Сборка: docker compose build client +FROM node:22-alpine AS deps +RUN apk add --no-cache libc6-compat +WORKDIR /app +COPY package.json package-lock.json ./ +RUN npm ci + +FROM node:22-alpine AS build +RUN apk add --no-cache libc6-compat +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +# Rewrites /api и /uploads в next.config.ts читаются на этапе build. +ARG API_INTERNAL_URL=http://api:4000 +ENV API_INTERNAL_URL=$API_INTERNAL_URL +ENV NEXT_TELEMETRY_DISABLED=1 +RUN npm run build + +FROM node:22-alpine AS runner +WORKDIR /app +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV HOSTNAME=0.0.0.0 +ENV PORT=3000 + +RUN addgroup --system --gid 1001 nodejs \ + && adduser --system --uid 1001 nextjs + +COPY --from=build /app/public ./public +COPY --from=build --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=build --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs +EXPOSE 3000 +CMD ["node", "server.js"] diff --git a/Client/README.md b/Client/README.md new file mode 100644 index 0000000..56bab1d --- /dev/null +++ b/Client/README.md @@ -0,0 +1,23 @@ +# MAZE Client + +Storefront и админка магазина MAZE на Next.js (App Router). + +## Запуск + +Из корня репозитория подними API (`Server/`, порт 4000), затем: + +```bash +cd Client +npm install +npm run dev +``` + +Открой [http://localhost:3000](http://localhost:3000). + +Переменные окружения — см. `.env.example` (URL API, публичный origin). + +## Скрипты + +- `npm run dev` — development +- `npm run build` / `npm start` — production +- `npm run lint` — ESLint diff --git a/maze/app/(staff)/admin/catalog/categories/page.tsx b/Client/app/(staff)/admin/catalog/categories/page.tsx similarity index 100% rename from maze/app/(staff)/admin/catalog/categories/page.tsx rename to Client/app/(staff)/admin/catalog/categories/page.tsx diff --git a/maze/app/(staff)/admin/catalog/products/[id]/page.tsx b/Client/app/(staff)/admin/catalog/products/[id]/page.tsx similarity index 100% rename from maze/app/(staff)/admin/catalog/products/[id]/page.tsx rename to Client/app/(staff)/admin/catalog/products/[id]/page.tsx diff --git a/maze/app/(staff)/admin/catalog/products/new/page.tsx b/Client/app/(staff)/admin/catalog/products/new/page.tsx similarity index 100% rename from maze/app/(staff)/admin/catalog/products/new/page.tsx rename to Client/app/(staff)/admin/catalog/products/new/page.tsx diff --git a/maze/app/(staff)/admin/catalog/products/page.tsx b/Client/app/(staff)/admin/catalog/products/page.tsx similarity index 100% rename from maze/app/(staff)/admin/catalog/products/page.tsx rename to Client/app/(staff)/admin/catalog/products/page.tsx diff --git a/maze/app/(staff)/admin/content/banners/page.tsx b/Client/app/(staff)/admin/content/banners/page.tsx similarity index 100% rename from maze/app/(staff)/admin/content/banners/page.tsx rename to Client/app/(staff)/admin/content/banners/page.tsx diff --git a/maze/app/(staff)/admin/content/cms/[id]/page.tsx b/Client/app/(staff)/admin/content/cms/[id]/page.tsx similarity index 100% rename from maze/app/(staff)/admin/content/cms/[id]/page.tsx rename to Client/app/(staff)/admin/content/cms/[id]/page.tsx diff --git a/maze/app/(staff)/admin/content/cms/new/page.tsx b/Client/app/(staff)/admin/content/cms/new/page.tsx similarity index 100% rename from maze/app/(staff)/admin/content/cms/new/page.tsx rename to Client/app/(staff)/admin/content/cms/new/page.tsx diff --git a/maze/app/(staff)/admin/content/cms/page.tsx b/Client/app/(staff)/admin/content/cms/page.tsx similarity index 100% rename from maze/app/(staff)/admin/content/cms/page.tsx rename to Client/app/(staff)/admin/content/cms/page.tsx diff --git a/maze/app/(staff)/admin/content/slides/page.tsx b/Client/app/(staff)/admin/content/slides/page.tsx similarity index 100% rename from maze/app/(staff)/admin/content/slides/page.tsx rename to Client/app/(staff)/admin/content/slides/page.tsx diff --git a/maze/app/(staff)/admin/layout.tsx b/Client/app/(staff)/admin/layout.tsx similarity index 100% rename from maze/app/(staff)/admin/layout.tsx rename to Client/app/(staff)/admin/layout.tsx diff --git a/maze/app/(staff)/admin/orders/[id]/page.tsx b/Client/app/(staff)/admin/orders/[id]/page.tsx similarity index 100% rename from maze/app/(staff)/admin/orders/[id]/page.tsx rename to Client/app/(staff)/admin/orders/[id]/page.tsx diff --git a/maze/app/(staff)/admin/orders/page.tsx b/Client/app/(staff)/admin/orders/page.tsx similarity index 100% rename from maze/app/(staff)/admin/orders/page.tsx rename to Client/app/(staff)/admin/orders/page.tsx diff --git a/maze/app/(staff)/admin/page.tsx b/Client/app/(staff)/admin/page.tsx similarity index 100% rename from maze/app/(staff)/admin/page.tsx rename to Client/app/(staff)/admin/page.tsx diff --git a/maze/app/(staff)/admin/settings/editor-choice/page.tsx b/Client/app/(staff)/admin/settings/editor-choice/page.tsx similarity index 100% rename from maze/app/(staff)/admin/settings/editor-choice/page.tsx rename to Client/app/(staff)/admin/settings/editor-choice/page.tsx diff --git a/maze/app/(staff)/admin/settings/site/page.tsx b/Client/app/(staff)/admin/settings/site/page.tsx similarity index 100% rename from maze/app/(staff)/admin/settings/site/page.tsx rename to Client/app/(staff)/admin/settings/site/page.tsx diff --git a/maze/app/(staff)/admin/stock/page.tsx b/Client/app/(staff)/admin/stock/page.tsx similarity index 100% rename from maze/app/(staff)/admin/stock/page.tsx rename to Client/app/(staff)/admin/stock/page.tsx diff --git a/maze/app/(staff)/layout.tsx b/Client/app/(staff)/layout.tsx similarity index 95% rename from maze/app/(staff)/layout.tsx rename to Client/app/(staff)/layout.tsx index 1292a40..a4fd98c 100644 --- a/maze/app/(staff)/layout.tsx +++ b/Client/app/(staff)/layout.tsx @@ -13,7 +13,7 @@ export default function StaffLayout({ return (
{children}
diff --git a/maze/app/(staff)/staff/login/page.tsx b/Client/app/(staff)/staff/login/page.tsx similarity index 100% rename from maze/app/(staff)/staff/login/page.tsx rename to Client/app/(staff)/staff/login/page.tsx diff --git a/maze/app/(storefront)/account/page.tsx b/Client/app/(storefront)/account/page.tsx similarity index 100% rename from maze/app/(storefront)/account/page.tsx rename to Client/app/(storefront)/account/page.tsx diff --git a/maze/app/(storefront)/cart/page.tsx b/Client/app/(storefront)/cart/page.tsx similarity index 100% rename from maze/app/(storefront)/cart/page.tsx rename to Client/app/(storefront)/cart/page.tsx diff --git a/maze/app/(storefront)/catalog/page.tsx b/Client/app/(storefront)/catalog/page.tsx similarity index 95% rename from maze/app/(storefront)/catalog/page.tsx rename to Client/app/(storefront)/catalog/page.tsx index 1526bf2..792295d 100644 --- a/maze/app/(storefront)/catalog/page.tsx +++ b/Client/app/(storefront)/catalog/page.tsx @@ -26,6 +26,7 @@ export default async function CatalogPage({ -
-
{children}
+
{children}