No description
Find a file
2026-05-06 23:48:41 +05:00
.opencode/skills docs: update project SKILL.md with complete structure 2026-05-06 23:41:10 +05:00
backend Новые правки сайта 2026-05-06 23:48:41 +05:00
frontend feat: add sitemap.xml generation + type definitions + robots.txt update 2026-05-06 23:41:06 +05:00
.gitignore first commit 2026-03-29 17:24:16 +05:00
bun.lock first commit 2026-03-29 17:24:16 +05:00
bunfig.toml first commit 2026-03-29 17:24:16 +05:00
null Новые правки в компоенты 2026-05-06 23:16:07 +05:00
package.json first commit 2026-03-29 17:24:16 +05:00
QWEN.md first commit 2026-03-29 17:24:16 +05:00
README.md Новые правки в компоенты 2026-05-06 23:16:07 +05:00

Astro + PocketBase Monorepo — Minivan Berlin

Монорепозиторий для веб-сайта Minivan Berlin — сервиса аренды автомобилей в Берлине. Проект сочетает современный SSR-фронтенд на Astro с backend-ом на PocketBase в качестве headless CMS и системы аутентификации.

🚀 Технологический стек

Frontend

  • Astro 6 — SSR-фреймворк с поддержкой островной архитектуры
  • SolidJS — реактивные компоненты для интерактивных элементов
  • Tailwind CSS 4 — утилитарные стили
  • TypeScript — типизация всего проекта
  • PocketBase JS SDK — клиент для взаимодействия с backend
  • astro-icon — иконки в проекте
  • @astrojs/sitemap — генерация sitemap для SEO
  • @astrojs/mdx — поддержка MDX для контента

Backend

  • PocketBase — легковесный backend с SQLite, аутентификацией и админ-панелью
  • Миграции — управление схемой данных через JS-миграции

Инфраструктура

  • Bun — пакетный менеджер и рантайм
  • Maildev — локальный SMTP-сервер для тестирования email
  • Concurrently — параллельный запуск нескольких серверов
  • Docker — контейнеризация (Dockerfile в frontend и backend)

📁 Структура проекта

astro_minivan/
├── frontend/                 # Astro-приложение
│   ├── src/
│   │   ├── components/      # SolidJS и Astro компоненты
│   │   │   ├── auth/        # Компоненты аутентификации
│   │   │   ├── booking/     # Компоненты бронирования
│   │   │   ├── home/        # Компоненты главной страницы
│   │   │   ├── blog/        # Компоненты блога
│   │   │   └── ...          # Другие секции сайта
│   │   ├── pages/           # Страницы Astro
│   │   │   ├── api/         # API endpoints
│   │   │   ├── auth/        # Страницы аутентификации
│   │   │   └── *.astro      # Основные страницы сайта
│   │   ├── lib/             # Утилиты и сервисы
│   │   │   ├── authService.ts    # Сервис аутентификации
│   │   │   ├── emailService.ts   # Отправка email через Nodemailer
│   │   │   ├── pocketbase.js     # Клиент PocketBase
│   │   │   └── ...
│   │   ├── layouts/         # Layouts Astro
│   │   ├── styles/          # Глобальные стили
│   │   ├── types/           # TypeScript типы
│   │   ├── constants/       # Константы приложения
│   │   ├── emails/          # Шаблоны email-писем
│   │   └── middleware.js    # Middleware для аутентификации
│   ├── astro.config.mjs     # Конфигурация Astro
│   ├── tsconfig.json        # TypeScript конфигурация
│   └── Dockerfile
│
├── backend/                  # PocketBase backend
│   ├── pb_migrations/       # Миграции базы данных
│   ├── pb_data/             # Данные PocketBase (игнорируется в git)
│   ├── pocketbase.exe       # Бинарник PocketBase
│   └── start.sh / start.bat # Скрипты запуска
│
├── bunfig.toml              # Конфигурация Bun (workspaces)
├── package.json             # Корневой package.json
└── .gitignore

⚙️ Установка

Требования

  • Bun (рекомендуемая версия указывается в .nvmrc)
  • Node.js (совместимая версия)

Установка зависимостей

bun install

🛠️ Разработка

Запуск всех сервисов одновременно

# Фронтенд + бэкенд
bun run dev

# Фронтенд + бэкенд + почтовый сервер (для тестирования email)
bun run dev:all

Запуск отдельных сервисов

# Только фронтенд (Astro на порту 4321)
bun run frontend:dev

# Только бэкенд (PocketBase на порту 8090)
bun run backend:dev

# Только почтовый сервер (Maildev)
bun run maildev

Доступные адреса

Сервис URL Описание
Frontend http://localhost:4321 Astro приложение (SSR)
Backend http://localhost:8090 PocketBase API и админ-панель
Maildev http://localhost:1080 Веб-интерфейс почтового сервера
Maildev SMTP localhost:1025 SMTP сервер для отправки писем

📦 Сборка и продакшен

Сборка проекта

# Сборка фронтенда
bun run build

# Или напрямую
cd frontend && bun run build

Запуск продакшен-версии

bun run start

🔐 Аутентификация

Проект использует встроенную систему аутентификации PocketBase:

  • OAuth2 провайдеры — поддержка входа через Google, Apple и другие
  • Email/пароль — классическая аутентификация
  • JWT токены — хранятся в cookies
  • Middleware — автоматическая проверка сессии на каждом запросе

Файлы аутентификации:

  • frontend/src/lib/authService.ts — сервис управления сессиями
  • frontend/src/middleware.js — middleware для проверки авторизации
  • frontend/src/components/auth/ — UI компоненты входа/регистрации

📧 Email-рассылка

Для отправки уведомлений используется Nodemailer:

  • Подтверждение бронирования
  • Уведомления администратору
  • Верификация email

Локальное тестирование почты

bun run maildev

Веб-интерфейс: http://localhost:1080

API endpoints для отправки писем

  • POST /api/send-email — произвольное письмо
  • POST /api/send-booking-confirmation — подтверждение бронирования
  • POST /api/send-admin-notification — уведомление администратора

🗄️ База данных и миграции

PocketBase использует SQLite. Миграции хранятся в backend/pb_migrations/.

Применение миграций

bun run backend:migrate

Основные коллекции

  • users — пользователи
  • posts — статьи блога
  • faq_items — FAQ
  • slider_cars — слайдер автомобилей
  • premium_fleet — премиум автопарк
  • vip_services — VIP услуги
  • reviews — отзывы
  • pages — статические страницы
  • site_settings — настройки сайта

🔧 Переменные окружения

Frontend (.env)

# PocketBase
POCKETBASE_URL=http://localhost:8090

# Почта (SMTP)
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_FROM=no-reply@minv-berlin.de
ADMIN_EMAIL=admin@minivan-berlin.de

⚠️ Важно: В продакшене замените localhost на реальные адреса и используйте безопасные SMTP-настройки.

🌐 Сайт

Основной домен: https://minivan-berlin.de

Страницы сайта

  • Главная (/)
  • О нас (/ueber-uns)
  • Цены (/preise)
  • Премиум флот (/premium-flotte)
  • VIP услуги (/vip-services)
  • Блог (/blog)
  • Отзывы (/bewertungen)
  • Партнёры (/partner)
  • Карьера (/karriere)
  • Контакты (/kontakt)
  • Помощь (/hilfe)
  • AGB, Datenschutz, Impressum

📝 Скрипты npm

Команда Описание
bun run dev Запуск фронтенда и бэкенда
bun run dev:all Запуск всех сервисов (включая maildev)
bun run frontend:dev Только фронтенд
bun run frontend:build Сборка фронтенда
bun run frontend:start Preview собранного фронтенда
bun run backend:dev Только бэкенд (PocketBase)
bun run backend:migrate Применение миграций БД
bun run maildev Запуск почтового сервера
bun run build Сборка проекта
bun run start Запуск продакшен-версии

🐳 Docker

Проект включает Dockerfile для контейнеризации:

  • frontend/Dockerfile — образ для Astro приложения
  • backend/Dockerfile — образ для PocketBase

📚 Документация

📄 Лицензия

ISC