architect/_archive/2025-11-26-cleanup/platform/PROJECT-TYPES.md

Типология проектов в Claude Workspace

Версия: 1.0.0
Дата: 2025-11-13
Статус: Финальная версия ✅


🗂️ Все типы проектов

В workspace существует 5 основных типов проектов, которые определяются по префиксу названия:

projects/
├── marketplace/                # 1. LOCAL (без префикса)
├── @infra-prod-rf/            # 2. INFRASTRUCTURE (@infra-)
├── @remote-beget-kondurov/    # 3. REMOTE SERVER (@remote-)
├── @service-stripe/           # 4. EXTERNAL SERVICE (@service-) - с API
└── @web-beget-panel/          # 5. WEB SERVICE (@web-) - только Web UI

1️⃣ LOCAL PROJECT (локальная разработка)

Префикс: Нет (обычное имя)

Назначение: Разработка приложений на этом сервере (dev workspace)

Примеры:
- marketplace - Streamlit MVP приложение
- analytics - аналитическая панель
- crm - система управления клиентами

Структура:

projects/{name}/
├── design/
│   ├── PROJECT.md          # Цель, описание
│   ├── ROADMAP.md          # План развития
│   └── ARCHITECTURE.md     # Архитектурные решения
│
├── management/
│   ├── README.md           # Quick start
│   └── CHANGELOG.md        # История изменений
│
├── solution/
│   ├── mvp/                # MVP версия
│   ├── backend/            # Backend API
│   └── mobile/             # Mobile app
│
└── infrastructure/
    ├── DEPLOYMENT.md       # Куда деплоить
    └── SERVER.md           # Требования к серверу

Типичные задачи:
- ✅ Разработка кода
- ✅ Тестирование
- ✅ Документирование
- ✅ Деплой на production

Команды:

# Запустить приложение
cd /opt/claude-workspace/projects/marketplace/solution/mvp/code/
./start.sh

# Тесты
pytest tests/

# Деплой
./deploy.sh

2️⃣ INFRASTRUCTURE PROJECT (управление своим сервером)

Префикс: @infra-

Назначение: Управление целым сервером с root доступом

Примеры:
- @infra-dev-pro - Dev Control Plane (91.218.142.168)
- @infra-prod-rf - Production Server (45.144.177.147)

Структура:

projects/@infra-{name}/
├── design/
   ├── PROJECT.md          # Роль сервера
   └── ARCHITECTURE.md     # Архитектура, ADR

├── management/
   ├── README.md           # Quick start команды
   └── TODO.md             # Задачи

├── infrastructure/
   ├── SERVER.md           # 🔑 IP, SSH, характеристики
   ├── DOMAINS.md          # Список доменов + SSL
   └── STACKS.md           # Docker стеки, сервисы

└── solution/scripts/       # Скрипты управления
    ├── backup.sh
    ├── health-check.sh
    └── deploy.sh

Типичные задачи:
- ✅ Настройка ОС, безопасность
- ✅ Управление Docker контейнерами
- ✅ Настройка доменов и SSL
- ✅ Мониторинг и бэкапы
- ✅ Firewall, fail2ban

Ключевое отличие: Root доступ, можем делать всё что угодно на сервере

Команды:

# Подключение
ssh root@45.144.177.147

# Проверка всех Docker стеков
for stack in /opt/*-stack; do
  cd $stack && docker compose ps
done

# Мониторинг
docker stats --no-stream
free -h
df -h

3️⃣ REMOTE SERVER PROJECT (удалённый сервер)

Префикс: @remote-

Назначение: Работа с чужими серверами или хостингами (ограниченный доступ)

Примеры:
- @remote-beget-kondurov - Shared hosting Beget
- @remote-client-vps - VPS клиента
- @remote-cloud-aws - EC2 instance в AWS

Структура:

projects/@remote-{name}/
├── design/
   └── PROJECT.md          # Описание сервера

├── management/
   └── README.md           # Команды управления

├── infrastructure/
   ├── CONNECTION.md       # 🔑 SSH доступ, credentials
   └── SERVER.md           # Характеристики, ограничения

└── projects/               # Приложения на этом сервере
    ├── wordpress-site/
       ├── TYPE.md        # type: web-folder
       ├── LOCATION.md    # path: /var/www/site/
       ├── COMMANDS.md    # Как управлять
       └── NOTES.md       # DB, admin пароли
    
    ├── shop-app/
       ├── TYPE.md        # type: docker-compose
       └── LOCATION.md    # path: /opt/shop-stack/
    
    └── python-api/
        ├── TYPE.md        # type: systemd
        └── LOCATION.md    # path: /opt/api/

Типы проектов на сервере (TYPE.md):

  1. docker-compose - Docker стек
    yaml type: docker-compose location: /opt/shop-stack/ commands: start: "docker compose up -d" logs: "docker compose logs -f"

  2. web-folder - PHP/WordPress/Drupal сайт
    yaml type: web-folder location: /var/www/wordpress/ web_server: apache2 commands: restart: "systemctl restart apache2"

  3. systemd - Системный сервис
    yaml type: systemd location: /opt/python-api/ service_name: python-api commands: restart: "systemctl restart python-api"

  4. static - Статичные файлы
    yaml type: static location: /var/www/html/landing/ web_server: nginx

Типичные задачи:
- ✅ Просмотр логов приложений
- ✅ Перезапуск сервисов
- ✅ Деплой обновлений
- ✅ Работа с БД (бэкапы, запросы)
- ❌ Настройка ОС (ограничен доступ)

Ключевое отличие: Ограниченный доступ (нет root), работаем только с приложениями

Подтипы:

3.1. Shared Hosting (Beget, Timeweb)

3.2. VPS/Cloud (DigitalOcean, AWS EC2)

Команды:

# Подключение
ssh username@remote-server.com

# Просмотр логов сайта
tail -f ~/domain.com/logs/error.log

# Перезапуск Docker проекта
cd ~/shop-stack && docker compose restart

# Деплой файлов
scp -r ./build/ username@server:~/domain.com/public_html/

4️⃣ EXTERNAL SERVICE PROJECT (внешний API/сервис)

Префикс: @service-

Назначение: Интеграция с внешними сервисами через API или Web UI

Примеры:
- @service-stripe - Платёжная система Stripe
- @service-aws - Amazon Web Services
- @service-github - GitHub API
- @service-supabase - Supabase БД

Структура:

projects/@service-{name}/
├── design/
   └── PROJECT.md          # Зачем используем

├── management/
   ├── README.md           # Quick start интеграции
   └── API.md              # Документация API

├── infrastructure/
   ├── CONNECTION.md       # 🔑 API credentials
      # Endpoint: https://api.service.com
      # API Key: sk_live_xxxxx
      # Rate limits: 100 req/sec
   
   ├── WEBHOOKS.md         # Настроенные webhooks
   └── LIMITS.md           # Квоты, тарифы

└── solution/integration/   # Примеры кода
    ├── python/
       └── example.py
    ├── javascript/
       └── example.js
    └── curl/
        └── examples.sh

Типичные задачи:
- ✅ Интеграция через API
- ✅ Настройка webhooks
- ✅ Мониторинг квот и лимитов
- ✅ Тестирование API
- ✅ Обработка ошибок

Подтипы:

4.1. API сервисы

4.2. Cloud платформы

4.3. SaaS платформы

Команды:

# Тест API
curl https://api.stripe.com/v1/charges \
  -u sk_live_xxxxx:

# Проверка квот (AWS CLI)
aws cloudwatch get-metric-statistics \
  --namespace AWS/Usage \
  --metric-name ResourceCount

# Список webhooks (Stripe CLI)
stripe webhooks list

5️⃣ WEB SERVICE PROJECT (веб-сервис без API)

Префикс: @web-

Назначение: Работа с сервисами через Web UI (без программного API доступа)

Примеры:
- @web-beget-panel - Панель управления Beget
- @web-cpanel-hosting - cPanel хостинга
- @web-analytics-ga - Google Analytics
- @web-grafana-monitoring - Grafana дашборды
- @web-wordpress-admin - WordPress админка

Структура:

projects/@web-{name}/
├── design/
   └── PROJECT.md          # Назначение, что мониторим

├── management/
   ├── README.md           # Как работать через веб
   └── PROCEDURES.md       # Частые процедуры

└── infrastructure/
    ├── CONNECTION.md       # 🔑 URL, login, password
       # URL: https://cp.beget.com/
       # Login: kondurov
       # Password: xxxxx
       # Type: web-only (no API)
       # 2FA: enabled/disabled
    
    ├── SCREENSHOTS.md      # Скриншоты интерфейса
    └── NOTES.md            # Важные настройки

Типичные задачи:
- ✅ Проверка состояния через дашборды
- ✅ Ручные настройки через UI
- ✅ Мониторинг метрик
- ✅ Управление через формы
- ❌ Автоматизация (нет API)

Ключевое отличие от @service-:
- @service- = есть API (можно автоматизировать)
- @web- = только Web UI (ручная работа)

Подтипы:

5.1. Панели управления хостингом

5.2. Аналитика и мониторинг

5.3. CMS админки

5.4. Корпоративные системы

Команды:

# Нет команд - только открыть браузер:
open https://cp.beget.com/

# Или сохранить процедуры:
# 1. Зайти на https://cp.beget.com/
# 2. Логин: kondurov, пароль из CONNECTION.md
# 3. Раздел "Домены" -> "Добавить домен"
# 4. ...

Пример CONNECTION.md:

# Connection: Beget Panel

## Web Access

**URL:** https://cp.beget.com/
**Login:** kondurov
**Password:** 12345!a
**2FA:** Disabled

## Quick Access

1. Открыть: https://cp.beget.com/
2. Ввести логин/пароль
3. Разделы:
   - SSH/SFTP доступ
   - Домены
   - Базы данных
   - Cron задачи

## Common Tasks

### Добавить домен
1. Меню "Домены"
2. "Добавить домен"
3. Указать домен и папку
4. Сохранить

### Создать БД
1. Меню "MySQL"
2. "Создать базу данных"
3. Указать имя и пароль
4. Сохранить

📊 Сравнительная таблица

Тип Префикс Доступ Что делаем CONNECTION.md Автоматизация
LOCAL нет Файловая система Разработка кода Не нужен ✅ Да
INFRA @infra- SSH (root) Управление сервером SSH в infrastructure/SERVER.md ✅ Да (скрипты)
REMOTE @remote- SSH (ограничен) Управление приложениями SSH в infrastructure/CONNECTION.md ✅ Да (SSH)
SERVICE @service- API Интеграция с API API key в infrastructure/CONNECTION.md ✅ Да (API)
WEB @web- Web UI только Ручная работа URL + login/pass в infrastructure/CONNECTION.md ❌ Нет (только UI)

🎯 Как выбрать тип проекта?

Вопрос 1: Где находится?

Вопрос 2: Какой доступ?

Вопрос 3: Что управляем?


📋 Примеры использования

Пример 1: У меня VPS с WordPress сайтами

Тип: @remote-

Почему: Есть SSH, но нет root (или не хочу управлять сервером целиком)

Создаём:

projects/@remote-my-vps/
├── infrastructure/CONNECTION.md
└── projects/
    ├── site1-wordpress/
    ├── site2-blog/
    └── site3-shop/

Пример 2: У меня dedicated сервер, хочу полный контроль

Тип: @infra-

Почему: Root доступ, буду настраивать ОС, Docker, домены

Создаём:

projects/@infra-my-dedicated/
├── infrastructure/
   ├── SERVER.md
   ├── DOMAINS.md
   └── STACKS.md
└── solution/scripts/

Пример 3: Хочу интегрировать Stripe для платежей

Тип: @service-

Почему: Работаем через API, нет SSH доступа

Создаём:

projects/@service-stripe/
├── infrastructure/CONNECTION.md  # API key
└── solution/integration/
    └── python/stripe-checkout.py

Пример 4: Разрабатываю новое приложение на текущем сервере

Тип: LOCAL (без префикса)

Почему: Код здесь, разрабатываю локально

Создаём:

projects/my-app/
├── design/
├── solution/mvp/
└── management/

Пример 5: Нужно работать с панелью Beget через браузер

Тип: @web-

Почему: Доступ только через Web UI, нет API

Создаём:

projects/@web-beget-panel/
├── infrastructure/
   └── CONNECTION.md  # URL, login, password
└── management/
    └── PROCEDURES.md  # Как делать через UI

🔄 Связь между типами

Типичный сценарий:

  1. LOCAL проект marketplace - разрабатываем код
  2. INFRA проект @infra-prod-rf - есть production сервер
  3. Деплой: В marketplace/infrastructure/DEPLOYMENT.md указываем ссылку на @infra-prod-rf
# marketplace/infrastructure/DEPLOYMENT.md

production:
  server: "@infra-prod-rf"
  location: "/opt/marketplace-stack/"
  deploy_command: "rsync -avz . root@45.144.177.147:/opt/marketplace-stack/"

🚀 Создание нового проекта

Команда для Claude:

# LOCAL проект
Claude, создать проект analytics используя шаблон streamlit-mvp-v1

# INFRA проект
Claude, создать @infra- проект для сервера my-prod

# REMOTE проект
Claude, создать @remote- проект для Beget хостинга

# SERVICE проект
Claude, создать @service- проект для Stripe API

📝 Правила именования

LOCAL проекты

INFRA проекты

REMOTE проекты

SERVICE проекты

WEB проекты


🔐 Безопасность credentials

Где хранить пароли и API ключи?

Всегда в: infrastructure/CONNECTION.md или infrastructure/CREDENTIALS.md

Опции безопасности:

  1. Открытый текст (если git private)
    yaml password: "mypassword123"

  2. Исключить из git
    bash echo "**/CONNECTION.md" >> .gitignore echo "**/CREDENTIALS.md" >> .gitignore

  3. Зашифровать (будущее улучшение)
    yaml password: "encrypted:base64encodedvalue"

  4. Ссылка на 1Password/Vault
    yaml password: "1password://vault/item/field"


📚 Связанные документы


Версия: 1.0.0
Дата: 2025-11-13
Статус: ✅ Финальная версия


Следующие шаги:
1. Создать шаблоны для @remote- и @service- проектов
2. Обновить platform/CLAUDE.md с этой типологией
3. Обновить PLATFORM_STATUS.md со списком всех проектов