first commit
This commit is contained in:
commit
7c46ee6909
107 changed files with 5563 additions and 0 deletions
163
frontend/README.md
Normal file
163
frontend/README.md
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
# Astro Frontend для Redi.dev
|
||||
|
||||
Современный веб-сайт-портфолио, разработанный на Astro с использованием PocketBase в качестве CMS.
|
||||
|
||||
## 🚀 Стек технологий
|
||||
|
||||
- **Astro 6** - фреймворк для создания быстрых сайтов
|
||||
- **TypeScript** - строгая типизация
|
||||
- **Tailwind CSS** - стилизация
|
||||
- **Solid.js** - реактивные компоненты
|
||||
- **PocketBase** - headless CMS и бэкенд
|
||||
- **Bun** - пакетный менеджер и рантайм
|
||||
- **Nanostores** - управление состоянием
|
||||
|
||||
## 📁 Структура проекта
|
||||
|
||||
```
|
||||
astro_redi/
|
||||
├── .env # Переменные окружения (в корне проекта!)
|
||||
├── frontend/ # Исходный код frontend части
|
||||
│ ├── public/ # Статические файлы
|
||||
│ ├── src/
|
||||
│ │ ├── assets/ # Стили, изображения
|
||||
│ │ ├── components/ # Astro и Solid.js компоненты
|
||||
│ │ ├── layouts/ # Макеты страниц
|
||||
│ │ ├── lib/ # Вспомогательные библиотеки (PocketBase клиент)
|
||||
│ │ ├── pages/ # Страницы приложения
|
||||
│ │ └── globalInterfaces.ts # Глобальные TypeScript интерфейсы
|
||||
│ ├── astro.config.mjs # Конфигурация Astro
|
||||
│ ├── package.json # Зависимости
|
||||
│ └── tsconfig.json # Конфигурация TypeScript
|
||||
├── astro_redidev/ # Резервная копия старой версии
|
||||
├── backend/ # Бэкенд часть (если есть)
|
||||
└── scripts/
|
||||
└── dev-server.js # Скрипт запуска локальных серверов
|
||||
```
|
||||
|
||||
## ⚙️ Переменные окружения
|
||||
|
||||
Файл `.env` должен находиться в **корне проекта** (`astro_redi/.env`):
|
||||
|
||||
```env
|
||||
# Локальная разработка
|
||||
PUBLIC_SITE_URL=http://localhost:4321
|
||||
PUBLIC_POCKETBASE_URL=http://127.0.0.1:8090
|
||||
|
||||
# Продакшен (раскомментировать при деплое)
|
||||
# PUBLIC_SITE_URL=https://redib.ru
|
||||
# PUBLIC_POCKETBASE_URL=http://pocketbase-y8oskk4kgkgko0s88c8c4oo0.144.124.229.64.sslip.io:8080
|
||||
```
|
||||
|
||||
## 🛠️ Установка и запуск
|
||||
|
||||
### Требования
|
||||
|
||||
- **Bun** (рекомендуется) или Node.js 22+
|
||||
- **PocketBase** (локально или удалённо)
|
||||
|
||||
### Локальная разработка
|
||||
|
||||
1. **Установите зависимости:**
|
||||
```bash
|
||||
bun install
|
||||
```
|
||||
|
||||
2. **Запустите PocketBase:**
|
||||
```bash
|
||||
# PocketBase должен быть запущен на порту 8090
|
||||
# Используйте скрипт dev-server.js для одновременного запуска
|
||||
node scripts/dev-server.js
|
||||
```
|
||||
|
||||
3. **Откройте браузер:**
|
||||
- Astro: http://localhost:4321
|
||||
- PocketBase Admin: http://localhost:8090/_/
|
||||
|
||||
### Сборка для продакшена
|
||||
|
||||
```bash
|
||||
bun run build
|
||||
```
|
||||
|
||||
### Продакшен запуск
|
||||
|
||||
```bash
|
||||
bun run start
|
||||
```
|
||||
|
||||
## 📊 Коллекции PocketBase
|
||||
|
||||
Проект использует следующие коллекции:
|
||||
|
||||
| Коллекка | Описание | Поля |
|
||||
|----------|----------|------|
|
||||
| `projects` | Проекты портфолио | `name`, `description`, `short_description`, `long_description`, `stack`, `image`, `url_site`, `github`, `order`, `isActive` |
|
||||
| `featured_projects` | Избранные проекты | `name`, `description`, `image`, `url`, `github`, `stack`, `featured`, `forSale`, `order`, `isActive` |
|
||||
| `posts` | Блог | `title`, `description`, `publishDate`, `tags`, `coverImage`, `coverImageAlt`, `isFeatured`, `isActive` |
|
||||
| `about` | Информация об авторе | `title`, `description`, `professional_experience`, `skills`, `contact_title`, `contact_description`, `whatsapp_link`, `email`, `image`, `alt_text`, `isActive` |
|
||||
| `navigation` | Навигация сайта | `items` (JSON) |
|
||||
|
||||
## 🌐 Изображения из PocketBase
|
||||
|
||||
Изображения загружаются напрямую из PocketBase по URL:
|
||||
|
||||
```
|
||||
{PUBLIC_POCKETBASE_URL}/api/files/{collection_id}/{record_id}/{filename}
|
||||
```
|
||||
|
||||
Пример:
|
||||
```
|
||||
http://127.0.0.1:8090/api/files/projects/t7i08mbfzuzp6e6/tech_news_ncqktq5j8r.avif
|
||||
```
|
||||
|
||||
## 📦 Деплой
|
||||
|
||||
### В Coolify
|
||||
|
||||
Проект настроен для деплоя в Coolify с использованием адаптера `@astrojs/node`:
|
||||
|
||||
1. Укажите переменные окружения в Coolify:
|
||||
- `COOLIFY_FQDN` — домен приложения
|
||||
- `COOLIFY_URL` — URL приложения
|
||||
- `PUBLIC_SITE_URL` — публичный URL сайта
|
||||
- `PUBLIC_POCKETBASE_URL` — URL PocketBase
|
||||
|
||||
2. Команды сборки и запуска:
|
||||
- Build: `bun run build`
|
||||
- Start: `bun run start`
|
||||
- Install: `bun install`
|
||||
|
||||
### Другие платформы
|
||||
|
||||
Проект совместим с:
|
||||
- Vercel
|
||||
- Netlify
|
||||
- Cloudflare Pages
|
||||
- Любые VPS с Node.js/Bun
|
||||
|
||||
## 🔧 Скрипты
|
||||
|
||||
| Команда | Описание |
|
||||
|---------|----------|
|
||||
| `bun install` | Установка зависимостей |
|
||||
| `bun run dev` | Запуск режима разработки |
|
||||
| `bun run build` | Сборка проекта |
|
||||
| `bun run start` | Запуск продакшен версии |
|
||||
| `bun run astro check` | Проверка типов TypeScript |
|
||||
|
||||
## 📝 Особенности реализации
|
||||
|
||||
- **SSR (Server-Side Rendering)** — динамические страницы рендерятся на сервере
|
||||
- **Статическая генерация** — пагинация проектов генерируется при сборке
|
||||
- **Оптимизация изображений** — ленивая загрузка, правильные размеры
|
||||
- **SEO** — sitemap, метатеги, семантическая разметка
|
||||
- **Тёмная тема** — автоматическое переключение по системным настройкам
|
||||
- **Адаптивный дизайн** — мобильная версия, планшет, десктоп
|
||||
|
||||
## 👨💻 Автор
|
||||
|
||||
**RediBedi** — веб-разработчик, специализирующийся на Astro и современных frontend технологиях.
|
||||
|
||||
- Портфолио: [redib.ru](https://redib.ru)
|
||||
- GitHub: [RediBedi](https://github.com/RediBedi)
|
||||
Loading…
Add table
Add a link
Reference in a new issue