From efa89313fa4152252b477aafd88f7cf4a66747d8 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 5 Feb 2026 10:19:56 +0000 Subject: Initial Strapi plugin project --- playground/src/api/.gitkeep | 0 .../src/api/about/content-types/about/schema.json | 23 ++++++++++ playground/src/api/about/controllers/about.ts | 7 ++++ playground/src/api/about/routes/about.ts | 7 ++++ playground/src/api/about/services/about.ts | 7 ++++ .../api/article/content-types/article/schema.json | 49 ++++++++++++++++++++++ playground/src/api/article/controllers/article.ts | 7 ++++ playground/src/api/article/routes/article.ts | 7 ++++ playground/src/api/article/services/article.ts | 7 ++++ .../api/author/content-types/author/schema.json | 34 +++++++++++++++ playground/src/api/author/controllers/author.ts | 7 ++++ playground/src/api/author/routes/author.ts | 7 ++++ playground/src/api/author/services/author.ts | 7 ++++ .../category/content-types/category/schema.json | 31 ++++++++++++++ .../src/api/category/controllers/category.ts | 7 ++++ playground/src/api/category/routes/category.ts | 7 ++++ playground/src/api/category/services/category.ts | 7 ++++ .../api/global/content-types/global/schema.json | 35 ++++++++++++++++ playground/src/api/global/controllers/global.ts | 7 ++++ playground/src/api/global/routes/global.ts | 7 ++++ playground/src/api/global/services/global.ts | 7 ++++ 21 files changed, 277 insertions(+) create mode 100644 playground/src/api/.gitkeep create mode 100644 playground/src/api/about/content-types/about/schema.json create mode 100644 playground/src/api/about/controllers/about.ts create mode 100644 playground/src/api/about/routes/about.ts create mode 100644 playground/src/api/about/services/about.ts create mode 100644 playground/src/api/article/content-types/article/schema.json create mode 100644 playground/src/api/article/controllers/article.ts create mode 100644 playground/src/api/article/routes/article.ts create mode 100644 playground/src/api/article/services/article.ts create mode 100644 playground/src/api/author/content-types/author/schema.json create mode 100644 playground/src/api/author/controllers/author.ts create mode 100644 playground/src/api/author/routes/author.ts create mode 100644 playground/src/api/author/services/author.ts create mode 100644 playground/src/api/category/content-types/category/schema.json create mode 100644 playground/src/api/category/controllers/category.ts create mode 100644 playground/src/api/category/routes/category.ts create mode 100644 playground/src/api/category/services/category.ts create mode 100644 playground/src/api/global/content-types/global/schema.json create mode 100644 playground/src/api/global/controllers/global.ts create mode 100644 playground/src/api/global/routes/global.ts create mode 100644 playground/src/api/global/services/global.ts (limited to 'playground/src/api') diff --git a/playground/src/api/.gitkeep b/playground/src/api/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/playground/src/api/about/content-types/about/schema.json b/playground/src/api/about/content-types/about/schema.json new file mode 100644 index 0000000..581336f --- /dev/null +++ b/playground/src/api/about/content-types/about/schema.json @@ -0,0 +1,23 @@ +{ + "kind": "singleType", + "collectionName": "abouts", + "info": { + "singularName": "about", + "pluralName": "abouts", + "displayName": "About", + "description": "Write about yourself and the content you create" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "title": { + "type": "string" + }, + "blocks": { + "type": "dynamiczone", + "components": ["shared.media", "shared.quote", "shared.rich-text", "shared.slider"] + } + } +} diff --git a/playground/src/api/about/controllers/about.ts b/playground/src/api/about/controllers/about.ts new file mode 100644 index 0000000..b8971a2 --- /dev/null +++ b/playground/src/api/about/controllers/about.ts @@ -0,0 +1,7 @@ +/** + * about controller + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreController('api::about.about'); diff --git a/playground/src/api/about/routes/about.ts b/playground/src/api/about/routes/about.ts new file mode 100644 index 0000000..872ab53 --- /dev/null +++ b/playground/src/api/about/routes/about.ts @@ -0,0 +1,7 @@ +/** + * about router. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::about.about'); diff --git a/playground/src/api/about/services/about.ts b/playground/src/api/about/services/about.ts new file mode 100644 index 0000000..654db23 --- /dev/null +++ b/playground/src/api/about/services/about.ts @@ -0,0 +1,7 @@ +/** + * about service. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::about.about'); diff --git a/playground/src/api/article/content-types/article/schema.json b/playground/src/api/article/content-types/article/schema.json new file mode 100644 index 0000000..8df8823 --- /dev/null +++ b/playground/src/api/article/content-types/article/schema.json @@ -0,0 +1,49 @@ +{ + "kind": "collectionType", + "collectionName": "articles", + "info": { + "singularName": "article", + "pluralName": "articles", + "displayName": "Article", + "description": "Create your blog content" + }, + "options": { + "draftAndPublish": true + }, + "pluginOptions": {}, + "attributes": { + "title": { + "type": "string" + }, + "description": { + "type": "text", + "maxLength": 80 + }, + "slug": { + "type": "uid", + "targetField": "title" + }, + "cover": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": ["images", "files", "videos"] + }, + "author": { + "type": "relation", + "relation": "manyToOne", + "target": "api::author.author", + "inversedBy": "articles" + }, + "category": { + "type": "relation", + "relation": "manyToOne", + "target": "api::category.category", + "inversedBy": "articles" + }, + "blocks": { + "type": "dynamiczone", + "components": ["shared.media", "shared.quote", "shared.rich-text", "shared.slider"] + } + } +} diff --git a/playground/src/api/article/controllers/article.ts b/playground/src/api/article/controllers/article.ts new file mode 100644 index 0000000..8b9d100 --- /dev/null +++ b/playground/src/api/article/controllers/article.ts @@ -0,0 +1,7 @@ +/** + * article controller + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreController('api::article.article'); diff --git a/playground/src/api/article/routes/article.ts b/playground/src/api/article/routes/article.ts new file mode 100644 index 0000000..a018052 --- /dev/null +++ b/playground/src/api/article/routes/article.ts @@ -0,0 +1,7 @@ +/** + * article router. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::article.article'); diff --git a/playground/src/api/article/services/article.ts b/playground/src/api/article/services/article.ts new file mode 100644 index 0000000..4f14efa --- /dev/null +++ b/playground/src/api/article/services/article.ts @@ -0,0 +1,7 @@ +/** + * article service. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::article.article'); diff --git a/playground/src/api/author/content-types/author/schema.json b/playground/src/api/author/content-types/author/schema.json new file mode 100644 index 0000000..a202482 --- /dev/null +++ b/playground/src/api/author/content-types/author/schema.json @@ -0,0 +1,34 @@ +{ + "kind": "collectionType", + "collectionName": "authors", + "info": { + "singularName": "author", + "pluralName": "authors", + "displayName": "Author", + "description": "Create authors for your content" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "name": { + "type": "string" + }, + "avatar": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": ["images", "files", "videos"] + }, + "email": { + "type": "string" + }, + "articles": { + "type": "relation", + "relation": "oneToMany", + "target": "api::article.article", + "mappedBy": "author" + } + } +} diff --git a/playground/src/api/author/controllers/author.ts b/playground/src/api/author/controllers/author.ts new file mode 100644 index 0000000..2649762 --- /dev/null +++ b/playground/src/api/author/controllers/author.ts @@ -0,0 +1,7 @@ +/** + * author controller + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreController('api::author.author'); diff --git a/playground/src/api/author/routes/author.ts b/playground/src/api/author/routes/author.ts new file mode 100644 index 0000000..10475e7 --- /dev/null +++ b/playground/src/api/author/routes/author.ts @@ -0,0 +1,7 @@ +/** + * author router. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::author.author'); diff --git a/playground/src/api/author/services/author.ts b/playground/src/api/author/services/author.ts new file mode 100644 index 0000000..16f75eb --- /dev/null +++ b/playground/src/api/author/services/author.ts @@ -0,0 +1,7 @@ +/** + * author service. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::author.author'); diff --git a/playground/src/api/category/content-types/category/schema.json b/playground/src/api/category/content-types/category/schema.json new file mode 100644 index 0000000..5121cdd --- /dev/null +++ b/playground/src/api/category/content-types/category/schema.json @@ -0,0 +1,31 @@ +{ + "kind": "collectionType", + "collectionName": "categories", + "info": { + "singularName": "category", + "pluralName": "categories", + "displayName": "Category", + "description": "Organize your content into categories" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "name": { + "type": "string" + }, + "slug": { + "type": "uid" + }, + "articles": { + "type": "relation", + "relation": "oneToMany", + "target": "api::article.article", + "mappedBy": "category" + }, + "description": { + "type": "text" + } + } +} diff --git a/playground/src/api/category/controllers/category.ts b/playground/src/api/category/controllers/category.ts new file mode 100644 index 0000000..dbfbd34 --- /dev/null +++ b/playground/src/api/category/controllers/category.ts @@ -0,0 +1,7 @@ +/** + * category controller + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreController('api::category.category'); diff --git a/playground/src/api/category/routes/category.ts b/playground/src/api/category/routes/category.ts new file mode 100644 index 0000000..4cbab60 --- /dev/null +++ b/playground/src/api/category/routes/category.ts @@ -0,0 +1,7 @@ +/** + * category router. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::category.category'); diff --git a/playground/src/api/category/services/category.ts b/playground/src/api/category/services/category.ts new file mode 100644 index 0000000..c956dda --- /dev/null +++ b/playground/src/api/category/services/category.ts @@ -0,0 +1,7 @@ +/** + * category service. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::category.category'); diff --git a/playground/src/api/global/content-types/global/schema.json b/playground/src/api/global/content-types/global/schema.json new file mode 100644 index 0000000..3daa1e8 --- /dev/null +++ b/playground/src/api/global/content-types/global/schema.json @@ -0,0 +1,35 @@ +{ + "kind": "singleType", + "collectionName": "globals", + "info": { + "singularName": "global", + "pluralName": "globals", + "displayName": "Global", + "description": "Define global settings" + }, + "options": { + "draftAndPublish": false + }, + "pluginOptions": {}, + "attributes": { + "siteName": { + "type": "string", + "required": true + }, + "favicon": { + "type": "media", + "multiple": false, + "required": false, + "allowedTypes": ["images", "files", "videos"] + }, + "siteDescription": { + "type": "text", + "required": true + }, + "defaultSeo": { + "type": "component", + "repeatable": false, + "component": "shared.seo" + } + } +} diff --git a/playground/src/api/global/controllers/global.ts b/playground/src/api/global/controllers/global.ts new file mode 100644 index 0000000..ead6ee0 --- /dev/null +++ b/playground/src/api/global/controllers/global.ts @@ -0,0 +1,7 @@ +/** + * global controller + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreController('api::global.global'); diff --git a/playground/src/api/global/routes/global.ts b/playground/src/api/global/routes/global.ts new file mode 100644 index 0000000..047b3b7 --- /dev/null +++ b/playground/src/api/global/routes/global.ts @@ -0,0 +1,7 @@ +/** + * global router. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreRouter('api::global.global'); diff --git a/playground/src/api/global/services/global.ts b/playground/src/api/global/services/global.ts new file mode 100644 index 0000000..ef21df8 --- /dev/null +++ b/playground/src/api/global/services/global.ts @@ -0,0 +1,7 @@ +/** + * global service. + */ + +import { factories } from '@strapi/strapi'; + +export default factories.createCoreService('api::global.global'); -- cgit v1.2.3