# 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/)