From d769ac602b99879e8c0ab17ccd5d49a2e64c9efc Mon Sep 17 00:00:00 2001 From: deonisii Date: Fri, 17 Apr 2026 03:15:47 +0300 Subject: [PATCH] init --- .dockerignore | 8 + .gitignore | 41 + AGENTS.md | 5 + CLAUDE.md | 1 + Dockerfile | 27 + README.md | 36 + app/about/page.tsx | 73 + app/cases/page.tsx | 71 + app/contacts/page.tsx | 89 + app/favicon.ico | Bin 0 -> 3456 bytes app/for-uk/page.tsx | 61 + app/globals.css | 21 + app/layout.tsx | 148 + app/page.tsx | 333 ++ app/pricing/page.tsx | 209 ++ app/services/page.tsx | 101 + components/mobile-menu.tsx | 165 + docker-compose.yml | 11 + eslint.config.mjs | 18 + next.config.ts | 7 + package-lock.json | 6742 ++++++++++++++++++++++++++++++++++++ package.json | 29 + postcss.config.mjs | 7 + public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + tsconfig.json | 34 + 29 files changed, 8242 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 AGENTS.md create mode 100644 CLAUDE.md create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 app/about/page.tsx create mode 100644 app/cases/page.tsx create mode 100644 app/contacts/page.tsx create mode 100644 app/favicon.ico create mode 100644 app/for-uk/page.tsx create mode 100644 app/globals.css create mode 100644 app/layout.tsx create mode 100644 app/page.tsx create mode 100644 app/pricing/page.tsx create mode 100644 app/services/page.tsx create mode 100644 components/mobile-menu.tsx create mode 100644 docker-compose.yml create mode 100644 eslint.config.mjs create mode 100644 next.config.ts create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.mjs create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg create mode 100644 tsconfig.json diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a58150c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +node_modules +.next +.git +.gitignore +npm-debug.log +Dockerfile +docker-compose.yml +README.md \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5ef6a52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8bd0e39 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,5 @@ + +# This is NOT the Next.js you know + +This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices. + diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..43c994c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..05c40ef --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM node:22-alpine AS base + +FROM base AS deps +WORKDIR /app +COPY package*.json ./ +RUN npm ci + +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +RUN npm run build + +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +ENV PORT=3000 +ENV HOSTNAME=0.0.0.0 + +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +EXPOSE 3000 + +CMD ["node", "server.js"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e215bc4 --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/app/about/page.tsx b/app/about/page.tsx new file mode 100644 index 0000000..9d481b6 --- /dev/null +++ b/app/about/page.tsx @@ -0,0 +1,73 @@ +export default function AboutPage() { + return ( +
+
+
+
+

О компании

+

+ WorkParking — решения +
+ для умного дворового въезда +

+

+ Мы занимаемся апгрейдом дворовых шлагбаумов и внедрением систем + доступа для жилых комплексов, дворов, ТСЖ, ТСН и управляющих + компаний в Москве. +

+
+
+
+ +
+
+
+
+

Чем мы занимаемся

+

+ WorkParking помогает превратить обычный дворовый шлагбаум в + современную систему контроля доступа. Мы внедряем въезд и выезд + по номеру автомобиля, подключаем приложение для жителей, + настраиваем гостевые сценарии, историю проездов, фото с камеры и + аналитику по подписке. +

+
+ +
+

Наш подход

+

+ Мы делаем упор не только на оборудование, но и на удобство + эксплуатации. Для нас важно, чтобы система была понятной для + жителей, полезной для управляющей компании и устойчивой в + ежедневной работе. Поэтому мы строим решения, которые можно + запускать поэтапно: от базового доступа по номеру до расширенной + аналитики и сервисных функций. +

+
+ +
+

Для кого мы работаем

+

+ Наши решения подходят для дворов многоквартирных домов, жилых + комплексов, ТСЖ, ТСН и управляющих компаний, которым нужен + современный и понятный инструмент управления въездом. Мы можем + модернизировать существующий шлагбаум или предложить модель + подключения с сервисным оборудованием. +

+
+ +
+

Юридическая информация

+
+
Компания: ООО «Пракфлоу»
+
ИНН: 7777773333
+
Телефон: +7 (999) 969-81-49
+
Email: sale@parkflow.ru, info@parkflow.ru
+
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/app/cases/page.tsx b/app/cases/page.tsx new file mode 100644 index 0000000..9fd4303 --- /dev/null +++ b/app/cases/page.tsx @@ -0,0 +1,71 @@ +export default function CasesPage() { + return ( +
+
+
+
+

Кейсы и объекты

+

+ Как будут выглядеть кейсы +
+ после наполнения +

+

+ Пока здесь демо-контент. Позже заменишь его на реальные адреса, + фото объектов, конфигурации и результаты внедрения. +

+
+
+
+ +
+
+
+ Жилой комплекс +
+

ЖК на 2 въезда

+

+ Автоматизация въезда и выезда по номеру, приложение и базовая + история событий. +

+
+
+ +
+ Дворовой шлагбаум +
+

Дворовой шлагбаум

+

+ Апгрейд существующего въезда без полной замены всей схемы + доступа. +

+
+
+ +
+ Управляющая компания +
+

Объект для УК

+

+ Расширенная подписка с фото в истории, фильтрами и аналитикой по + событиям проезда. +

+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/app/contacts/page.tsx b/app/contacts/page.tsx new file mode 100644 index 0000000..1f2e97b --- /dev/null +++ b/app/contacts/page.tsx @@ -0,0 +1,89 @@ +export default function ContactsPage() { + return ( +
+
+
+
+

Контакты

+

+ Свяжитесь с нами +

+

+ Если вы хотите обсудить апгрейд дворового шлагбаума, внедрение + въезда по номеру автомобиля или подключение сервиса по подписке — + свяжитесь с нами удобным способом. +

+
+
+
+ +
+
+
+

Основные контакты

+
+
+
Телефон
+ + +7 (999) 969-81-49 + +
+ +
+
Email для продаж
+ + sale@parkflow.ru + +
+ +
+
Общий Email
+ + info@parkflow.ru + +
+ +
+
Компания
+
ООО «Пракфлоу»
+
+ +
+
ИНН
+
7777773333
+
+
+
+ +
+

Соцсети и мессенджеры

+ + +
+

+ Здесь позже можно добавить форму обратной связи, карту или + отдельные контакты для отдела продаж и технической поддержки. +

+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cd172fc854c919169b88b66850c71f966523d827 GIT binary patch literal 3456 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 literal 0 HcmV?d00001 diff --git a/app/for-uk/page.tsx b/app/for-uk/page.tsx new file mode 100644 index 0000000..8073f70 --- /dev/null +++ b/app/for-uk/page.tsx @@ -0,0 +1,61 @@ +import { Building2, CheckCircle2, ShieldCheck, BarChart3 } from "lucide-react"; + +export default function ForUkPage() { + return ( +
+
+
+
+

Для управляющих компаний

+

+ Решение для УК, ТСЖ и ТСН +

+

+ Помогаем перевести дворовой шлагбаум из ручного режима в систему с + прозрачной логикой доступа, историей событий и понятной подпиской. +

+
+
+
+ +
+
+
+ +

Единый инструмент

+

+ Управление въездом, списками доступа и событиями проезда в одной + системе. +

+
+ +
+ +

Контроль территории

+

+ Меньше посторонних автомобилей и меньше ручных операций по въезду. +

+
+ +
+ +

Аналитика для УК

+

+ В расширенном тарифе доступны фильтры, фото в истории и более + детальная аналитика проездов. +

+
+ +
+ +

Поэтапное внедрение

+

+ Можно начать с базового функционала и затем перейти на + расширенную подписку. +

+
+
+
+
+ ); +} \ No newline at end of file diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..4958b33 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,21 @@ +@import "tailwindcss"; + +:root { + --background: #0a0a0a; + --foreground: #ffffff; +} + +html { + scroll-behavior: smooth; +} + +body { + background: var(--background); + color: var(--foreground); +} + +@layer utilities { + .hero-bg { + background: linear-gradient(135deg, #050505 0%, #101712 55%, #12241a 100%); + } +} \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..9a54322 --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,148 @@ +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import "./globals.css"; +import Link from "next/link"; +import MobileMenu from "@/components/mobile-menu"; + +const inter = Inter({ subsets: ["latin", "cyrillic"] }); + +export const metadata: Metadata = { + title: "WorkParking — Умные парковки", + description: + "Апгрейд дворовых шлагбаумов в Москве: въезд и выезд по номеру, приложение, история проездов и подписка на сервис.", +}; + +const navLinks = [ + { href: "/services", label: "Услуги" }, + { href: "/cases", label: "Кейсы" }, + { href: "/for-uk", label: "Для УК" }, + { href: "/pricing", label: "Цены" }, + { href: "/about", label: "О компании" }, + { href: "/contacts", label: "Контакты" }, +]; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + +
+
+ + WorkParking + + + + + +
+
+ + {children} + +
+
+
+
+
WorkParking
+

+ Апгрейд дворовых шлагбаумов в Москве: въезд и выезд по номеру, + приложение для жителей, история проездов и подписка на сервис. +

+
+ +
+
+
+ Навигация +
+
+ {navLinks.map((link) => ( + + {link.label} + + ))} +
+
+ + + +
+
+ Мы в сети +
+ +
+
+
+ +
+
© 2026 WorkParking
+
ООО «Пракфлоу» • ИНН 7777773333
+
+
+
+ + + ); +} \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..fdec60f --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,333 @@ +import Link from "next/link"; +import { + ArrowRight, + Camera, + Fence, + Smartphone, + CheckCircle2, + ShieldCheck, + Server, + Building2, + CircleDollarSign, + BarChart3, +} from "lucide-react"; + +export default function Home() { + return ( +
+
+
+
+
+
+ + Апгрейд дворовых шлагбаумов в Москве +
+ +

+ Умный въезд +
+ для двора, ЖК и УК +

+ +

+ Распознавание номера автомобиля, автоматический въезд и выезд, + приложение для жителей, история проездов, фото с камеры и + аналитика по подписке. +

+ +
+ + Посмотреть тарифы + + + + + Решение для УК + +
+ +
+
+ Въезд и выезд по номеру +
+
+ Приложение для жителей +
+
+ Подписка с аналитикой +
+
+
+ +
+
+ Дворовой въезд со шлагбаумом +
+ +
+
+ +
+

Контроль доступа

+

ANPR-камера

+

+ распознавание номера и фото проезда +

+
+
+
+ +
+
+ +
+

Расширенный тариф

+

Аналитика

+

+ история, фильтры и отчёты по проездам +

+
+
+
+
+
+
+
+ +
+
+
+

+ Что входит в апгрейд +

+

+ Мы не просто ставим оборудование, а превращаем обычный шлагбаум в + управляемую систему доступа для двора и управляющей компании. +

+
+ +
+
+ +

Распознавание номера

+

+ Камера считывает номер авто и автоматически открывает въезд или + выезд по правилам доступа. +

+
+ +
+ +

+ Управление шлагбаумом +

+

+ Сохраняется удобный сценарий для резидентов, гостей и служебного + транспорта без ручного режима. +

+
+ +
+ +

+ Приложение и личный доступ +

+

+ Жители получают управление доступом со смартфона, а УК — единый + инструмент контроля. +

+
+
+
+
+ +
+
+
+

+ Два формата подписки +

+

+ Можно начать с базового тарифа и перейти на расширенный, когда + понадобится более глубокая история и аналитика. +

+
+ +
+
+
+

Базовая подписка

+ + 10 000 ₽ / мес + +
+ +
+
+ + Въезд и выезд по номеру автомобиля +
+
+ + Приложение и базовые функции для жителей +
+
+ + Базовая история проездов +
+
+ + Управление доступом для двора +
+
+
+ +
+
+

Расширенная подписка

+ + 15 000 ₽ / мес + +
+ +
+
+ + Всё из базового тарифа +
+
+ + Фото автомобиля в истории проездов +
+
+ + Фильтры по событиям и автомобилям +
+
+ + Более подробная аналитика и отчёты +
+
+
+
+
+
+ +
+
+
+
+

+ Что получает объект +

+ +
+ {[ + "Контроль въезда и выезда по номеру автомобиля", + "Историю всех событий проезда", + "Снижение ручной нагрузки на диспетчера и охрану", + "Удобный сценарий доступа для жителей и гостей", + "Основание для дальнейшей аналитики и масштабирования", + ].map((item) => ( +
+ +

{item}

+
+ ))} +
+
+ +
+

+ Для кого подходит решение +

+ +
+
+ Дворы многоквартирных домов +
+
+ Жилые комплексы с закрытым въездом +
+
+ Управляющие компании, ТСЖ и ТСН +
+
+ Объекты, где нужен простой старт и платное расширение функций +
+
+ +
+ + Посмотреть услуги + + + Смотреть тарифы + +
+
+
+
+
+ +
+
+
+
+

+ Обсудим апгрейд вашего шлагбаума +

+

+ На следующем этапе сюда можно подключить реальную форму и + отправку заявки в backend. +

+
+ +
+ + +