projector/types/it/it-structure.md

type: standard
layer: proj
object: project-it
aspect: structure
form: table
title: "IT-проект: двумерная модель тип × стек"
status: active
version: 1.0.0
date: 2026-04-14
knowledge_level: У1
parent: ../../lifecycle/project-lifecycle.md
supersedes: arch-project-it-structure.md
deps:
- ../../lifecycle/project-lifecycle.md
- ../../rules/project-structure.md


IT-проект: двумерная модель

IT-проект определяется по двум осям: тип системы (что строим) × стек (на чём строим). Без обеих координат нет формальной основы для выбора кодера, шаблона и паттернов деплоя.


1. ДВЕ ОСИ

         СТЕК →
         {стек-A}  {стек-B}  {стек-C}  ...
ТИП  ↓
web-cms    ✅        —         —
web-api    —         ✅        —
web-ui     —         —         ✅
bot        —         ✅        —
web-shop   ✅        —         ✅

Тип = назначение системы (что делает для бизнеса)
Стек = технология реализации (на чём написано)

Одна точка на плоскости = конкретный вид IT-проекта.


2. РЕЕСТР ТИПОВ СИСТЕМ

ID типа Описание
web-cms Контент-система, публичный сайт
web-shop Интернет-магазин с корзиной и оплатой
web-api REST/GraphQL API без UI
web-ui Frontend SPA/SSR
bot Telegram-бот / webhook
data-pipeline ETL, импорт, обработка данных
integration Коннектор между системами
platform-service Сервис платформы (не проект)

3. КАК ОПРЕДЕЛИТЬ ТИП ПРОЕКТА

1. Нужен публичный URL?
   Да  веб-тип (web-cms / web-shop / web-api / web-ui)
   Нет  сервис-тип (bot / data-pipeline / integration)

2. Есть корзина и оплата?
   Да  web-shop
   Нет, но есть контент  web-cms

3. Нужен API?
   Только API  web-api
   API + UI  web-api + web-ui (два проекта)

4. Это бот?  bot

5. Обработка данных?  data-pipeline / integration

4. ОБЪЯВЛЕНИЕ В ПРОЕКТЕ

index.yaml:

type: it
system_type: {тип из §2}
stack: {стек}
coder: "@{стек}.coder"
version: "1.0.0"

CLAUDE.md проекта — раздел СТЕК:

## СТЕК

| Параметр | Значение |
|---------|---------|
| Тип системы | {тип} |
| Стек | {стек + версия} |
| Кодер | @{стек}.coder |
| База | {СУБД} |
| Деплой | {способ} |

5. НЕСКОЛЬКО СТЕКОВ В ПРОЕКТЕ

Основной стек определяет основного кодера. Дополнительные стеки — отдельные модули со своими кодерами.

stack: {основной стек}
additional_stacks:
  - {доп. стек}
coder: "@{основной}.coder"
{доп}_coder: "@{доп}.coder"

СВЯЗАННЫЕ ДОКУМЕНТЫ