diff --git a/README.md b/README.md
index a0d3935f..dd218410 100644
--- a/README.md
+++ b/README.md
@@ -14,25 +14,513 @@
You need composer to autoload all your classes from the inc folder.
-Use the `beapi/composer-scaffold-theme` package that add it automatically to the composer.json file.
-You can add it yourself like this :
-
-```composer.json
- "autoload": {
- "psr-4": {
- "BEA\\Theme\\Framework\\": "content/themes/framework/inc/"
- }
+Use the `beapi/composer-scaffold-theme` package that adds it automatically to `composer.json`, or declare the PSR-4 mapping yourself. BFF maps the `inc/` directory like this:
+
+```json
+"autoload": {
+ "psr-4": {
+ "BEA\\Theme\\Framework\\": "inc/"
}
+}
```
### Autoload
-The autoload is based on psr-4 and handled by composer.
+Autoloading is PSR-4 and handled by Composer. Theme PHP lives under `inc/` (blocks, services, **Formatting helpers**, etc.).
### Node.js
You need [the latest stable version of Node.js](https://nodejs.org/).
+## Formatting helpers
+
+Helpers are namespaced functions under `BEA\Theme\Framework\Helpers\Formatting\`. Import them with `use function` (recommended) or call them with a fully qualified name.
+
+### Image (`Helpers\Formatting\Image`)
+
+Outputs attachment images with `wp_get_attachment_image()`, optional wrapper markup, and filters for attributes, settings, and final HTML.
+
+**Featured image in a card** (custom size and class, `data-location` for ARI plugin):
+
+```php
+use function BEA\Theme\Framework\Helpers\Formatting\Image\the_image;
+
+// Without ARI default image (hidden if no image)
+the_image(
+ (int) get_post_thumbnail_id(),
+ [
+ 'class' => 'card__image',
+ 'data-location' => 'archive-card',
+ ],
+ [
+ 'before' => '',
+ 'after' => '',
+ ]
+);
+
+// With ARI default image
+the_image(
+ (int) get_post_thumbnail_id(),
+ [
+ 'class' => 'card__image',
+ 'data-location' => 'archive-card',
+ ],
+ [
+ 'default' => true,
+ 'before' => '',
+ 'after' => '',
+ ]
+);
+
+// Without ARI plugin
+the_image(
+ (int) get_post_thumbnail_id(),
+ [
+ 'class' => 'card__image',
+ ],
+ [
+ 'size' => 'thumbnail',
+ 'before' => '',
+ 'after' => '',
+ ]
+);
+```
+
+If `(int) get_post_thumbnail_id()` is `0` and `'default' => false`, the helper outputs nothing. With `'default' => true` and no image, behavior depends on your default-image setup and filters.
+
+**Decorative image** (empty `alt` is preserved as `alt=""` for accessibility):
+
+```php
+use function BEA\Theme\Framework\Helpers\Formatting\Image\the_image;
+
+the_image(
+ $attachment_id,
+ [
+ 'class' => 'hero__bg',
+ 'alt' => '',
+ ],
+ [
+ 'size' => 'full'
+ ]
+);
+```
+
+**Illustrative generated HTML** (`alt=""` is forced when you pass `'alt' => ''`):
+
+```html
+
+```
+
+**Echo variant:** `get_the_image()` — same arguments as `the_image()`, prints markup.
+
+**Filters:** `bea_theme_framework_the_image_attributes`, `bea_theme_framework_the_image_settings`, `bea_theme_framework_the_image_markup`.
+
+---
+
+### Link (`Helpers\Formatting\Link`)
+
+Builds escaped `` or `