Об этом проекте
ParkCore представляет собой full-stack приложение для управления парковочными операциями, предназначенное для владельцев независимых парковок. Его область применения намеренно ограничена: управление повседневным состоянием парковки, а не бронирование или обработка платежей. В README четко указано, что система не является маркетплейсом бронирования или платежной платформой.
Возможности
- Публичный поиск: любой пользователь может искать и фильтровать активные парковки по адресу и почасовой ставке через каталог только для чтения.
- Жизненный цикл парковки: владельцы управляют своими объектами, контролируя их активность, публичную видимость и доступность для новых регистраций.
- Операции с сессиями: регистрация въезда автомобиля, мониторинг активных сессий, завершение или отмена пребывания, а также просмотр истории сессий.
- Распознавание транспортных средств: номерные знаки нормализуются, чтобы идентификатор автомобиля можно было использовать повторно при последующих визитах на конкретную парковку.
- Снимки цен: почасовая ставка и валюта фиксируются в момент въезда, поэтому итоговая сумма остается корректной даже при последующем изменении конфигурации объекта.
Инженерный подход
Правила домена сосредоточены на границе API: парковка должна быть активна для приема автомобиля, и только ее владелец может управлять парковкой или сессиями. Вместимость защищена от одновременных регистраций с помощью сериализуемого сохранения данных и ограничений базы данных, которые также предотвращают дублирование активных автомобилей на одной парковке.
Веб-клиент работает на основе контрактов: TypeScript-пакет @parkcore/api-client генерируется из OpenAPI-артефакта API, а команда pnpm contract:check обнаруживает расхождения между API и клиентом. Браузерное приложение не импортирует внутренние механизмы API или типы Prisma; оно взаимодействует с API исключительно через сгенерированный клиент.
Верификация разделена по системным границам, указанным в README: тесты API на базе PostgreSQL для проверки поведения домена и персистентности, веб-тесты для компонентов и маршрутов, Playwright для рабочих процессов владельца, а также отдельные проверки реального стека для развернутой системы.
Архитектура и стек
Поток данных: Браузер → веб-приложение на Vercel (React/Vite и сгенерированный API-клиент) → API на Render → Neon PostgreSQL. API-приложение отвечает за аутентификацию, правила домена, авторизацию и персистентность через Prisma. Веб-приложение отвечает за публичный поиск и операции владельца, используя React Router для навигации и TanStack Query для серверного состояния. Инструментарий включает pnpm workspaces, Vitest, Playwright, ESLint, Prettier и Docker Compose; на стороне API используются Node.js, Express 5, Prisma, PostgreSQL, Zod и OpenAPI.
Быстрый старт
Необходимые требования: Node.js 24, pnpm 10 и Docker Desktop. После копирования файлов .env.example для API и веб-приложений выполняется последовательность команд: pnpm install, pnpm docker:up, pnpm db:setup и pnpm dev. API запускается на порту 3000, а веб-приложение обычно на порту 5173. Скрипты качества охватывают форматирование, линтинг, проверку типов, тесты с покрытием, сквозной запуск Playwright, проверку контрактов и сборку (для которой требуется VITE_API_URL).
Документация в репозитории охватывает область проекта, архитектуру, рабочий процесс разработки, тестирование и развертывание. Ссылки на живые демо веб-приложения и эндпоинт проверки состояния API доступны в README.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.