chore: cleanup project

- Remove nodemailer (unused dependency)
- Remove .opencode folder (skills moved to Hermes)
- Remove .genkit folder (cache, not needed)
- Remove AGENTS.md (info moved to skills)
- Remove YANDEX_MAIL_SETUP.md (outdated)
- Add typecheck script to package.json
- Update bun.lockb
This commit is contained in:
Web-serfer 2026-05-11 22:56:51 +05:00
parent 7f1a146da7
commit 0f7a83c9e9
8 changed files with 6 additions and 376 deletions

View file

@ -1 +0,0 @@
{"version":"1.21.0"}

View file

@ -1,99 +0,0 @@
# avtourist
Проект: avtourist-surgut.ru — автоюрист в Сургуте.
Стек: Astro (SSR) + PocketBase + Tailwind CSS.
## Коллекции PocketBase
- `posts` — статьи блога
- `reviews` — отзывы
- `comments` — комментарии
- `cases` — кейсы
- `consultations` — консультации
- `users` — пользователи
- `post_votes` — голоса за посты
## Структура проекта
```
frontend/
├── src/
│ ├── pages/
│ │ ├── index.astro # Главная
│ │ ├── services/ # Услуги
│ │ ├── cases/ # Кейсы
│ │ ├── blog/ # Блог
│ │ ├── api/ # API эндпоинты
│ │ └── auth/ # Авторизация
│ ├── layouts/ # Layouts
│ ├── lib/ # PocketBase клиент
│ └── globalInterfaces.ts # Типы
```
## Категории блога
- ДТП
- Лишение прав
- Страховые споры
- Штрафы ГИБДД
- Возмещение ущерба
- Судебные дела
## Категории услуг
- Возврат прав
- Оспаривание штрафов
- Страховые споры (ОСАГО, КАСКО)
- ДТП и здоровье
- Представительство в суде
- Обжалование постановлений
## Категории кейсов
- insurance — страховые
- rights — лишение прав
- accident — ДТП
- court — судебные
- consultation — консультации
## Компоненты
Использовать готовые компоненты из проекта:
- ServiceCard — карточка услуги
- CaseCard — карточка кейса
- ReviewCard — карточка отзыва
- ArticleCard — карточка статьи
## Типы
Все типы определены в `frontend/src/globalInterfaces.ts`:
- Post
- Review
- Case
- DocumentItem
- CompanyInfo
## API-эндпоинты
- `/api/posts` — список постов
- `/api/posts/[slug]` — один пост
- `/api/reviews` — отзывы
- `/api/comments` — комментарии
- `/api/votes` — голоса
- `/api/consultation` — форма консультации
- `/api/auth/*` — авторизация
## Переменные окружения
```
PB_POCKETBASE_URL=http://127.0.0.1:8090
```
## Правила
1. Все запросы к PB — на сервере (frontmatter)
2. Использовать типы из globalInterfaces.ts
3. Не использовать any
4. Компоненты — только .astro с Tailwind
5. API-эндпоинты — в src/pages/api/

View file

@ -1 +0,0 @@
C:/Users/Serg/.config/opencode/skills

188
AGENTS.md
View file

@ -1,188 +0,0 @@
# Правила взаимодействия с Агентом
## Основные принципы
1. **Изменения в коде возможны только с явного разрешения пользователя**
- Перед внесением любых изменений в файлы ассистент должен получить подтверждение от пользователя
- Все изменения должны быть предварительно объяснены пользователю
- Перед решением конкретной задачи всегда составлять план
- После внесения изменений в код - проводить проверку - только после этого приступать к дальнейшему решению задачи
- **НЕ производить сборку проекта (`bun run build`) без явного разрешения пользователя**
2. **Прозрачность действий**
- Ассистент должен объяснить, какие изменения планируется внести
- Необходимо указать, в какие файлы будут внесены изменения
- Следует объяснить последствия предполагаемых изменений
- Внимательно читай промпт и не выходи за рамки описанных в нем измнений
3. **Безопасность кода**
- Все изменения должны проходить проверку на безопасность
- Не должны вноситься изменения, которые могут повредить функциональность приложения
- Рекомендуется создание резервных копий при значительных изменениях
4. **Согласование архитектурных решений**
- При внесении изменений, затрагивающих архитектуру приложения, необходима дискуссия с пользователем
- Предложения по улучшению архитектуры должны обсуждаться до реализации
5. **Работа с разными типами проектов**
- Уважать существующую архитектуру и стиль кода проекта
- Следовать установленным в проекте принципам и паттернам
6. **Использование Bun**
- Все команды должны выполняться с использованием Bun (bun install, bun dev, bun build и т.д.)
- При создании скриптов в package.json, они должны быть совместимы с Bun
7. **Язык общения**
- Всё общение с пользователем происходит на русском языке
8 **Проверка типов данных**
- Проверять проект на ошибки типизации через команду `bun run tsc --noEmit -p frontend/tsconfig.json`
- НЕ производить сборку проекта (`bun run build`) без явного разрешения пользователя
- В проекте не должно быть типов any
- Все интерфейсы компонентов прописывать в файле globalInterfaces.ts
- При работе с PocketBase использовать актуальные сигнатуры методов из файла `D:\Verstka\production\astro_minivan\frontend\node_modules\pocketbase\dist\pocketbase.es.d.ts`
9 **Плагин @astrojs/sitemap**
- Обязательно к установке в проект пакета @astrojs/sitemap
- Обязательно к созданию в проекте файл .nvmrc
## Технические правила (Astro)
1. **Structure проекта**
- Использовать рекомендуемую структуру Astro: src/components/, src/layouts/, src/pages/, src/styles/
- Файлы конфигурации: astro.config.mjs
2. **Разработка компонентов**
- Создавать .astro файлы для компонентов
- Использовать framework-specific компоненты (React, Vue, Svelte) при необходимости
- Использовать props для передачи данных
- Использовать встроенные компоненты Astro (<Markdown /> и т.д.)
3. **Роутинг и страницы**
- Использовать file-based routing в src/pages/
- Реализовывать динамические маршруты через [...slug].astro синтаксис
- Использовать getStaticPaths() для генерации статических страниц
- Создать страницу 404.astro для обработки ошибок
4. **Контент**
- Использовать Markdown (.md) или MDX (.mdx) для контентных страниц
- Использовать frontmatter в Markdown файлах
- Использовать content collections для организации контента
5. **Стилизация**
- Использовать scoped styling с <style> тегами в .astro файлах
- Использовать Tailwind CSS с интеграцией @astrojs/tailwind
- Использовать Tailwind утилитарные классы
- Использовать responsive дизайн (sm:, md:, lg: и т.д.)
- НИКОГДА не использовать директиву @apply
6. **Оптимизация производительности**
- Минимизировать client-side JavaScript
- Использовать client:* директивы для partial hydration:
- client:load для immediately needed interactivity
- client:idle для non-critical interactivity
- client:visible для components that should hydrate when visible
- Использовать lazy loading для изображений
- Использовать Astro Image component
7. **Data Fetching**
- Использовать Astro.props для передачи данных
- Использовать getStaticPaths() для fetching данных на этапе сборки
- Использовать Astro.glob() для работы с локальными файлами
8. **SEO и Meta теги**
- Использовать <head> тег для добавления meta информации
- Реализовать canonical URLs
- Использовать <SEO> компонент для reusable SEO
9. **Accessibility**
- Использовать семантический HTML
- Использовать ARIA атрибуты где необходимо
- Обеспечить keyboard navigation поддержку
10. **Тестирование**
- Реализовать unit тесты для utility функций
- Использовать end-to-end тестирование (Cypress)
- Реализовать visual regression тестирование если применимо
11. **Метрики производительности**
- Приоритизировать Core Web Vitals (LCP, FID, CLS)
- Использовать Lighthouse и WebPageTest для аудита производительности
- Реализовать performance budgets
## SEO рекомендации
### Оптимальное количество страниц
- **50-100 страниц** — хороший объём для тематики "автоюрист"
- Минимум 30-50 страниц с уникальным контентом
### Структура страниц
- Услуги (12 шт) — уже есть
- Кейсы — минимум 20-30 реальных примеров
- Блог — минимум 30-50 статей
- FAQ — 20-30 вопросов
- Городские страницы ("юрист в Сургуте", "возврат прав Сургут" и пр.)
### Требования к контенту
- Каждая страница с уникальным текстом (не шаблон)
- Длинные статьи в блог (3000-5000 слов)
- Реальные кейсы с описанием проблемы и решения
### Внутренние ссылки
- Связывать страницы между собой (услуги → кейсы → блог)
- Использовать sitemap для всех публичных страниц
## Ccылки на документацию
- URL документации Astro: https://docs.astro.build/en/getting-started/
- URL документации PocketBase: https://pocketbase.io/docs/
- URL документации SolidJS: https://docs.solidjs.com/solid-start/getting-started
- URL документации astro-icons: https://www.astroicon.dev/getting-started/
## Переменные окружения для Production (Coolify)
### PocketBase
```
PB_POCKETBASE_URL=https://avt-back.ru
PB_ADMIN_EMAIL=redibedi2019@gmail.com
PB_ADMIN_PASSWORD=Stalin4444
```
PB_POCKETBASE_URL=https://avt-back.ru
PB_ADMIN_EMAIL=redibedi2019@gmail.com
PB_ADMIN_PASSWORD=Stalin4444
```
### SMTP (Resend)
```
SMTP_HOST=smtp.resend.com
SMTP_PORT=465
SMTP_AUTH_USER=resend
SMTP_AUTH_PASS=re_bAXEq3JU_3ezUi6XvBci7Biz48eAavW4M
FROM_EMAIL=onboarding@resend.onlinemail.me
FROM_NAME=Автоюрист Сургут
```
### Site
```
SITE_URL=https://avtourist-surgut.ru
```
### Флаг production
```
PROD=true
```
### Как добавить в Coolify
1. Откройте Coolify → ваш проект
2. Перейдите App Settings → Environment Variables
3. Добавьте каждую переменную
4. Перезапустите контейнер
### SKILLS FOR AI
1. C:\Users\Serg\.config\opencode\skills - общие скилы для всех проектов
2. project/.opencode/skills/avtourist - скилы для конкретного проекта
3. answer-unit-optimization - скилы для AI SEO

View file

@ -1,82 +0,0 @@
# ============================================
# НАСТРОЙКА ПОЧТОВОГО СЕРВЕЯ ЯНДЕКС
# ============================================
## Вариант 1: Яндекс Mail (бесплатный)
### Настройки SMTP Яндекса:
- SMTP_HOST = smtp.yandex.ru
- SMTP_PORT = 587
- FROM_EMAIL = ваш_логин@yandex.ru
- FROM_NAME = Автоюрист Сургут
### Как получить пароль приложения:
1. Перейдите https://id.yandex.ru/security/
2. Войдите в аккаунт Яндекса
3. Перейдите в "Безопасность" → "Пароли приложений"
4. Нажмите "Создать пароль приложения"
5. Введите название (например, "SMTP сайт")
6. Выберите "Почта (SMTP)"
7. Скопируйте полученный пароль (16 символов)
### Значения для .env:
```
SMTP_HOST=smtp.yandex.ru
SMTP_PORT=587
FROM_EMAIL=ваш_логин@yandex.ru
FROM_NAME=Автоюрист Сургут
```
---
## Вариант 2: Яндекс 360 (для бизнеса)
Если используете Яндекс 360 для бизнеса (домен avtourist-surgut.ru):
### Настройки SMTP:
- SMTP_HOST = smtp.yandex.ru
- SMTP_PORT = 587
- FROM_EMAIL = info@avtourist-surgut.ru
- FROM_NAME = Автоюрист Сургут
### Как получить пароль:
1. Перейдите https://domain.yandex.ru/ (для вашего домена)
2. В разделе "Почта" → "Настройки почтового сервера"
3. Включите SMTP
4. Создайте пароль для внешних приложений
### Значения для .env:
```
SMTP_HOST=smtp.yandex.ru
SMTP_PORT=587
FROM_EMAIL=info@avtourist-surgut.ru
FROM_NAME=Автоюрист Сургут
```
---
## Проверка настроек
После настройки проверьте отправку писем:
1. Создайте тестовый файл send-test.ts
2. Запустите: npx tsx send-test.ts
Или через форму консультации на сайте.
---
## Ошибки и решения
### "535 Incorrect authentication data"
- Неправильный пароль приложения
- Проверьте, что пароль создан именно для "Почта (SMTP)"
### "530 5.7.0 Must issue a STARTTLS command first"
- Неправильный порт
- Используйте порт 587 (не 465)
### "Authentication required"
- Не включена двухэтапная аутентификация в Яндексе
- Включите её в https://id.yandex.ru/security/2fa/

BIN
bun.lockb

Binary file not shown.

View file

@ -9,7 +9,8 @@
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
"astro": "astro",
"typecheck": "astro check"
},
"dependencies": {
"@astrojs/mdx": "5.0.4",
@ -20,14 +21,14 @@
"astro": "6.2.1",
"astro-icon": "^1.1.5",
"marked": "^18.0.0",
"nodemailer": "^6.9.14",
"pocketbase": "^0.21.0",
"solid-js": "^1.9.12",
"tailwindcss": "^4.2.2"
},
"devDependencies": {
"@astrojs/check": "0.9.9",
"@types/nodemailer": "^6.4.16",
"terser": "^5.46.1",
"typescript": "^6.0.2"
}

View file

@ -16,11 +16,11 @@
"frontend"
],
"dependencies": {
"nodemailer": "^8.0.5",
"pocketbase": "^0.26.8"
},
"devDependencies": {
"@types/nodemailer": "^8.0.0",
"gray-matter": "^4.0.3",
"maildev": "^2.2.1"
}