diff --git a/.vitepress/config/sidebar.ts b/.vitepress/config/sidebar.ts
index 677b202..8b21e63 100644
--- a/.vitepress/config/sidebar.ts
+++ b/.vitepress/config/sidebar.ts
@@ -151,6 +151,7 @@ const sidebar = [
// collapsed: true,
items: [
{ text: 'Leaf + MVC', link: '/docs/mvc/' },
+ { text: 'Leaf MVC v4', link: '/docs/mvc/mvc4' },
{ text: 'Controllers', link: '/docs/mvc/controllers' },
// { text: 'Views', link: '/docs/frontend/mvc' },
{ text: 'Models', link: '/docs/database/models' },
diff --git a/src/docs/database/files.md b/src/docs/database/files.md
index d9476a5..7e8bf2c 100644
--- a/src/docs/database/files.md
+++ b/src/docs/database/files.md
@@ -58,11 +58,9 @@ seeds:
count: 5
truncate: true
data:
- name: 'faker:name'
- email: 'faker:unique:safeEmail'
- email_verified_at: 'tick:now'
- password: 'hash:password'
- remember_token: 'randomString:10'
+ name: '@faker.name'
+ identifier: '@faker.uuid'
+ verified_at: '@tick.format:YYYY-MM-DD HH:mm:ss'
```
Breaking this file down, there are three main sections:
diff --git a/src/docs/mvc/mvc4.md b/src/docs/mvc/mvc4.md
new file mode 100644
index 0000000..1d3a9ff
--- /dev/null
+++ b/src/docs/mvc/mvc4.md
@@ -0,0 +1,225 @@
+# Leaf MVC 4 ALPHA
+
+
+
+
+
+Leaf MVC 4 is a new version of the Leaf MVC framework that is currently in development. It is designed to be more flexible and easier to use than v3 and comes with a ton of improvements, enhanced simplicity, new features, and a more modern codebase with cutting-edge features tailored to improve your development experience. While working on Leaf MVC 4, we were able to backport some of the features to Leaf MVC 3, so if you have used Leaf MVC 3.8 or later, switching to v4 should be a breeze.
+
+
+
+![image](https://github.com/user-attachments/assets/5fc4e221-8728-4d37-8683-28455f685d1f)
+
+## Key Highlights
+
+Here are some of the key highlights of Leaf MVC 4:
+
+1. Minimalist Philosophy
+
+- Smaller Core: Streamlined codebase for faster performance and reduced footprint.
+- Modular Architecture: Customize your projects with opt-in integrations.
+
+2. Simplified Folder Structure
+
+- Modularized structure with flexibility to include only what you need.
+- Clear separation of concerns: Controllers, Models, Views, and Configs.
+
+3. Enhanced Developer Tools
+
+- YAML-based database schema management.
+- Console commands with interactive prompts.
+- Automatic setup of Leaf modules.
+
+## Installation
+
+To install Leaf MVC 4, you can use Composer:
+
+```bash:no-line-numbers
+composer create-project leafs/mvc:v4.0-alpha my-app
+```
+
+This will create a new Leaf MVC 4 project in the `my-app` directory. Since Leaf MVC 4 is still in alpha, you can't install it using the Leaf CLI tool yet, but we'll keep you updated as soon as it's available.
+
+## Folder Structure
+
+Leaf MVC ships with a really lean folder structure that is designed to be flexible, easy to understand and easy to work with, especially for beginners. Here's a quick overview of the folder structure:
+
+```bash
+├───app
+│ ├── controllers
+│ ├── database
+│ ├── models
+│ ├── routes
+│ └── views
+│ └── errors
+└───public
+ └───assets
+ ├── css
+ └── img
+```
+
+- `app`: Contains all the application code including controllers, models, views, and routes, as well as your database files.
+- `public`: Contains all the publicly accessible files including assets like CSS and images.
+
+This is much leaner than the folder structure in Leaf MVC 3, which had a lot of directories that were not always necessary. Another thing to note in v4 is that the `config` directory has been removed and configuration files are now provided automatically by Leaf. However, you can still create a `config` directory if you need to add custom configuration files or use the `php leaf config:publish` command to publish the default configuration files.
+
+Also, although this is the default folder structure, if Leaf or any of its modules require additional directories, they will be created automatically. For instance, Blade templates will create a `storage/views` directory for compiled views.
+
+## Customizable view layer
+
+Leaf MVC 4 comes with a customizable view layer that not only allows you to bring in your own view engine but also allows you to extend the default view engine. This means you can use any view engine you want, including Twig, Smarty, etc., or you can extend the default Leaf view engine to add your own custom features like custom directives, filters, etc.
+
+If you need to add anything new to your view layer, you can publish the view config using the `config:publish` command:
+
+```bash:no-line-numbers
+php leaf config:publish view
+```
+
+This will create a `config/view.php` file in your `app` directory where you can add your custom view configurations. For this example, we will add a new directive to the view engine:
+
+```php
+ \Leaf\Blade::class,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom config method
+ |--------------------------------------------------------------------------
+ |
+ | Configuration for your templating engine.
+ |
+ */
+ 'config' => function (\Leaf\Blade $engine, array $config) {
+ $engine->configure($config['views'], $config['cache']);
+ },
+
+ /*
+ |--------------------------------------------------------------------------
+ | Custom render method
+ |--------------------------------------------------------------------------
+ |
+ | This render method is triggered whenever render() is called
+ | in your app if you're using a custom view engine.
+ |
+ */
+ 'render' => null,
+
+ /*
+ |--------------------------------------------------------------------------
+ | Extend view engine
+ |--------------------------------------------------------------------------
+ |
+ | Some view engines like blade allow you extend the engine to
+ | add extra functions or directives. This is just the place to
+ | do all of that. Extend is a function that accepts an instance
+ | of your view engine which you can 'extend'
+ |
+ */
+ 'extend' => null,
+];
+```
+
+We can pass a function to the `extend` key to extend the Blade view engine. Leaf will give us the instanciated view engine as the first argument, so we can use it to add our custom directive:
+
+```php
+'extend' => function (\Leaf\Blade $engine) {
+ $engine->directive('Button', function ($expression) {
+ return "$expression