Strapi
Структура папок и файлов Strapi
Структура папок и файлов Strapi
Дерево проекта
apps/strapi/
├── config/
│ ├── admin.js # JWT, API token, transfer token
│ ├── api.js # REST API (defaultLimit: 25, maxLimit: 100)
│ ├── database.js # MySQL, Postgres, SQLite
│ ├── middlewares.js # Security, CORS, S3/imgproxy CSP
│ ├── page.js # Populate блоков для page, project, new и т.д.
│ ├── plugins.js # Ticket plugin, AWS S3 upload
│ └── server.js # Host, port, app keys
│
├── src/
│ ├── admin/ # Кастомизация админки
│ ├── api/ # 24 content-type
│ │ ├── page/
│ │ ├── project/
│ │ ├── new/
│ │ ├── promotion/
│ │ ├── header/
│ │ ├── footer/
│ │ └── ...
│ ├── components/ # 62 компонента
│ │ ├── blocks/ # Блоки для Dynamic Zone
│ │ ├── shared/ # Общие (seo, button, link, card)
│ │ ├── content/ # rich-text, editor, images, video, author
│ │ ├── project/ # galereya, hod-stroitelstva, kamery, method
│ │ ├── apartment/ # custom-block
│ │ ├── map/ # map-pin
│ │ └── promo/ # card
│ ├── extensions/
│ └── plugins/
│ └── ticket/ # Плагин заявок
│
├── scripts/
│ ├── download-strapi-db.sh
│ └── generate-docs.js
│
├── types/generated/ # TypeScript типы
│ ├── components.d.ts
│ └── contentTypes.d.ts
│
├── package.json
└── nixpacks.toml
Ключевые файлы
| Файл | Назначение |
|---|---|
config/page.js | Конфигурация populate для блоков. Используется при запросах page, project, new, promotion, secondary-house, apartment-page |
src/api/*/content-types/*/schema.json | Схемы content-types |
src/components/**/*.json | Схемы компонентов |
types/generated/*.d.ts | Сгенерированные TypeScript типы |
Связь с фронтендом
- Populate задаётся в
config/page.js - Рендеринг блоков — в
apps/web/layers/page/app/components/Blocks/Renderer/Renderer.vue - При добавлении блока нужно обновить: schema content-type,
page.js,Renderer.vue