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-проект определяется по двум осям: тип системы (что строим) × стек (на чём строим). Без обеих координат нет формальной основы для выбора кодера, шаблона и паттернов деплоя.
СТЕК →
{стек-A} {стек-B} {стек-C} ...
ТИП ↓
web-cms ✅ — —
web-api — ✅ —
web-ui — — ✅
bot — ✅ —
web-shop ✅ — ✅
Тип = назначение системы (что делает для бизнеса)
Стек = технология реализации (на чём написано)
Одна точка на плоскости = конкретный вид IT-проекта.
| 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 |
Сервис платформы (не проект) |
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
index.yaml:
type: it
system_type: {тип из §2}
stack: {стек}
coder: "@{стек}.coder"
version: "1.0.0"
CLAUDE.md проекта — раздел СТЕК:
## СТЕК
| Параметр | Значение |
|---------|---------|
| Тип системы | {тип} |
| Стек | {стек + версия} |
| Кодер | @{стек}.coder |
| База | {СУБД} |
| Деплой | {способ} |
Основной стек определяет основного кодера. Дополнительные стеки — отдельные модули со своими кодерами.
stack: {основной стек}
additional_stacks:
- {доп. стек}
coder: "@{основной}.coder"
{доп}_coder: "@{доп}.coder"