diff --git a/.llms-snapshots/llms-full.txt b/.llms-snapshots/llms-full.txt
index ba7dd15f..872f26c6 100644
--- a/.llms-snapshots/llms-full.txt
+++ b/.llms-snapshots/llms-full.txt
@@ -1918,16 +1918,13 @@ The `data` parameter is the file you want to upload. This is a `Blob`, typically
The `uploadFile` function provides various options, including:
* `filename`: By default, Juno uses the file's filename. You can overwrite this and provide a custom filename. Example: `myimage.jpg`.
-* `fullPath`: Juno will automatically compute the `fullPath`, which is the **unique** path that is used to make the asset available on the internet. The `fullPath` is the filename prefixed with `/` plus the related collection key. Example: `/images/myimage.jpg`.
+* `fullPath`: The unique path where the asset will be stored and accessed. 👉 See ([What is a `fullPath`?](#what-is-a-fullpath)) for details and examples.
* `headers`: The headers can affect how the browser handles the asset. If no headers are provided Juno will infer the `Content-Type` from the file type.
* `encoding`: The type of encoding for the file. For example, `identity` (raw) or `gzip`.
**Note:**
-* Uploading a file with the same name as an existing file will overwrite the previous file (assuming the uploader has write access to the previous file).
-
* URL encoding is currently not supported on the Internet Computer. Therefore, it's important to keep in mind that your `filename` should not be encoded. That is why the library decodes the `filename` automatically.
-
#### Returns
@@ -1937,6 +1934,32 @@ The function returns the uploaded asset key as an object with the following fiel
* `name`: The name of the asset (typically the filename). Example: `myimage.jpg`.
* `downloadUrl`: The URL to access the asset on the web or to download it. This URL can be used in a browser or embedded directly in HTML elements like `
` or ``.
+#### What is a `fullPath`?
+
+The `fullPath` is the **unique path** of an asset within your Satellite's storage. It determines the asset’s public-facing URL and is used throughout the SDK to identify, retrieve, list, or delete the asset.
+
+It always starts with a **slash**, and follows the structure:
+
+```
+/collection/filename
+```
+
+For example, uploading a file to the `"images"` collection with the filename `"logo.png"` results in:
+
+```
+/images/logo.png
+```
+
+#### Key points
+
+* If the asset is **not part of the frontend**, the `fullPath` always includes the **collection** name.
+* By default, the `fullPath` is automatically derived from the uploaded file's name (e.g. `/images/photo.jpg`).
+* You can override the path using a custom filename. These are both valid:
+* `/collection/hello.jpg`
+* `/collection/my/sub/path/hello.jpg`
+* The `fullPath` is effectively the **asset key** used in Juno Storage.
+* ⚠️ Uploading a file to an existing `fullPath` will **overwrite** the existing file.
+
---
## Upload blob
@@ -3241,6 +3264,16 @@ It’s a great reference for more advanced setups and multi-collection coordinat
* [Configuration Reference](/docs/reference/configuration.md)
* [Datastore Collections](/docs/build/datastore/collections.md)
+---
+
+## Crate Docs
+
+These crates are used to build and extend serverless functions in Rust with Juno:
+
+* [junobuild-satellite](https://docs.rs/junobuild-satellite): Core features and runtime for building a Satellite in Rust, including hooks, assertions, and datastore integration.
+* [junobuild-macros](https://docs.rs/junobuild-macros): Procedural macros for declaratively attaching hooks and assertions (e.g., `#[assert_set_doc]`, `#[on_delete_doc]`).
+* [junobuild-utils](https://docs.rs/junobuild-utils): Utility helpers for working with documents, including data encoding, decoding, and assertion context handling.
+
# Using Juno with AI
If you're using AI to build with Juno, you can use our `llms.txt` files to help AI tools better understand the platform.
diff --git a/docs/build/storage/development.mdx b/docs/build/storage/development.mdx
index 0efdd6dc..c4b7442d 100644
--- a/docs/build/storage/development.mdx
+++ b/docs/build/storage/development.mdx
@@ -30,14 +30,12 @@ The `data` parameter is the file you want to upload. This is a `Blob`, typically
The `uploadFile` function provides various options, including:
- `filename`: By default, Juno uses the file's filename. You can overwrite this and provide a custom filename. Example: `myimage.jpg`.
-- `fullPath`: Juno will automatically compute the `fullPath`, which is the **unique** path that is used to make the asset available on the internet. The `fullPath` is the filename prefixed with `/` plus the related collection key. Example: `/images/myimage.jpg`.
+- `fullPath`: The unique path where the asset will be stored and accessed. 👉 See [What is a `fullPath`?](#what-is-a-fullpath) for details and examples.
- `headers`: The headers can affect how the browser handles the asset. If no headers are provided Juno will infer the `Content-Type` from the file type.
- `encoding`: The type of encoding for the file. For example, `identity` (raw) or `gzip`.
:::note
-- Uploading a file with the same name as an existing file will overwrite the previous file (assuming the uploader has write access to the previous file).
-
- URL encoding is currently not supported on the Internet Computer. Therefore, it's important to keep in mind that your `filename` should not be encoded. That is why the library decodes the `filename` automatically.
:::
@@ -50,6 +48,32 @@ The function returns the uploaded asset key as an object with the following fiel
- `name`: The name of the asset (typically the filename). Example: `myimage.jpg`.
- `downloadUrl`: The URL to access the asset on the web or to download it. This URL can be used in a browser or embedded directly in HTML elements like `
` or ``.
+#### What is a `fullPath`?
+
+The `fullPath` is the **unique path** of an asset within your Satellite's storage. It determines the asset’s public-facing URL and is used throughout the SDK to identify, retrieve, list, or delete the asset.
+
+It always starts with a **slash**, and follows the structure:
+
+```
+/collection/filename
+```
+
+For example, uploading a file to the `"images"` collection with the filename `"logo.png"` results in:
+
+```
+/images/logo.png
+```
+
+#### Key points
+
+- If the asset is **not part of the frontend**, the `fullPath` always includes the **collection** name.
+- By default, the `fullPath` is automatically derived from the uploaded file's name (e.g. `/images/photo.jpg`).
+- You can override the path using a custom filename. These are both valid:
+- `/collection/hello.jpg`
+- `/collection/my/sub/path/hello.jpg`
+- The `fullPath` is effectively the **asset key** used in Juno Storage.
+- ⚠️ Uploading a file to an existing `fullPath` will **overwrite** the existing file.
+
---
## Upload blob