Add Strapi CMS with Article and Category content types

Article is deliberately minimal: title, slug, Markdown body, cover image and
category. No Author content type — the administrator is the only writer.

The bootstrap hook grants the Public role find/findOne on the two content types
and disables self-registration, so the public API is read-only and the site has
no front-end accounts.
This commit is contained in:
2026-08-25 11:42:00 +02:00
parent 8e0a33b4fd
commit ec5976135f
32 changed files with 22291 additions and 0 deletions
@@ -0,0 +1,40 @@
{
"kind": "collectionType",
"collectionName": "articles",
"info": {
"singularName": "article",
"pluralName": "articles",
"displayName": "Article",
"description": "Blog article"
},
"options": {
"draftAndPublish": true
},
"attributes": {
"title": {
"type": "string",
"required": true,
"maxLength": 160
},
"slug": {
"type": "uid",
"targetField": "title",
"required": true
},
"content": {
"type": "richtext",
"required": true
},
"cover": {
"type": "media",
"multiple": false,
"allowedTypes": ["images"]
},
"category": {
"type": "relation",
"relation": "manyToOne",
"target": "api::category.category",
"inversedBy": "articles"
}
}
}
@@ -0,0 +1,3 @@
import { factories } from '@strapi/strapi';
export default factories.createCoreController('api::article.article');
+3
View File
@@ -0,0 +1,3 @@
import { factories } from '@strapi/strapi';
export default factories.createCoreRouter('api::article.article');
+3
View File
@@ -0,0 +1,3 @@
import { factories } from '@strapi/strapi';
export default factories.createCoreService('api::article.article');