From 057d46e45b88c7792fd150ce0480f3a1c86dcf7f Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Mon, 30 Jun 2025 11:19:21 +0200
Subject: [PATCH 01/34] docs: property and relationship help text

---
 entities.md | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/entities.md b/entities.md
index 7db7cc0..06d70b7 100644
--- a/entities.md
+++ b/entities.md
@@ -162,6 +162,7 @@ You can pass arguments using the long syntax:
 | **hidden**     | `false`  | boolean    | If the property should be hidden in the API response                                                      |
 | **options**    | -        | Object     | Specific options depending on [property type](#property-types)                                            |
 | **validation** | -        | Object     | The [property validators](./validation.md) that each request compares against                             |
+| **helpText**   | -        | string     | Optional help text to display in admin UI                                                                 |
 | **default**    | -        | any        | The default value. When creating an item, if the property is not specified it will default to this value. |
 
 ### Property types
@@ -246,8 +247,8 @@ Timestamp field (ISO 8601 Format)
 ```
 
 #### Email
-You can create one-to-many relationships or many-to-many relationships. Defining relationships in your entities allows you to load relations when you query them and also filter by relations.
 
+You can create one-to-many relationships or many-to-many relationships. Defining relationships in your entities allows you to load relations when you query them and also filter by relations.
 
 ```yaml
 - { name: email, type: email }
@@ -395,8 +396,9 @@ When you define a **belongsTo** relationship, it implicitly set the opposite _ha
 
 You can pass arguments using the long syntax:
 
-| Option     | Default     | Type    | Description                                                                                                                      |
-| ---------- | ----------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
-| **name**   | Entity name | string  | The name of the relation                                                                                                         |
-| **entity** | -           | string  | The class name of the entity that the relationship is with                                                                       |
-| **eager**  | `false`     | boolean | Whether the relationship should be eager loaded. Otherwise, you need to explicitly request the relation in the client SDK or API |
+| Option       | Default     | Type    | Description                                                                                                                      |
+| ------------ | ----------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| **name**     | Entity name | string  | The name of the relation                                                                                                         |
+| **entity**   | -           | string  | The class name of the entity that the relationship is with                                                                       |
+| **helpText** | -           | string  | Optional help text to display in admin UI                                                                                        |
+| **eager**    | `false`     | boolean | Whether the relationship should be eager loaded. Otherwise, you need to explicitly request the relation in the client SDK or API |

From 167f29008f6ef5fac5a34a365dd927ff4a4f9761 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien.conejo@buddyweb.fr>
Date: Mon, 30 Jun 2025 14:34:15 +0200
Subject: [PATCH 02/34] fix content errors

---
 access-policies.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/access-policies.md b/access-policies.md
index 76fe406..f6ff405 100644
--- a/access-policies.md
+++ b/access-policies.md
@@ -67,7 +67,7 @@ By default, all rules have the [admin access type](#access-types)
 
 ## Ownership-based access
 
-Above rules are based on predefined roles, but you many want to grant user access only to their own records. For example, a platform like _Craiglist_ allows its users to create and manage classified ads only for them, not letting users edit others' content.
+Above rules are based on predefined roles, but you many want to grant user access only to their own records. For example, a platform like _Craigslist_ allows its users to create and manage classified ads only for them, not letting users edit others' content.
 
 In Manifest, this is done simply by adding the `{condition: 'self'}` to a restricted policy:
 
@@ -87,9 +87,9 @@ Project:
       - { access: restricted, allow: User, condition: self }
 ```
 
-See ? Just adding the `self` condition prevent creating projects for other users than themselves.
+See? Just adding the `self` condition prevent creating projects for other users than themselves.
 
-Even if it looks very simple, it has slighlty different impact based on rule where it is added. See the following example:
+Even if it looks very simple, it has slightly different impact based on rule where it is added. See the following example:
 
 ```yaml
 policies:

From 224cbc415d9b3bc252a43a9f5f7455d9407d6a2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Tue, 1 Jul 2025 15:20:42 +0200
Subject: [PATCH 03/34] feat: add ai editor rules page

---
 ai-editor-rules.md | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 ai-editor-rules.md

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
new file mode 100644
index 0000000..e69de29

From a8a8b1359ef4b4eb77ebdc37f9097932110c8442 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Tue, 1 Jul 2025 16:46:58 +0200
Subject: [PATCH 04/34] add ai editor rules

---
 ai-editor-rules.md | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
index e69de29..d35b1cb 100644
--- a/ai-editor-rules.md
+++ b/ai-editor-rules.md
@@ -0,0 +1,40 @@
+# AI Editor Rules
+
+This guide explains how to obtain and install the Manifest rule files for your AI code editor.
+
+## Rule Integration
+
+Manifest already provides one rule file per supported editor. It’s installed automatically during the Manifest CLI setup when you specify your editor:
+
+```bash
+# Example: install for Cursor AI Code Editor
+yarn create manifest server --cursor
+```
+
+Check the [Get Started](/docs/#install-manifest) guide for full documentation on built‑in integration.
+
+<p>
+
+## Rules for AI code editors
+
+If you need to install rules yourself, download the file for your editor and add it to your AI code editor:
+
+<a href="https://raw.githubusercontent.com/mnfst/rules/refs/heads/main/src/rules.md" download>
+  Download Manifest rules
+</a></p>
+
+## Generated API & Type Definitions
+
+When you run Manifest (e.g., via npm run start or the CLI), it generates key context files:
+
+- OpenAPI Specification (`./manifest/openapi.yml`): Contains all available endpoints, parameters, schemas, and the API base URL.
+- TypeScript Definitions (`./manifest/types.ts`): Provides typed interfaces for your API, which you can copy into your client folder for accurate code completion and type safety.
+
+The AI editor rules are designed to pick up these files automatically, guiding the AI agent to:
+
+1. Read the OpenAPI spec to understand your backend’s capabilities.
+2. Use the generated types to produce valid, type-safe client code.
+
+By including these context files, Manifest ensures your AI code editor has full visibility into your API, enabling smarter and more reliable code generation.
+
+This mechanism streamlines the creation of cohesive full-stack applications by ensuring your frontend and backend share a unified understanding of endpoints and types, reducing communication errors and speeding up development.

From 0e796afdc680f3ea988212eb46b42728a324442e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Tue, 1 Jul 2025 16:48:13 +0200
Subject: [PATCH 05/34] fix: add "s" to rule word

---
 ai-editor-rules.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
index d35b1cb..357ca0a 100644
--- a/ai-editor-rules.md
+++ b/ai-editor-rules.md
@@ -1,8 +1,8 @@
 # AI Editor Rules
 
-This guide explains how to obtain and install the Manifest rule files for your AI code editor.
+This guide explains how to obtain and install the Manifest rules file for your AI code editor.
 
-## Rule Integration
+## Rules Integration
 
 Manifest already provides one rule file per supported editor. It’s installed automatically during the Manifest CLI setup when you specify your editor:
 

From 895555a4545d860e9b0437f3a3abae3f04d45a2d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Tue, 1 Jul 2025 16:52:17 +0200
Subject: [PATCH 06/34] feat: update content about rules

---
 ai-editor-rules.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
index 357ca0a..59f68b9 100644
--- a/ai-editor-rules.md
+++ b/ai-editor-rules.md
@@ -2,7 +2,7 @@
 
 This guide explains how to obtain and install the Manifest rules file for your AI code editor.
 
-## Rules Integration
+## Built-In Rules Installation
 
 Manifest already provides one rule file per supported editor. It’s installed automatically during the Manifest CLI setup when you specify your editor:
 
@@ -15,12 +15,12 @@ Check the [Get Started](/docs/#install-manifest) guide for full documentation on
 
 <p>
 
-## Rules for AI code editors
+## Manual Rules Installation
 
 If you need to install rules yourself, download the file for your editor and add it to your AI code editor:
 
 <a href="https://raw.githubusercontent.com/mnfst/rules/refs/heads/main/src/rules.md" download>
-  Download Manifest rules
+  ⬇️ Download Manifest Rules
 </a></p>
 
 ## Generated API & Type Definitions

From 5589c26a5ef54473ed767404815b8b0c39de56cf Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Tue, 1 Jul 2025 16:54:01 +0200
Subject: [PATCH 07/34] fix(seo): multiple h1 tags

---
 angular.md | 6 +++---
 astro.md   | 6 +++---
 react.md   | 6 +++---
 svelte.md  | 6 +++---
 vue.md     | 6 +++---
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/angular.md b/angular.md
index 8221388..5aa99d9 100644
--- a/angular.md
+++ b/angular.md
@@ -12,7 +12,7 @@ This quick start guide focuses exclusively on the **frontend**. To ensure the fu
 
 :::
 
-# 1. Create a Angular app
+## 1. Create a Angular app
 
 If you already have your Angular app up and running, skip this step.
 
@@ -24,7 +24,7 @@ cd my-client
 ng serve
 ```
 
-# 2. Install Manifest SDK
+## 2. Install Manifest SDK
 
 Install the JS SDK from the root of your Angular app.
 
@@ -32,7 +32,7 @@ Install the JS SDK from the root of your Angular app.
 npm i @mnfst/sdk
 ```
 
-# 3. Use it in your app
+## 3. Use it in your app
 
 In that example we are using a Cat entity [created previously](entities.md). Replace it by your own entity.
 
diff --git a/astro.md b/astro.md
index 4ec5d34..33a9016 100644
--- a/astro.md
+++ b/astro.md
@@ -12,7 +12,7 @@ This quick start guide focuses exclusively on the **frontend**. To ensure the fu
 
 :::
 
-# 1. Create a Astro app
+## 1. Create a Astro app
 
 If you already have your Astro app up and running, skip this step. Replace `my-astro-app` by the name of the Astro app created.
 
@@ -22,7 +22,7 @@ cd my-astro-app
 npm run dev
 ```
 
-# 2. Install Manifest SDK
+## 2. Install Manifest SDK
 
 Install the JS SDK from the root of your Astro app.
 
@@ -30,7 +30,7 @@ Install the JS SDK from the root of your Astro app.
 npm i @mnfst/sdk
 ```
 
-# 3. Use it in your app
+## 3. Use it in your app
 
 In that example we are using a Cat entity [created previously](entities.md). Replace it by your own entity.
 
diff --git a/react.md b/react.md
index f80ec80..d7b9a98 100644
--- a/react.md
+++ b/react.md
@@ -12,7 +12,7 @@ This quick start guide focuses exclusively on the **frontend**. To ensure the fu
 
 :::
 
-# 1. Create a React app
+## 1. Create a React app
 
 If you already have a React app, you can skip this step.
 
@@ -24,7 +24,7 @@ cd my-client
 npm start
 ```
 
-# 2. Install Manifest SDK
+## 2. Install Manifest SDK
 
 Install the JS SDK from the root of your React app.
 
@@ -32,7 +32,7 @@ Install the JS SDK from the root of your React app.
 npm i @mnfst/sdk
 ```
 
-# 3. Use it in your app
+## 3. Use it in your app
 
 In that example we are using a Cat entity [created previously](entities.md). Replace it by your own entity. This example uses TypeScript, you can remove the typing to have plain JS.
 
diff --git a/svelte.md b/svelte.md
index 1e53597..c3f498d 100644
--- a/svelte.md
+++ b/svelte.md
@@ -12,7 +12,7 @@ This quick start guide focuses exclusively on the **frontend**. To ensure the fu
 
 :::
 
-# 1. Create a Svelte app
+## 1. Create a Svelte app
 
 If you already have a Svelte app running, you can skip this step.
 
@@ -25,7 +25,7 @@ npm install
 npm run dev -- --open
 ```
 
-# 2. Install Manifest SDK
+## 2. Install Manifest SDK
 
 Install the JS SDK from the root of your Svelte app.
 
@@ -33,7 +33,7 @@ Install the JS SDK from the root of your Svelte app.
 npm i @mnfst/sdk
 ```
 
-# 3. Use it in your app
+## 3. Use it in your app
 
 In that example we are using a Cat entity [created previously](entities.md). Replace it by your own entity. This example uses TypeScript, you can remove the typing to have plain JS.
 
diff --git a/vue.md b/vue.md
index 7d061df..507b77f 100644
--- a/vue.md
+++ b/vue.md
@@ -12,7 +12,7 @@ This quick start guide focuses exclusively on the **frontend**. To ensure the fu
 
 :::
 
-# 1. Create a Vue app
+## 1. Create a Vue app
 
 If you already have a Vue app running, you can skip this step.
 
@@ -25,7 +25,7 @@ npm install
 npm run dev
 ```
 
-# 2. Install Manifest SDK
+## 2. Install Manifest SDK
 
 Install the JS SDK from the root of your Vue app.
 
@@ -33,7 +33,7 @@ Install the JS SDK from the root of your Vue app.
 npm i @mnfst/sdk
 ```
 
-# 3. Use it in your app
+## 3. Use it in your app
 
 In that example we are using a Cat entity [created previously](entities.md). Replace it by your own entity. This example uses TypeScript, you can remove the typing to have plain JS.
 

From 0a655767c91478eb36b3dc6eaa866e89cde41bcd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Tue, 1 Jul 2025 16:56:42 +0200
Subject: [PATCH 08/34] feat: remove unnecessary content

---
 ai-editor-rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
index 59f68b9..85f3c10 100644
--- a/ai-editor-rules.md
+++ b/ai-editor-rules.md
@@ -25,7 +25,7 @@ If you need to install rules yourself, download the file for your editor and add
 
 ## Generated API & Type Definitions
 
-When you run Manifest (e.g., via npm run start or the CLI), it generates key context files:
+When you run Manifest, it generates key context files:
 
 - OpenAPI Specification (`./manifest/openapi.yml`): Contains all available endpoints, parameters, schemas, and the API base URL.
 - TypeScript Definitions (`./manifest/types.ts`): Provides typed interfaces for your API, which you can copy into your client folder for accurate code completion and type safety.

From 7c2f86a9e8a94c5d79cb1b144ade9507042ed42e Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Tue, 1 Jul 2025 17:25:15 +0200
Subject: [PATCH 09/34] feat(seo): meta descriptions

---
 access-policies.md | 2 ++
 angular.md         | 2 ++
 astro.md           | 2 ++
 auth.md            | 2 ++
 config.md          | 2 ++
 crud.md            | 2 ++
 deploy.md          | 2 ++
 endpoints.md       | 3 ++-
 entities.md        | 1 +
 introduction.md    | 3 ++-
 middlewares.md     | 1 +
 react.md           | 2 ++
 s3-storage.md      | 6 ++++++
 svelte.md          | 2 ++
 upload.md          | 2 ++
 validation.md      | 2 ++
 vue.md             | 2 ++
 17 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/access-policies.md b/access-policies.md
index f6ff405..a0cf459 100644
--- a/access-policies.md
+++ b/access-policies.md
@@ -1,5 +1,7 @@
 ---
 id: access
+title: Access Policies & Authorization
+description: Learn how to implement Role-Based Access Control (RBAC) and ownership-based access policies in Manifest. Control user permissions for CRUD operations with public, restricted, admin, and forbidden access types.
 ---
 
 # Access policies
diff --git a/angular.md b/angular.md
index 5aa99d9..8b538b2 100644
--- a/angular.md
+++ b/angular.md
@@ -1,5 +1,7 @@
 ---
 id: angular
+title: Create a Full-Stack app with Angular and Manifest
+description: Quick start guide to create a full-stack app using Angular as a frontend and Manifest as a backend.
 ---
 
 # Quick start with Angular
diff --git a/astro.md b/astro.md
index 33a9016..c1b1c0d 100644
--- a/astro.md
+++ b/astro.md
@@ -1,5 +1,7 @@
 ---
 id: astro
+title: Create a Full-Stack app with Astro and Manifest
+description: Quick start guide to create a full-stack app using Astro as a frontend and Manifest as a backend.
 ---
 
 # Quick start with Astro
diff --git a/auth.md b/auth.md
index 69b8828..e48509c 100644
--- a/auth.md
+++ b/auth.md
@@ -1,5 +1,7 @@
 ---
 id: authentication
+title: Authentication
+description: Implement Authentication quickly with Manifest built-in Auth component. Manage log in, sign up and admin roles.
 ---
 
 import Tabs from '@theme/Tabs';
diff --git a/config.md b/config.md
index ac10a56..51e8444 100644
--- a/config.md
+++ b/config.md
@@ -1,5 +1,7 @@
 ---
 id: config
+title: Manifest Configuration
+description: Configure Manifest Database (PostgreSQL, MySQL or SQLite), Port, OpenAPI and environments with a simple config.
 ---
 
 import Tabs from '@theme/Tabs';
diff --git a/crud.md b/crud.md
index 80cb0db..aa68dea 100644
--- a/crud.md
+++ b/crud.md
@@ -1,5 +1,7 @@
 ---
 id: crud
+title: CRUD Operations
+description: Documentation for out-of-the-box CRUD endpoints with Manifest. Paginated lists, detail views, creating and updating single or collection entities.
 ---
 
 import Tabs from '@theme/Tabs';
diff --git a/deploy.md b/deploy.md
index ec432ab..004a4dc 100644
--- a/deploy.md
+++ b/deploy.md
@@ -1,5 +1,7 @@
 ---
 id: deploy
+title: Deploy to Production
+description: Deploy your Manifest backend to production in no time. Server, Databases and Storage options. Deploy on popular cloud providers and use Docker image.
 ---
 
 # Deploy Manifest
diff --git a/endpoints.md b/endpoints.md
index e4996cf..37c60bb 100644
--- a/endpoints.md
+++ b/endpoints.md
@@ -1,6 +1,7 @@
 ---
 id: endpoints
-title: Endpoints
+title: Custom Endpoints
+description: Add your own endpoints for your custom logic with Manifest. Each endpoint triggers a handler file that has access to Manifest logic and data.
 ---
 
 # Endpoints
diff --git a/entities.md b/entities.md
index bcd5a94..0aca477 100644
--- a/entities.md
+++ b/entities.md
@@ -1,6 +1,7 @@
 ---
 id: entities
 title: Entities
+descriptions: Entities are the foundation of Manifest. Define your data structure in few lines and use 15+ real-world types for your properties.
 ---
 
 import Tabs from '@theme/Tabs';
diff --git a/introduction.md b/introduction.md
index 5c3822a..fec57ec 100644
--- a/introduction.md
+++ b/introduction.md
@@ -1,7 +1,8 @@
 ---
 id: get-started
-title: Get started
+title: Introduction
 slug: /
+description: Manifest is an Open Source backend that fits in a single YAML file. Easy to edit, validate and version for humans and LLMs.
 ---
 
 # Manifest Documentation 👋
diff --git a/middlewares.md b/middlewares.md
index a42c3b3..2818731 100644
--- a/middlewares.md
+++ b/middlewares.md
@@ -1,6 +1,7 @@
 ---
 id: middlewares
 title: Middlewares
+description: Add middlewares to trigger custom logic at defined lifecycle events of your Manifest backend. 6 available events related to entities.
 ---
 
 ## Introduction
diff --git a/react.md b/react.md
index d7b9a98..2b19162 100644
--- a/react.md
+++ b/react.md
@@ -1,5 +1,7 @@
 ---
 id: react
+title: Create a Full-Stack app with React and Manifest
+description: Quick start guide to create a full-stack app using React as a frontend and Manifest as a backend.
 ---
 
 # Quick start with React
diff --git a/s3-storage.md b/s3-storage.md
index f0a2670..f899d66 100644
--- a/s3-storage.md
+++ b/s3-storage.md
@@ -1,3 +1,9 @@
+---
+id: s3-storage
+title: S3 Storage
+description: Use any S3-compatible storage to store your user assets in your Manifest backend. Images, videos, documents...
+---
+
 # S3 Storage
 
 ## Introduction
diff --git a/svelte.md b/svelte.md
index c3f498d..e4543f6 100644
--- a/svelte.md
+++ b/svelte.md
@@ -1,5 +1,7 @@
 ---
 id: svelte
+title: Create a Full-Stack app with Svelte and Manifest
+description: Quick start guide to create a full-stack app using Svelte as a frontend and Manifest as a backend.
 ---
 
 # Quick start with Svelte
diff --git a/upload.md b/upload.md
index 6b7d620..296d437 100644
--- a/upload.md
+++ b/upload.md
@@ -1,5 +1,7 @@
 ---
 id: upload
+title: File and Image Uploads
+description: Upload files and images with Manifest built-in storage system to upload assets in the file storage or any S3-compatible storage. Define image sizes and quality for automatic resizing.
 ---
 
 import Tabs from '@theme/Tabs';
diff --git a/validation.md b/validation.md
index 188f4b7..225dbf4 100644
--- a/validation.md
+++ b/validation.md
@@ -1,5 +1,7 @@
 ---
 id: validation
+title: Validation
+description: Server-side validation for your user-generated content. Use many validators like "required", "minLength", "contains" or "matches" for every property.
 ---
 
 # Validation
diff --git a/vue.md b/vue.md
index 507b77f..5641640 100644
--- a/vue.md
+++ b/vue.md
@@ -1,5 +1,7 @@
 ---
 id: vue
+title: Create a Full-Stack app with Vue and Manifest
+description: Quick start guide to create a full-stack app using Vue as a frontend and Manifest as a backend.
 ---
 
 # Quick start with Vue

From 23fe40b865c7ba05e812b215e1a7a45bb16fa87d Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Tue, 1 Jul 2025 17:25:28 +0200
Subject: [PATCH 10/34] feat(seo): webhooks meta description

---
 webhooks.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/webhooks.md b/webhooks.md
index a855551..73c19d9 100644
--- a/webhooks.md
+++ b/webhooks.md
@@ -1,5 +1,7 @@
 ---
 id: webhooks
+title: Webhooks
+description: Send requests to third-party applications using Manifest webhooks. Choose URL, method and send custom headers.
 ---
 
 # Webhooks

From 8ea8f1c0accee28dd9212751a6be215dd049cc49 Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Tue, 1 Jul 2025 17:47:41 +0200
Subject: [PATCH 11/34] fix(seo): title too long

---
 access-policies.md | 2 +-
 upload.md          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/access-policies.md b/access-policies.md
index a0cf459..b52328f 100644
--- a/access-policies.md
+++ b/access-policies.md
@@ -1,7 +1,7 @@
 ---
 id: access
 title: Access Policies & Authorization
-description: Learn how to implement Role-Based Access Control (RBAC) and ownership-based access policies in Manifest. Control user permissions for CRUD operations with public, restricted, admin, and forbidden access types.
+description: Learn how to implement API policies to restrict resource access for CRUD operations and endpoints.
 ---
 
 # Access policies
diff --git a/upload.md b/upload.md
index 296d437..71f4779 100644
--- a/upload.md
+++ b/upload.md
@@ -1,7 +1,7 @@
 ---
 id: upload
 title: File and Image Uploads
-description: Upload files and images with Manifest built-in storage system to upload assets in the file storage or any S3-compatible storage. Define image sizes and quality for automatic resizing.
+description: Upload files and images with Manifest built-in storage system to upload assets in the file storage or any S3-compatible storage.
 ---
 
 import Tabs from '@theme/Tabs';

From 079554883a164b757fdb823fb13c0fca96bc4683 Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Tue, 1 Jul 2025 18:04:32 +0200
Subject: [PATCH 12/34] fix: broken anchor

---
 entities.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/entities.md b/entities.md
index 0aca477..647961b 100644
--- a/entities.md
+++ b/entities.md
@@ -117,7 +117,7 @@ entities:
 | Option           | Default                    | Type     | Description                                                                 |
 | ---------------- | -------------------------- | -------- | --------------------------------------------------------------------------- |
 | **nameSingular** | _singular lower case name_ | string   | The singular lowercase name of your entity. Used widely on the admin panel. |
-| **policies**     | -                          | Policies | The [access control policies](./auth.md#access-policies) of your entity     |
+| **policies**     | -                          | Policies | The [access control policies](./access-policies.md) of your entity          |
 | **properties**   | `[]`                       | Array    | The [properties](./entities.md#properties) of your entity                   |
 | **slug**         | _plural dasherized name_   | string   | The kebab-case slug of the entity that will define API endpoints.           |
 

From c22131afc2f08c461e7f3c0a4e73f74c55027ac2 Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Wed, 2 Jul 2025 14:05:28 +0200
Subject: [PATCH 13/34] doc: security with rate limit

---
 security.md | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 security.md

diff --git a/security.md b/security.md
new file mode 100644
index 0000000..5471156
--- /dev/null
+++ b/security.md
@@ -0,0 +1,24 @@
+---
+id: security
+title: Security
+description: Implement Security in your Manifest backend and make sure that your app is protected.
+---
+
+# Security
+
+Implement security measures in your Manifest backend.
+
+## Rate limiting
+
+Rate-limiting can protect your backend from **brute-force attacks** by blocking requests after reaching a limit.
+
+You can implement one or several throttler definitions to limit API calls in the `manifest.yml` file. The following example allow no more than 2 calls per second, and 50 calls per minute:
+
+```yaml title="manifest.yml"
+name: my app
+
+settings:
+  rateLimits:
+    - { name: 'short', limit: 2, ttl: 1000 } # 2 requests per second
+    - { name: 'medium', limit: 50, ttl: 60000 } # 50 requests per minute.
+```

From 8d6db6c144ae2b023ac59a9285821c9df5e2fdf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Thu, 3 Jul 2025 15:26:55 +0200
Subject: [PATCH 14/34] doc: update documentation

---
 ai-editor-rules.md | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/ai-editor-rules.md b/ai-editor-rules.md
index 85f3c10..794e3e0 100644
--- a/ai-editor-rules.md
+++ b/ai-editor-rules.md
@@ -1,40 +1,38 @@
-# AI Editor Rules
+# Manifest AI rules
 
-This guide explains how to obtain and install the Manifest rules file for your AI code editor.
+Rules are predefined guidelines and constraints that steer an AI assistant’s behavior.
 
-## Built-In Rules Installation
+They specify the style, conventions, best practices, or security policies to follow.
 
-Manifest already provides one rule file per supported editor. It’s installed automatically during the Manifest CLI setup when you specify your editor:
+Rules ensure consistency, quality, and compliance of the generated suggestions.
+
+## Usage
+
+Running the install command above will add the rules to the Manifest rules in your project.
 
 ```bash
 # Example: install for Cursor AI Code Editor
-yarn create manifest server --cursor
+npm create manifest --cursor
 ```
 
-Check the [Get Started](/docs/#install-manifest) guide for full documentation on built‑in integration.
-
-<p>
+You can replace `--cursor` with another option if you're using a different AI tool;
 
-## Manual Rules Installation
+- `--copilot` if you're using GitHub Copilot
+- `--windsurf` for Windsurf
 
-If you need to install rules yourself, download the file for your editor and add it to your AI code editor:
+If you need to install rules manually, download the file below and add it to your AI code editor:
 
 <a href="https://raw.githubusercontent.com/mnfst/rules/refs/heads/main/src/rules.md" download>
   ⬇️ Download Manifest Rules
 </a></p>
 
-## Generated API & Type Definitions
+## Types and OpenAPI Generation
 
 When you run Manifest, it generates key context files:
 
-- OpenAPI Specification (`./manifest/openapi.yml`): Contains all available endpoints, parameters, schemas, and the API base URL.
-- TypeScript Definitions (`./manifest/types.ts`): Provides typed interfaces for your API, which you can copy into your client folder for accurate code completion and type safety.
+- OpenAPI: A .yml file with the available endpoints, schemas, and the API base URL of your backend.
+- Types: A `.ts` file with types for each entity.
 
-The AI editor rules are designed to pick up these files automatically, guiding the AI agent to:
-
-1. Read the OpenAPI spec to understand your backend’s capabilities.
-2. Use the generated types to produce valid, type-safe client code.
+The AI editor rules are designed to pick up these files automatically.
 
 By including these context files, Manifest ensures your AI code editor has full visibility into your API, enabling smarter and more reliable code generation.
-
-This mechanism streamlines the creation of cohesive full-stack applications by ensuring your frontend and backend share a unified understanding of endpoints and types, reducing communication errors and speeding up development.

From 000f735a33410167dabad852059cdf8cbe3d874f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Thu, 3 Jul 2025 15:39:27 +0200
Subject: [PATCH 15/34] doc: replace rules page name

---
 ai-editor-rules.md => manifest-ai-rules.md | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename ai-editor-rules.md => manifest-ai-rules.md (100%)

diff --git a/ai-editor-rules.md b/manifest-ai-rules.md
similarity index 100%
rename from ai-editor-rules.md
rename to manifest-ai-rules.md

From 1a4ea863ad046c749bfba8c9faddaf2a9b92de87 Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Fri, 4 Jul 2025 16:36:54 +0200
Subject: [PATCH 16/34] fix(rules): error in markdown

---
 llm-rules.md         | 38 ++++++++++++++++++++++++++++++++++++++
 manifest-ai-rules.md | 38 --------------------------------------
 2 files changed, 38 insertions(+), 38 deletions(-)
 create mode 100644 llm-rules.md
 delete mode 100644 manifest-ai-rules.md

diff --git a/llm-rules.md b/llm-rules.md
new file mode 100644
index 0000000..351f6cf
--- /dev/null
+++ b/llm-rules.md
@@ -0,0 +1,38 @@
+---
+id: llm-rules
+title: LLM Rules
+descriptions: Use Manifest rules in your AI Code Editor to improve your LLM understanding of Manifest backend.
+---
+
+# LLM rules
+
+Rules are predefined guidelines and constraints that steer an AI assistant’s behavior. They specify the style, conventions, best practices, or security policies to follow. Rules ensure consistency, quality, and compliance of the generated suggestions.
+
+## Usage
+
+Running the install command above will add the rules to the Manifest rules in your project.
+
+```bash
+# Example: install for Cursor AI Code Editor
+npm create manifest --cursor
+```
+
+You can replace `--cursor` with another option if you're using a different AI tool;
+
+- `--copilot` if you're using GitHub Copilot
+- `--windsurf` for Windsurf
+
+If you need to install rules manually, download the file below and add it to your AI code editor:
+
+<a href="https://raw.githubusercontent.com/mnfst/rules/refs/heads/main/src/rules.md" download>
+  ⬇️ Download Manifest Rules
+</a>
+
+## Types and OpenAPI Generation
+
+When you run Manifest, it generates 2 key context files in the **/.manifest** folder:
+
+- **openapi.yml**: [OpenAPI](https://www.openapis.org/) spec for the available endpoints, schemas, and the API base URL of your backend.
+- **types.ts**: type file with typings and DTOs (Data Transfer Object) for each entity.
+
+By including these context files, Manifest ensures your AI code editor understands your API, enabling smarter and more reliable code generation,especially when you want to connect a frontend to your Manifest backend.
diff --git a/manifest-ai-rules.md b/manifest-ai-rules.md
deleted file mode 100644
index 794e3e0..0000000
--- a/manifest-ai-rules.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Manifest AI rules
-
-Rules are predefined guidelines and constraints that steer an AI assistant’s behavior.
-
-They specify the style, conventions, best practices, or security policies to follow.
-
-Rules ensure consistency, quality, and compliance of the generated suggestions.
-
-## Usage
-
-Running the install command above will add the rules to the Manifest rules in your project.
-
-```bash
-# Example: install for Cursor AI Code Editor
-npm create manifest --cursor
-```
-
-You can replace `--cursor` with another option if you're using a different AI tool;
-
-- `--copilot` if you're using GitHub Copilot
-- `--windsurf` for Windsurf
-
-If you need to install rules manually, download the file below and add it to your AI code editor:
-
-<a href="https://raw.githubusercontent.com/mnfst/rules/refs/heads/main/src/rules.md" download>
-  ⬇️ Download Manifest Rules
-</a></p>
-
-## Types and OpenAPI Generation
-
-When you run Manifest, it generates key context files:
-
-- OpenAPI: A .yml file with the available endpoints, schemas, and the API base URL of your backend.
-- Types: A `.ts` file with types for each entity.
-
-The AI editor rules are designed to pick up these files automatically.
-
-By including these context files, Manifest ensures your AI code editor has full visibility into your API, enabling smarter and more reliable code generation.

From 70c5a5645fbe8c8811883fece6bd132025b2a95c Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Fri, 4 Jul 2025 16:40:59 +0200
Subject: [PATCH 17/34] feat(rules): remove comment as it gets copied

---
 llm-rules.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/llm-rules.md b/llm-rules.md
index 351f6cf..2876d11 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -13,7 +13,6 @@ Rules are predefined guidelines and constraints that steer an AI assistant’s b
 Running the install command above will add the rules to the Manifest rules in your project.
 
 ```bash
-# Example: install for Cursor AI Code Editor
 npm create manifest --cursor
 ```
 

From 117e0c0a532569d4a63eb3c38b7925608b51997d Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Mon, 7 Jul 2025 14:25:36 +0200
Subject: [PATCH 18/34] fix(command): wrong command

---
 introduction.md | 2 +-
 llm-rules.md    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/introduction.md b/introduction.md
index fec57ec..2242789 100644
--- a/introduction.md
+++ b/introduction.md
@@ -48,7 +48,7 @@ You can replace `--cursor` with another option if you're using a different AI to
 
 :::note
 
-You can also use `npm create` instead of `yarn create`.
+You can also use `npx create` instead of `yarn create`.
 
 :::
 
diff --git a/llm-rules.md b/llm-rules.md
index 2876d11..1a8e260 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -13,7 +13,7 @@ Rules are predefined guidelines and constraints that steer an AI assistant’s b
 Running the install command above will add the rules to the Manifest rules in your project.
 
 ```bash
-npm create manifest --cursor
+npx create manifest --cursor
 ```
 
 You can replace `--cursor` with another option if you're using a different AI tool;

From 1ee1156d9b1062e03957ceee1e57748404a108ff Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Mon, 7 Jul 2025 15:49:58 +0200
Subject: [PATCH 19/34] fix(npx): wrong command

---
 introduction.md | 10 ++++------
 llm-rules.md    |  2 +-
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/introduction.md b/introduction.md
index 2242789..db6e9e8 100644
--- a/introduction.md
+++ b/introduction.md
@@ -35,6 +35,10 @@ Follow the steps below to install Manifest in your local machine.
 Run this command to create a Manifest project ready to use with Cursor IDE.
 
 ```bash
+# NPM
+npm create-manifest@latest my-project --cursor
+
+# Yarn
 yarn create manifest my-project --cursor
 ```
 
@@ -46,12 +50,6 @@ You can replace `--cursor` with another option if you're using a different AI to
 - `--windsurf` for **Windsurf**
 - or remove it entirely if you're not using any AI coding tool
 
-:::note
-
-You can also use `npx create` instead of `yarn create`.
-
-:::
-
 To start the Manifest backend, run the following command in the new project folder:
 
 ```
diff --git a/llm-rules.md b/llm-rules.md
index 1a8e260..2c9edaa 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -13,7 +13,7 @@ Rules are predefined guidelines and constraints that steer an AI assistant’s b
 Running the install command above will add the rules to the Manifest rules in your project.
 
 ```bash
-npx create manifest --cursor
+npx create-manifest --cursor
 ```
 
 You can replace `--cursor` with another option if you're using a different AI tool;

From ea69dbe873dec8de4df43ce6cda11d152af68c8e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien.conejo@buddyweb.fr>
Date: Mon, 14 Jul 2025 16:45:15 +0200
Subject: [PATCH 20/34] Replace npm by npx in  introduction.md

---
 introduction.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/introduction.md b/introduction.md
index db6e9e8..d3569d5 100644
--- a/introduction.md
+++ b/introduction.md
@@ -35,8 +35,8 @@ Follow the steps below to install Manifest in your local machine.
 Run this command to create a Manifest project ready to use with Cursor IDE.
 
 ```bash
-# NPM
-npm create-manifest@latest my-project --cursor
+# NPX
+npx create-manifest@latest my-project --cursor
 
 # Yarn
 yarn create manifest my-project --cursor

From 0154ba51b83d27e1077150605f1488add1360a1f Mon Sep 17 00:00:00 2001
From: David Hidvegi <8416537+davidhidvegi@users.noreply.github.com>
Date: Sat, 19 Jul 2025 14:19:47 +0200
Subject: [PATCH 21/34] Update endpoints.md

JS SDK link points to localhost in `Manipulate data with the backend SDK`, fixed to point to the correct JS SDK path
---
 endpoints.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/endpoints.md b/endpoints.md
index 37c60bb..97bcb0d 100644
--- a/endpoints.md
+++ b/endpoints.md
@@ -60,7 +60,7 @@ Each endpoint can be defined in the YAML file with the following values:
 
 ## Manipulate data with the backend SDK
 
-The next thing you may want to do is to **read and write data from your app**. This can be done using the Manifest backend SDK that shares the same CRUD and upload functions as the [JS SDK](http://localhost:3000/docs/javascript-sdk) for the front-end.
+The next thing you may want to do is to **read and write data from your app**. This can be done using the Manifest backend SDK that shares the same CRUD and upload functions as the [JS SDK](./crud.md#using-the-javascript-sdk) for the front-end.
 
 Take the following example of a `manifest.yml` file of a **leaderboard**:
 

From 64fd8c87b971b54d94f740658d270b8cd9654cfc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 15:47:44 +0200
Subject: [PATCH 22/34] feat: add mention about Lovable

---
 llm-rules.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/llm-rules.md b/llm-rules.md
index 2c9edaa..136604c 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -27,6 +27,10 @@ If you need to install rules manually, download the file below and add it to you
   ⬇️ Download Manifest Rules
 </a>
 
+## Integration with Lovable, Bolt.new and vibe coding tools
+
+Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. It also works great with [Bolt.new](https://bolt.new) and other vibe coding tools. With a native integration, you could launch Manifest directly **inside Lovable** without any setup. ⬆️ [Upvote this idea if you want that](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration).
+
 ## Types and OpenAPI Generation
 
 When you run Manifest, it generates 2 key context files in the **/.manifest** folder:

From f9a8ee5ba82b17dc12d8a41d4e24a9ce65ade18f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 15:54:43 +0200
Subject: [PATCH 23/34] style: add yellow block

---
 llm-rules.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/llm-rules.md b/llm-rules.md
index 136604c..ffd27eb 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -29,8 +29,12 @@ If you need to install rules manually, download the file below and add it to you
 
 ## Integration with Lovable, Bolt.new and vibe coding tools
 
+<div style={{ backgroundColor: '#fff9c4', padding: '0.5em', borderRadius: '4px' }}>
+
 Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. It also works great with [Bolt.new](https://bolt.new) and other vibe coding tools. With a native integration, you could launch Manifest directly **inside Lovable** without any setup. ⬆️ [Upvote this idea if you want that](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration).
 
+</div>
+
 ## Types and OpenAPI Generation
 
 When you run Manifest, it generates 2 key context files in the **/.manifest** folder:

From fd05f33b10191df9b48e516cd9acd77215037f25 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 15:58:43 +0200
Subject: [PATCH 24/34] update color block

---
 llm-rules.md | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/llm-rules.md b/llm-rules.md
index ffd27eb..1bbdfe5 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -29,9 +29,11 @@ If you need to install rules manually, download the file below and add it to you
 
 ## Integration with Lovable, Bolt.new and vibe coding tools
 
-<div style={{ backgroundColor: '#fff9c4', padding: '0.5em', borderRadius: '4px' }}>
+<div style={{ backgroundColor: '#d6ffee', padding: '1em 1em 0.1em 1em', borderRadius: '12px' }}>
 
-Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. It also works great with [Bolt.new](https://bolt.new) and other vibe coding tools. With a native integration, you could launch Manifest directly **inside Lovable** without any setup. ⬆️ [Upvote this idea if you want that](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration).
+Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. It also works great with [Bolt.new](https://bolt.new) and other vibe coding tools. With a native integration, you could launch Manifest directly **inside Lovable** without any setup.
+
+⬆️ **[Upvote this idea if you want that](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**
 
 </div>
 

From ebccd08cc0b5f2ffc0f716017e18848c46e7bae4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 16:02:45 +0200
Subject: [PATCH 25/34] feat: update content

---
 llm-rules.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/llm-rules.md b/llm-rules.md
index 1bbdfe5..ce477b4 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -31,9 +31,9 @@ If you need to install rules manually, download the file below and add it to you
 
 <div style={{ backgroundColor: '#d6ffee', padding: '1em 1em 0.1em 1em', borderRadius: '12px' }}>
 
-Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. It also works great with [Bolt.new](https://bolt.new) and other vibe coding tools. With a native integration, you could launch Manifest directly **inside Lovable** without any setup.
+Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. With a native integration, you could launch Manifest directly **inside Lovable** or bolt.new without any setup.
 
-⬆️ **[Upvote this idea if you want that](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**
+Want this to happen? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
 
 </div>
 

From 4b0580dce93f745d972adbf575439faa20acb7ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 16:06:26 +0200
Subject: [PATCH 26/34] feat: update content

---
 llm-rules.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/llm-rules.md b/llm-rules.md
index ce477b4..b465bd4 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -31,9 +31,9 @@ If you need to install rules manually, download the file below and add it to you
 
 <div style={{ backgroundColor: '#d6ffee', padding: '1em 1em 0.1em 1em', borderRadius: '12px' }}>
 
-Manifest already works with ❤️ [Lovable](https://lovable.dev) if you clone the project and run it locally. With a native integration, you could launch Manifest directly **inside Lovable** or bolt.new without any setup.
+Manifest already works with ❤️ [Lovable](https://lovable.dev) and [Bolt.new](https://bolt.new) if you clone the project and run it locally. With a native integration, you could launch Manifest directly inside them.
 
-Want this to happen? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
+Want to see Manifest inside Lovable ? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
 
 </div>
 

From 9ff386df3995efc291dd9a9145d7730c4073d471 Mon Sep 17 00:00:00 2001
From: Bruno <bruno@buddyweb.fr>
Date: Fri, 25 Jul 2025 16:07:18 +0200
Subject: [PATCH 27/34] docs: nested entities (groups)

---
 groups.md       | 85 +++++++++++++++++++++++++++++++++++++++++++++++++
 introduction.md |  2 +-
 2 files changed, 86 insertions(+), 1 deletion(-)
 create mode 100644 groups.md

diff --git a/groups.md b/groups.md
new file mode 100644
index 0000000..3d5668d
--- /dev/null
+++ b/groups.md
@@ -0,0 +1,85 @@
+---
+id: groups
+title: Groups (nested entities)
+slug: groups
+description: TODO
+---
+
+# Groups (nested entities)
+
+A group is a **reusable set of properties** that you can attach to your entities: whether they are [single](./entities.md#singles) or [collections](./entities.md#collections). They help you structure your nested data without having to repeat yourself. Some common use cases for groups are:
+
+- Testimonials
+- FAQs
+- Widgets (CTA, UI elements like cards, blocks etc.)
+
+Groups are automatically loaded when you fetch a list or a detail version of the parent entity (using both REST API and SDK).
+
+## Syntax
+
+Define your groups in the `manifest.yml` file to use it in entities as a property.
+
+```yaml title="manifest.yml"
+entities:
+  Service:
+    properties:
+      - name
+      - { name: description, helpText: 'Description of the service' }
+      - {
+          name: testimonials,
+          type: group, # Group type indicates that it is a group.
+          helpText: 'Add some testimonials for the service',
+          options: { group: Testimonial } # Pass the name of the group in the "group" option
+        }
+
+groups:
+  Testimonial: # We create a testimonial group with 3 properties.
+    properties:
+      - { name: author, type: text }
+      - { name: content, type: text }
+      - { name: rating, type: number, helpText: '1 to 5 stars' }
+    validation:
+      rating: { isNotEmpty: true }
+```
+
+The code above will add testimonials to service. Once the `Testimonial` group is created, you can add it in as many entities as you want.
+
+## Non-multiple groups
+
+In the example above, each service can have several testimonials, but you can also have non-multiple groups.
+
+This example shows a backend for a website where each page has a single "call to action" element that can be used as widget UI.
+
+```yaml title="manifest.yml"
+  Homepage:
+    single: true
+    properties:
+      - { name: title, type: text }
+      - {
+          name: callToAction,
+          type: group,
+          options: { group: CallToAction, multiple: false }
+        }
+
+  AboutPage:
+    single: true
+    properties:
+      - { name: title, type: text }
+      - { name: description, type: text }
+      - {
+          name: callToAction,
+          type: group,
+          options: { group: CallToAction, multiple: false }
+        }
+
+groups:
+  CallToAction:
+    properties:
+      - { name: title, type: string }
+      - { name: description, type: text }
+      - { name: buttonText, type: string, helpText: "Text for the button" }
+      - { name: buttonLink, type: link }
+    validation:
+      title: { isNotEmpty: true }
+      description: { isNotEmpty: true }
+```
diff --git a/introduction.md b/introduction.md
index d3569d5..0affe36 100644
--- a/introduction.md
+++ b/introduction.md
@@ -1,6 +1,6 @@
 ---
 id: get-started
-title: Introduction
+title: Get Started
 slug: /
 description: Manifest is an Open Source backend that fits in a single YAML file. Easy to edit, validate and version for humans and LLMs.
 ---

From 68ae8288754805dbe746874f3f2ccb7eda814f68 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 16:07:30 +0200
Subject: [PATCH 28/34] add bolt to lovable

---
 llm-rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llm-rules.md b/llm-rules.md
index b465bd4..3d733c4 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -33,7 +33,7 @@ If you need to install rules manually, download the file below and add it to you
 
 Manifest already works with ❤️ [Lovable](https://lovable.dev) and [Bolt.new](https://bolt.new) if you clone the project and run it locally. With a native integration, you could launch Manifest directly inside them.
 
-Want to see Manifest inside Lovable ? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
+Want to see Manifest inside **Lovable** ? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
 
 </div>
 

From 4111ffc23bc660d349e5ecdd6a1c3f136b5bbd38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien@buddyweb.fr>
Date: Fri, 25 Jul 2025 16:39:58 +0200
Subject: [PATCH 29/34] feat: update content

---
 llm-rules.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llm-rules.md b/llm-rules.md
index 3d733c4..e5c2c74 100644
--- a/llm-rules.md
+++ b/llm-rules.md
@@ -31,7 +31,7 @@ If you need to install rules manually, download the file below and add it to you
 
 <div style={{ backgroundColor: '#d6ffee', padding: '1em 1em 0.1em 1em', borderRadius: '12px' }}>
 
-Manifest already works with ❤️ [Lovable](https://lovable.dev) and [Bolt.new](https://bolt.new) if you clone the project and run it locally. With a native integration, you could launch Manifest directly inside them.
+Manifest already works with ❤️ [Lovable](https://lovable.dev) and [Bolt.new](https://bolt.new) if you clone the project and run it locally. However it is still hard to convince those LLM to use manifest as a backend as they have been programmed to do otherwise. With a native integration, you could launch Manifest directly inside them.
 
 Want to see Manifest inside **Lovable** ? ⬆️ **[Upvote the idea](https://lovable.featurebase.app/fr/p/manifestbuild-integration?slug=manifestbuild-integration)**.
 

From 49e1599054fa4a6450a340a2aa9813777126fa4a Mon Sep 17 00:00:00 2001
From: "J. B. Rainsberger" <me@jbrains.ca>
Date: Fri, 1 Aug 2025 10:36:53 -0300
Subject: [PATCH 30/34] =?UTF-8?q?Fix=20tiny=20typo:=20=C3=BE=20->=20p=20in?=
 =?UTF-8?q?=20package.json?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 introduction.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/introduction.md b/introduction.md
index d3569d5..5bd9c8e 100644
--- a/introduction.md
+++ b/introduction.md
@@ -69,7 +69,7 @@ If you already have a frontend app, you can run the `npx add-manifest` command f
 
 #### Note with PNMP
 
-As [PNPM](https://pnpm.io/fr/) blocks postinstall scripts, we have to adapt the `þackage.json`. Add this to your `package.json` file before doing `pnpm install`:
+As [PNPM](https://pnpm.io/fr/) blocks postinstall scripts, we have to adapt the `package.json`. Add this to your `package.json` file before doing `pnpm install`:
 
 ```json
   "pnpm": {

From 1d929349ae1c9e6abebfa6ba98f182fef6be80c6 Mon Sep 17 00:00:00 2001
From: Bruno Perez <bruno@buddyweb.fr>
Date: Thu, 7 Aug 2025 08:30:46 +0200
Subject: [PATCH 31/34] add telemetry doc

---
 telemetry.md | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 telemetry.md

diff --git a/telemetry.md b/telemetry.md
new file mode 100644
index 0000000..3fd5166
--- /dev/null
+++ b/telemetry.md
@@ -0,0 +1,30 @@
+---
+id: telemetry
+title: Telemetry
+description: Manifest collects a tiny amount of anonymous data to help us improve the product. See how and what data, and eventually opt out.
+---
+
+# Telemetry
+
+Telemetry is the process of collecting data from remote sources to improve a software.
+
+At Manifest, we believe that we should only collect the minimum amount of data to help us improving our product. Participation is optional.
+
+## What is being collected ?
+
+When checking for a new version available in the admin panel, we log the following information:
+
+- Current version of Manifest
+- Anonymous IP
+- Origin (URL)
+- Environment (development/production)
+
+Information is not logged more than once every 24 hours.
+
+# Opting out
+
+That tiny amount of data we collect helps us a lot to make Manifest a better product. Nevertheless you can opt-out anytime adding this to your `.env` file.
+
+```
+MANIFEST_TELEMETRY_DISABLED=true
+```

From f7c2aa60ab8aa3b43cf02168a321a44fbf7342e7 Mon Sep 17 00:00:00 2001
From: Bruno Perez <bruno@buddyweb.fr>
Date: Thu, 7 Aug 2025 09:32:49 +0200
Subject: [PATCH 32/34] fix: wrong heading number

---
 telemetry.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/telemetry.md b/telemetry.md
index 3fd5166..4eae86f 100644
--- a/telemetry.md
+++ b/telemetry.md
@@ -21,7 +21,7 @@ When checking for a new version available in the admin panel, we log the followi
 
 Information is not logged more than once every 24 hours.
 
-# Opting out
+## Opting out
 
 That tiny amount of data we collect helps us a lot to make Manifest a better product. Nevertheless you can opt-out anytime adding this to your `.env` file.
 

From 2bbe4419925b73dc6e0c58553d43b43ad12c1fae Mon Sep 17 00:00:00 2001
From: Bruno Perez <bruno@buddyweb.fr>
Date: Fri, 8 Aug 2025 09:09:00 +0200
Subject: [PATCH 33/34] feat(deploy): update example dockerfile

---
 deploy.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/deploy.md b/deploy.md
index 004a4dc..baae712 100644
--- a/deploy.md
+++ b/deploy.md
@@ -69,16 +69,16 @@ See more [environment variables](./config.md#general-variables) you may need.
 
 The `npm run start` script should only be used for **development** as it watches file changes.
 
-Go back to your codebase and open the `package.json` file and add a new **start** script on the scripts list with the value `node node_modules/manifest/dist/manifest/src/main.js` as following:
+Go back to your codebase and open the `package.json` file and add a new **start:prod** script on the scripts list with the value `node node_modules/manifest/dist/manifest/src/main.js` as following:
 
 ```json title="package.json"
 "scripts": {
-    "start": "node node_modules/manifest/dist/manifest/src/main.js"
+    "start:prod": "node node_modules/manifest/dist/manifest/src/main.js"
     [...]
 }
 ```
 
-After that you will be able to run Manifest for production with `npm run start`.
+After that you will be able to run Manifest for production with `npm run start:prod` without watching file changes.
 
 ## Docker
 
@@ -86,7 +86,7 @@ After that you will be able to run Manifest for production with `npm run start`.
 
 ```dockerfile title="Dockerfile"
 # Use the official Node.js image as a base
-FROM node:18-slim
+FROM node:22-slim
 
 # Copy package.json and package-lock.json (if available)
 COPY package*.json ./
@@ -104,7 +104,7 @@ ENV NODE_ENV=production
 EXPOSE 1111
 
 # Start the application
-CMD ["npm", "run", "start"]
+CMD ["npm", "run", "start:prod"]
 ```
 
 ## Guides for popular app platform services

From a7b2813afbd1550b3964fdd431419259c06a27de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Conejo?= <sebastien.conejo@buddyweb.fr>
Date: Fri, 8 Aug 2025 18:31:53 +0200
Subject: [PATCH 34/34] Update introduction.md

---
 introduction.md | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/introduction.md b/introduction.md
index acc0d21..327b2e0 100644
--- a/introduction.md
+++ b/introduction.md
@@ -9,18 +9,19 @@ description: Manifest is an Open Source backend that fits in a single YAML file.
 
 ## Introduction
 
-Manifest is a **backend** designed for developers using **AI coding tools** like [Cursor](https://www.cursor.com/), [Copilot](https://github.com/features/copilot) or [Windsurf](https://windsurf.com/).
+Manifest is a **1-file backend** for prototypes and MVPs.
 
-If you’ve been using AI tools to build your app or website, you already know the truth: Generating a frontend is easy, but building the backend is still a mess.
+Most backend tools feel too heavy for simple apps. They force you to use bloated configuration UIs. Even with AI tools that generate frontend code, the backend remains a pain to set up and validate. It slows you down when you just want to test an idea or build something simple..
+The solution
 
-With **Manifest**, you define your entire backend in a single YAML file. It can be generated and edited by both humans and LLMs.
+Manifest is an open source backend that fits in only 1 file. You define it in a simple yaml language to get data, auth, storage, logic and an admin panel.
 
-Key advantages:
+**Key advantages:**
 
-- 🤖 Fits naturally into AI-assisted coding
-- 🔒 Easy to edit, validate and version.
-- 🗄️ Data, logic, storage, essentials features and an admin panel
-- 🧠 Reduce LLM token usage by up to 90%
+- 🧠 Zero friction setup
+- 🚀 Ship your backend fast and stay focused on building your app. 
+- 🤖 Easy for LLMs to generate
+- 💻 Can run everywhere
 
 ## Install Manifest
 
