astro_redi/README.md
2026-03-28 16:51:42 +05:00

144 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Astro Redi
Монорепозиторий образовательной платформы Redi с курсами и материалами для обучения.
## Описание проекта
Проект представляет собой полнофункциональное веб-приложение с разделением на frontend и backend части:
- **Frontend**: Современное SSR-приложение на Astro с интеграцией SolidJS для интерактивных компонентов
- **Backend**: PocketBase — легковесная backend-платформа для управления данными и аутентификации
## Технологический стек
### Frontend
- **Astro 6** — фреймворк для генерации статических и серверных сайтов
- **SolidJS** — реактивная библиотека для интерактивных компонентов
- **Tailwind CSS** — утилитарный CSS-фреймворк
- **TypeScript** — строгая типизация без использования `any`
- **PocketBase SDK** — клиент для взаимодействия с backend
- **Astro Icon** — работа с иконками
- **Nanostores** — легковесное управление состоянием
- **Sharp** — обработка изображений
### Backend
- **PocketBase** — backend-решение с реальной базой данных и API
## Структура проекта
```
astro_redi/
├── backend/ # Backend на PocketBase
│ ├── pb_data/ # Данные PocketBase (БД, файлы)
│ └── pb_migrations/ # Миграции схемы базы данных
├── frontend/ # Frontend на Astro
│ ├── public/ # Статические файлы
│ ├── src/
│ │ ├── assets/ # Изображения, шрифты и другие ассеты
│ │ ├── components/ # UI-компоненты
│ │ │ ├── about/ # Компоненты страницы "О компании"
│ │ │ ├── base/ # Базовые компоненты
│ │ │ ├── blog/ # Компоненты блога
│ │ │ ├── courses/ # Компоненты курсов
│ │ │ ├── home/ # Компоненты главной страницы
│ │ │ ├── layout/ # Компоненты макета (header, footer)
│ │ │ └── projects/ # Компоненты проектов
│ │ ├── icons/ # Иконки приложения
│ │ ├── layouts/ # Макеты страниц
│ │ ├── lib/ # Утилиты и вспомогательные функции
│ │ ├── pages/ # Страницы приложения
│ │ │ ├── api/ # API endpoints
│ │ │ ├── blog/ # Страницы блога
│ │ │ ├── courses/ # Страницы курсов
│ │ │ └── projects/ # Страницы проектов
│ │ ├── stores/ # Хранилища состояния (Nanostores)
│ │ ├── env.d.ts # TypeScript декларации для окружения
│ │ └── globalInterfaces.ts # Глобальные TypeScript интерфейсы
│ ├── astro.config.mjs # Конфигурация Astro
│ ├── tailwind.config.mjs # Конфигурация Tailwind CSS
│ └── tsconfig.json # Конфигурация TypeScript
├── scripts/ # Скрипты для разработки и сборки
│ ├── dev-server.js # Скрипт запуска frontend и backend
│ └── stop-server.js # Скрипт остановки серверов
├── package.json # Корневой package.json
└── QWEN.md # Правила разработки проекта
```
## Страницы приложения
- **Главная** (`/`) — основная страница с информацией о платформе
- **О компании** (`/about`) — информация о платформе Redi
- **Курсы** (`/courses`) — каталог образовательных курсов
- Страница курса (`/courses/[slug]`) — детальная информация о курсе
- **Проекты** (`/projects`) — выполненные проекты
- **Блог** (`/blog`) — статьи и публикации
## Архитектурные особенности
- **SSR (Server-Side Rendering)** — рендеринг на стороне сервера через Node.js adapter
- **Компонентный подход** — разделение компонентов по функциональным областям
- **Строгая типизация** — TypeScript без использования `any`, все интерфейсы в `globalInterfaces.ts`
- **Модульность** — алиасы импортов для удобной навигации по коду
- **SEO-оптимизация** — интеграция `@astrojs/sitemap` для индексации
- **Обработка контента** — утилита `processHtmlContent` для обработки HTML-контента из PocketBase
- **Адаптивная верстка** — Tailwind CSS с типографикой
## Установка и запуск
### Требования
- **Bun** — пакетный менеджер и рантайм
- **PocketBase** — для запуска backend
### Установка зависимостей
```bash
bun run install:all
```
### Запуск в режиме разработки
```bash
# Запуск обоих серверов (frontend + backend)
bun run dev
# Или раздельно:
bun run frontend # Только frontend
bun run backend # Только backend
```
### Сборка проекта
```bash
bun run build
```
### Форматирование и линтинг
```bash
bun run format # Форматирование кода через Biome
bun run lint # Проверка кода через Biome
bun run lint:fix # Автоматическое исправление ошибок
```
## Инфраструктура
- **Bun** — пакетный менеджер и рантайм
- **Biome** — линтер и форматтер кода
- **Git** — система контроля версий
- **Node.js adapter** — для запуска SSR в режиме standalone
## Переменные окружения
Основная переменная окружения:
- `PUBLIC_SITE_URL` — URL сайта для sitemap (по умолчанию `https://redib.ru`)
## Ссылки
- [Документация Astro](https://docs.astro.build/en/getting-started/)
- [Документация PocketBase](https://pocketbase.io/docs/)
- [Документация SolidJS](https://docs.solidjs.com/solid-start/getting-started)
- [Документация Astro Icon](https://www.astroicon.dev/getting-started/)