diff --git a/main_dc/yalarba/easySite/easySite/documentation/docs.md b/main_dc/yalarba/easySite/easySite/documentation/docs.md new file mode 100644 index 0000000..59124c4 --- /dev/null +++ b/main_dc/yalarba/easySite/easySite/documentation/docs.md @@ -0,0 +1,428 @@ +# πŸ“š ДокумСнтация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° EasySite + +## πŸ—οΈ ΠžΠ±Ρ‰Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° + +**EasySite** - это полноцСнная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания сайтов, построСнная Π½Π° Nuxt.js 3 с использованиСм server-side rendering ΠΈ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ сайтов. + +### ВСхнологичСский стСк: +- **Frontend**: Nuxt.js 3, Vue 3, TypeScript +- **Backend**: Nuxt Server (API Routes) (Golang, gorm, chi) +- **Бтилизация**: ΠšΠ°ΡΡ‚ΠΎΠΌΠ½Ρ‹Π΅ CSS-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ +- **SEO**: АвтоматичСская sitemap, ΠΌΠ΅Ρ‚Π°-Ρ‚Π΅Π³ΠΈ +- **Π”Π΅ΠΏΠ»ΠΎΠΉ**: Node.js сСрвСр + +--- + +## πŸ“ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° прилоТСния + +### ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ (Routing) + +#### ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹: + +**ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ страницы:** +- `/` - Главная страница с CTA ΠΈ шагами создания сайта +- `/about` - Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° "О ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ" с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ +- `/contact` - ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ +- `/news` - Новости +- `/objects` - ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²/сайтов +- `/partner` - ΠŸΠ°Ρ€Ρ‚Π½Π΅Ρ€ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° +- `/requisites` - Π Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ +- `/reviews` - ΠžΡ‚Π·Ρ‹Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ +- `/rules` - ΠŸΡ€Π°Π²ΠΈΠ»Π° использования +- `/support` - ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° +- `/vacations` - ВозмоТности/прСдлоТСния + +**Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ соглашСний:** +- `/agreements/privacy` - ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ +- `/agreements/userAgreement` - ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ соглашСниС + +**АутСнтификация:** +- `/auth/login` - Π’Ρ…ΠΎΠ΄ Π² систСму +- `/auth/register` - РСгистрация + +**ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Π·ΠΎΠ½Π°:** +- `/profile` - ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ +- `/profile/edit` - Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ профиля +- `/profile/settings` - Настройки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° +- `/objects/create` - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° +- `/objects/my-objects` - Мои ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹/сайты +- `/reviews/write` - НаписаниС ΠΎΡ‚Π·Ρ‹Π²Π° +- `/support/create` - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ обращСния Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ + +**Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅:** +- `/plugins/auth` - Плагин Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ + +--- + +## 🎯 БизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° + +### 1. ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания сайта (3 шага) + +#### Π¨Π°Π³ 1: РСгистрация (`/auth/register`) +```typescript +// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ рСгистрации +interface RegisterData { + email: string; + password: string; + confirmPassword: string; + // ... Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля +} + +// Валидация: +// 1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ email +// 2. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пароля +// 3. БогласиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ соглашСниСм +// 4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π° +``` + +#### Π¨Π°Π³ 2: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ услуг (`/objects/create`) +```typescript +interface Service { + id: string; + title: string; + description: string; + category: string; + price?: number; + images: string[]; + features: string[]; + // ... Π΄Ρ€ΡƒΠ³ΠΈΠ΅ поля +} + +// ΠŸΡ€ΠΎΡ†Π΅ΡΡ: +// 1. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ заполняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± услугах +// 2. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ +// 3. ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ +// 4. Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… +``` + +#### Π¨Π°Π³ 3: ГСнСрация сайта (`/objects/my-objects`) +```typescript +// АвтоматичСская гСнСрация Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚: +// 1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ URL (ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΡŒ) +// 2. ГСнСрация HTML-страниц Π½Π° основС шаблонов +// 3. НаполнСниС ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ ΠΈΠ· профиля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ +// 4. SEO-оптимизация +// 5. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π½Π° хостингС +``` + +--- + +## πŸ” БистСма Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ + +### Π€Π°ΠΉΠ»Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: +``` +server/ +β”œβ”€β”€ api/ +β”‚ β”œβ”€β”€ auth/ +β”‚ β”‚ β”œβ”€β”€ login.post.ts # POST /api/auth/login +β”‚ β”‚ β”œβ”€β”€ register.post.ts # POST /api/auth/register +β”‚ β”‚ └── logout.post.ts # POST /api/auth/logout +β”œβ”€β”€ middleware/ +β”‚ β”œβ”€β”€ auth.ts # Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ middleware +└── utils/ + └── auth.ts # Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ +``` + +### Flow Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: +1. **РСгистрация** β†’ созданиС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° + email вСрификация +2. **Π’Ρ…ΠΎΠ΄** β†’ JWT Ρ‚ΠΎΠΊΠ΅Π½ + refresh Ρ‚ΠΎΠΊΠ΅Π½ +3. **Π—Π°Ρ‰ΠΈΡ‚Π° Ρ€ΠΎΡƒΡ‚ΠΎΠ²** β†’ middleware ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° +4. **Π’Ρ‹Ρ…ΠΎΠ΄** β†’ инвалидация Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ² + +--- + +## πŸ—ΊοΈ ΠšΠ°Ρ€Ρ‚Π° сайта (Sitemap) + +### ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ (`nuxt.config.ts`) +```typescript +sitemap: { + siteUrl: 'https://easysite102.ru', + sources: ['/api/__sitemap__/urls'], // ДинамичСскиС URL + exclude: ['/admin/**', '/private/**'], + defaults: { + changefreq: 'daily', + priority: 0.7, + lastmod: new Date().toISOString() + } +} +``` + +### ГСнСрация динамичСских URL: +```typescript +// server/api/__sitemap__/urls.ts +export default defineEventHandler(async () => { + const objects = await db.objects.findMany({ + where: { published: true } + }) + + return objects.map(object => ({ + loc: `/objects/${object.slug}`, + lastmod: object.updatedAt, + changefreq: 'weekly' + })) +}) +``` + +--- + +## 🎨 ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ страницы + +### Главная страница (`index.vue`) +**ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:** +- Hero-сСкция с gradient text +- 3-ΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ процСсс создания сайта +- Адаптивный Π΄ΠΈΠ·Π°ΠΉΠ½ (mobile-first) +- SEO-оптимизация Ρ‡Π΅Ρ€Π΅Π· `useSeoMeta()` + +### Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° "О нас" (`about.vue`) +**Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°:** +1. Hero сСкция с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ +2. Π‘Π»ΠΎΠΊ "Наш ΠΏΡƒΡ‚ΡŒ" (тСкст + статистика) +3. Команда (тСкущая + ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ) +4. ЦСнности ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ +5. CTA сСкция + +**SEO настройки:** +```typescript +useSeoMeta({ + title: 'О ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ - EasySite', + description: 'Π£Π·Π½Π°ΠΉΡ‚Π΅ большС ΠΎ нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ...', + ogTitle: 'О ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ - EasySite', + ogDescription: 'Π£Π·Π½Π°ΠΉΡ‚Π΅ большС...', +}) +``` + +--- + +## 🎯 ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы + +### 1. Layout систСма (`layouts/default.vue`) +```vue + +``` + +### 2. Навигация +- Π“Π»Π°Π²Π½ΠΎΠ΅ мСню для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… страниц +- Π‘ΠΎΠΊΠΎΠ²ΠΎΠ΅ мСню для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ +- Breadcrumbs для слоТных ΠΏΡƒΡ‚Π΅ΠΉ + +### 3. Π€ΠΎΡ€ΠΌΡ‹ +- РСгистрация/авторизация +- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° +- Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ профиля +- НаписаниС ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² +- ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΡ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ + +--- + +## πŸ› οΈ API Endpoints + +### ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ API: +``` +GET /api/objects # Бписок ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² +GET /api/objects/:id # Π”Π΅Ρ‚Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° +GET /api/reviews # ΠžΡ‚Π·Ρ‹Π²Ρ‹ +GET /api/news # Новости +``` + +### Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ API: +``` +POST /api/auth/login # Π’Ρ…ΠΎΠ΄ +POST /api/auth/register # РСгистрация +POST /api/auth/logout # Π’Ρ‹Ρ…ΠΎΠ΄ + +GET /api/profile # ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ +PUT /api/profile # ОбновлСниС профиля + +POST /api/objects # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° +GET /api/user/objects # Мои ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ +PUT /api/objects/:id # ОбновлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° +DELETE /api/objects/:id # Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° + +POST /api/reviews # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΡ‚Π·Ρ‹Π²Π° +POST /api/support/tickets # ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ +``` + +--- + +## πŸ—οΈ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΏΡ€ΠΈΠΌΠ΅Ρ€) + +```sql +-- ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ +CREATE TABLE users ( + id UUID PRIMARY KEY, + email VARCHAR(255) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + name VARCHAR(100), + avatar_url TEXT, + verified BOOLEAN DEFAULT false, + created_at TIMESTAMP DEFAULT NOW(), + updated_at TIMESTAMP +); + +-- ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹/Π‘Π°ΠΉΡ‚Ρ‹ +CREATE TABLE objects ( + id UUID PRIMARY KEY, + user_id UUID REFERENCES users(id), + title VARCHAR(255) NOT NULL, + slug VARCHAR(255) UNIQUE NOT NULL, + description TEXT, + template_id VARCHAR(50), + status VARCHAR(50) DEFAULT 'draft', + settings JSONB, + published_at TIMESTAMP, + created_at TIMESTAMP DEFAULT NOW() +); + +-- Услуги +CREATE TABLE services ( + id UUID PRIMARY KEY, + object_id UUID REFERENCES objects(id), + title VARCHAR(255) NOT NULL, + description TEXT, + price DECIMAL(10,2), + position INTEGER +); +``` + +--- + +## πŸš€ Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ + +### ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния: +```env +# Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… +DATABASE_URL=postgresql://... + +# JWT +JWT_SECRET=your_jwt_secret_key +JWT_REFRESH_SECRET=your_refresh_secret_key + +# Email +SMTP_HOST=smtp.gmail.com +SMTP_PORT=587 +SMTP_USER=your_email@gmail.com +SMTP_PASS=your_app_password + +# Π”ΠΎΠΌΠ΅Π½Ρ‹ +BASE_URL=https://easysite102.ru +CLIENT_URL=https://easysite102.ru + +# Telegram увСдомлСния +TELEGRAM_BOT_TOKEN=your_bot_token +TELEGRAM_CHAT_ID=your_chat_id +``` + +### ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ для запуска: +```bash +# Установка +npm install + +# Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° +npm run dev + +# Π‘Π±ΠΎΡ€ΠΊΠ° +npm run build + +# ΠŸΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½ +npm run preview + +# Π”Π΅ΠΏΠ»ΠΎΠΉ +npm run deploy +``` + +--- + +## πŸ“ˆ ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° + +### ВстроСнныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ: +1. **SEO ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ** - Ρ‡Π΅Ρ€Π΅Π· sitemap ΠΈ meta Ρ‚Π΅Π³ΠΈ +2. **ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ** - Lighthouse scores +3. **Аналитика** - Google Analytics/Tag Manager +4. **Ошибки** - Sentry/Bugsnag + +### ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡ: +```typescript +// Плагин для Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ +// plugins/analytics.ts +export default defineNuxtPlugin(() => { + // Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΈ + useGtag({ + config: { id: 'G-XXXXXXXXXX' } + }) +}) +``` + +--- + +## πŸ›‘οΈ Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ + +### Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹: +1. **CSRF Π·Π°Ρ‰ΠΈΡ‚Π°** - для всСх POST запросов +2. **XSS Π·Π°Ρ‰ΠΈΡ‚Π°** - санитизация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° +3. **SQL ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΈ** - использованиС ORM с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ запросами +4. **JWT Ρ‚ΠΎΠΊΠ΅Π½Ρ‹** - с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ +5. **Rate limiting** - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ запросов +6. **CORS ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ** - настройка Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² + +--- + +## πŸ”§ Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° + +### ΠŸΠ»Π°Π½Ρ‹ развития: +1. **Π¨Π°Π±Π»ΠΎΠ½Ρ‹ сайтов** - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ² +2. **ΠœΡƒΠ»ΡŒΡ‚ΠΈΡΠ·Ρ‹Ρ‡Π½ΠΎΡΡ‚ΡŒ** - i18n ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° +3. **ΠŸΠ»Π°Ρ‚Π΅ΠΆΠ½Π°Ρ систСма** - подписки ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ +4. **Аналитика сайтов** - статистика посСщСний +5. **МобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅** - Ρ‡Π΅Ρ€Π΅Π· Capacitor/PWA + +--- + +## πŸ“‹ ЧСклист для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° + +1. [ ] Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Node.js 18+ +2. [ ] ΠšΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ +3. [ ] Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ зависимости `npm install` +4. [ ] ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ `.env` Ρ„Π°ΠΉΠ» +5. [ ] Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π‘Π” (PostgreSQL) +6. [ ] Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ `npm run db:migrate` +7. [ ] Π—Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ dev сСрвСр `npm run dev` +8. [ ] ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ `localhost:3000` +9. [ ] ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ +10. [ ] ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ сайта + +--- + +## πŸ†˜ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ устранСниС нСисправностСй + +### ЧастыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: + +1. **Sitemap Π½Π΅ гСнСрируСтся** + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ настройки Π² `nuxt.config.ts` + - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ `siteUrl` ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ `/api/__sitemap__/urls` + +2. **АутСнтификация Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚** + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ JWT сСкрСты + - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ middleware + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ cookies настройки + +3. **НС Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ изобраТСния** + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ `@nuxt/image` + - Π£Π±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡƒΡ‚Π΅ΠΉ + - ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²Π° доступа + +### ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ: +- **Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ**: Π’Π°Π»ΠΈΡ‚ΠΎΠ² Π“Π°Π·ΠΈΠ· (https://valitovgaziz.ru) +- **Telegram Π±ΠΎΡ‚**: Π§Π°Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ +- **Email ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°**: support@easysite102.ru + +--- + +Π­Ρ‚Π° докумСнтация ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ основныС аспСкты ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° EasySite. Для Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ модулям ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ сСкции Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. \ No newline at end of file