# windwalker-io/starter architecture

> Architecture diagram of the GitHub repository windwalker-io/starter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/windwalker-io/starter
- Repository: https://github.com/windwalker-io/starter

## Overview

Windwalker Starter is a PHP web-application starter with a sample public home page, an admin area, and a CLI for project and database tasks. The web path boots through the HTTP entry point, loads application routing, and serves feature pages; the Acme admin repository reads records from the database. The README documents broader CLI capabilities, including migrations, seeding, generation, assets, and mail. Some route and CLI wiring is represented by the tree and documentation rather than sampled implementation, so uncertain links are omitted.

Main entry points: [`routes/main.route.php`](https://github.com/windwalker-io/starter/blob/master/routes/main.route.php) (Route loader), [`src/Console/Application.php`](https://github.com/windwalker-io/starter/blob/master/src/Console/Application.php) (Console application), [`src/Web/Application.php`](https://github.com/windwalker-io/starter/blob/master/src/Web/Application.php) (Web application), [`routes/admin.route.php`](https://github.com/windwalker-io/starter/blob/master/routes/admin.route.php) (Admin routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web runtime"]
  node_web_entry["Web entry point<br/>[index.php]"]
  node_web_app["Web application<br/>[Application.php]"]
  node_main_routes["Route loader<br/>[main.route.php]"]
  node_front_routes["Front routes<br/>[front.route.php]"]
  node_admin_routes["Admin routes<br/>[admin.route.php]"]
  node_package_routes["Package routes"]
end

subgraph group_features["Application features"]
  node_front_home["Home page<br/>[HomeController.php]"]
  node_front_middleware["Front middleware"]
  node_admin_middleware["Admin middleware"]
  node_dashboard["Admin dashboard"]
  node_acme_controller["Acme admin<br/>[AcmeController.php]"]
  node_acme_repo["Acme repository<br/>[AcmeRepository.php]"]
  node_acme_entity["Acme entity<br/>[Acme.php]"]
end

subgraph group_presentation["Views and layouts"]
  node_home_view["Home view<br/>[HomeView.php]"]
  node_home_template["Home template<br/>[home.blade.php]"]
  node_dashboard_view["Dashboard view<br/>[DashboardView.php]"]
  node_dashboard_template["Dashboard template"]
  node_acme_view["Acme view<br/>[AcmeView.php]"]
  node_acme_template["Acme template<br/>[acme.blade.php]"]
end

subgraph group_cli["Console and data tasks"]
  node_console_app["Console application<br/>[Application.php]"]
  node_command_registry["Command registry<br/>[commands.php]"]
  node_schedules["Scheduled tasks<br/>[schedules.php]"]
  node_seed_registry["Seeder registry<br/>[main.seeder.php]"]
  node_acme_seeder["Acme seeder<br/>[acme.seeder.php]"]
end

subgraph group_configuration["Application configuration"]
  node_routing_config["Routing configuration<br/>[routing.config.php]"]
  node_app_config["Application config<br/>[main.config.php]"]
end

node_visitor(("Web visitor"))
node_http(("HTTP server"))
node_database[("Application database")]
node_console_user(("CLI operator"))

node_visitor -->|"sends request"| node_http
node_http -->|"dispatches request"| node_web_entry
node_web_entry -->|"boots"| node_web_app
node_web_app -->|"loads routing"| node_main_routes
node_routing_config -->|"configures routes"| node_main_routes
node_main_routes -->|"loads routes"| node_front_routes
node_main_routes -->|"loads routes"| node_admin_routes
node_main_routes -->|"loads routes"| node_package_routes
node_front_routes -->|"routes to"| node_front_home
node_admin_routes -->|"routes to"| node_dashboard
node_admin_routes -->|"routes to"| node_acme_controller
node_front_home -->|"selects view"| node_home_view
node_home_view -->|"renders"| node_home_template
node_dashboard -->|"selects view"| node_dashboard_view
node_dashboard_view -->|"renders"| node_dashboard_template
node_acme_controller -->|"uses repository"| node_acme_repo
node_acme_repo -->|"maps records"| node_acme_entity
node_acme_repo -->|"queries"| node_database
node_acme_controller -->|"selects view"| node_acme_view
node_acme_view -->|"renders"| node_acme_template
node_console_user -->|"runs commands"| node_console_app
node_console_app -->|"registers commands"| node_command_registry
node_console_app -->|"runs schedules"| node_schedules
node_console_app -->|"imports seeders"| node_seed_registry
node_seed_registry -->|"includes seeder"| node_acme_seeder
node_web_app -->|"uses configuration"| node_app_config

click node_web_entry "https://github.com/windwalker-io/starter/blob/master/www/index.php"
click node_web_app "https://github.com/windwalker-io/starter/blob/master/src/Web/Application.php"
click node_main_routes "https://github.com/windwalker-io/starter/blob/master/routes/main.route.php"
click node_routing_config "https://github.com/windwalker-io/starter/blob/master/etc/conf/routing.config.php"
click node_front_routes "https://github.com/windwalker-io/starter/blob/master/routes/front.route.php"
click node_admin_routes "https://github.com/windwalker-io/starter/blob/master/routes/admin.route.php"
click node_package_routes "https://github.com/windwalker-io/starter/tree/master/routes/packages"
click node_front_home "https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/HomeController.php"
click node_front_middleware "https://github.com/windwalker-io/starter/blob/master/src/Module/Front/FrontMiddleware.php"
click node_home_view "https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/HomeView.php"
click node_home_template "https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/views/home.blade.php"
click node_admin_middleware "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/AdminMiddleware.php"
click node_dashboard "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/DashboardController.php"
click node_dashboard_view "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/DashboardView.php"
click node_dashboard_template "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/views/dashboard.blade.php"
click node_acme_controller "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeController.php"
click node_acme_repo "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeRepository.php"
click node_acme_entity "https://github.com/windwalker-io/starter/blob/master/src/Entity/Acme.php"
click node_acme_view "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeView.php"
click node_acme_template "https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/views/acme.blade.php"
click node_console_app "https://github.com/windwalker-io/starter/blob/master/src/Console/Application.php"
click node_command_registry "https://github.com/windwalker-io/starter/blob/master/resources/registry/commands.php"
click node_schedules "https://github.com/windwalker-io/starter/blob/master/resources/registry/schedules.php"
click node_seed_registry "https://github.com/windwalker-io/starter/blob/master/resources/seeders/main.seeder.php"
click node_acme_seeder "https://github.com/windwalker-io/starter/blob/master/resources/seeders/acme.seeder.php"
click node_app_config "https://github.com/windwalker-io/starter/blob/master/etc/app/main.config.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_web_entry,node_web_app,node_main_routes,node_front_routes,node_admin_routes,node_package_routes toneBlue
class node_front_home,node_front_middleware,node_admin_middleware,node_dashboard,node_acme_controller,node_acme_repo,node_acme_entity,node_database toneAmber
class node_home_view,node_home_template,node_dashboard_view,node_dashboard_template,node_acme_view,node_acme_template,node_http toneMint
class node_console_app,node_command_registry,node_schedules,node_seed_registry,node_acme_seeder toneRose
class node_routing_config,node_app_config,node_visitor,node_console_user toneIndigo
```

## Components

### Web runtime

- [Web entry point](https://github.com/windwalker-io/starter/blob/master/www/index.php): `www/index.php`
- [Web application](https://github.com/windwalker-io/starter/blob/master/src/Web/Application.php): `src/Web/Application.php`
- [Route loader](https://github.com/windwalker-io/starter/blob/master/routes/main.route.php): `routes/main.route.php`
- [Front routes](https://github.com/windwalker-io/starter/blob/master/routes/front.route.php): `routes/front.route.php`
- [Admin routes](https://github.com/windwalker-io/starter/blob/master/routes/admin.route.php): `routes/admin.route.php`
- [Package routes](https://github.com/windwalker-io/starter/tree/master/routes/packages): `routes/packages`

### Application features

- [Home page](https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/HomeController.php): `src/Module/Front/Home/HomeController.php`
- [Front middleware](https://github.com/windwalker-io/starter/blob/master/src/Module/Front/FrontMiddleware.php): `src/Module/Front/FrontMiddleware.php`
- [Admin middleware](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/AdminMiddleware.php): `src/Module/Admin/AdminMiddleware.php`
- [Admin dashboard](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/DashboardController.php): `src/Module/Admin/Dashboard/DashboardController.php`
- [Acme admin](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeController.php): `src/Module/Admin/Acme/AcmeController.php`
- [Acme repository](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeRepository.php): `src/Module/Admin/Acme/AcmeRepository.php`
- [Acme entity](https://github.com/windwalker-io/starter/blob/master/src/Entity/Acme.php): `src/Entity/Acme.php`

### Views and layouts

- [Home view](https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/HomeView.php): `src/Module/Front/Home/HomeView.php`
- [Home template](https://github.com/windwalker-io/starter/blob/master/src/Module/Front/Home/views/home.blade.php): `src/Module/Front/Home/views/home.blade.php`
- [Dashboard view](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/DashboardView.php): `src/Module/Admin/Dashboard/DashboardView.php`
- [Dashboard template](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Dashboard/views/dashboard.blade.php): `src/Module/Admin/Dashboard/views/dashboard.blade.php`
- [Acme view](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/AcmeView.php): `src/Module/Admin/Acme/AcmeView.php`
- [Acme template](https://github.com/windwalker-io/starter/blob/master/src/Module/Admin/Acme/views/acme.blade.php): `src/Module/Admin/Acme/views/acme.blade.php`

### Console and data tasks

- [Console application](https://github.com/windwalker-io/starter/blob/master/src/Console/Application.php): `src/Console/Application.php`
- [Command registry](https://github.com/windwalker-io/starter/blob/master/resources/registry/commands.php): `resources/registry/commands.php`
- [Scheduled tasks](https://github.com/windwalker-io/starter/blob/master/resources/registry/schedules.php): `resources/registry/schedules.php`
- [Seeder registry](https://github.com/windwalker-io/starter/blob/master/resources/seeders/main.seeder.php): `resources/seeders/main.seeder.php`
- [Acme seeder](https://github.com/windwalker-io/starter/blob/master/resources/seeders/acme.seeder.php): `resources/seeders/acme.seeder.php`

### Application configuration

- [Routing configuration](https://github.com/windwalker-io/starter/blob/master/etc/conf/routing.config.php): `etc/conf/routing.config.php`
- [Application config](https://github.com/windwalker-io/starter/blob/master/etc/app/main.config.php): `etc/app/main.config.php`

### Other components

- **Web visitor**
- **HTTP server**
- **Application database**
- **CLI operator**

## Connections

- Web visitor → HTTP server: sends request
- HTTP server → Web entry point: dispatches request
- Web entry point → Web application: boots
- Web application → Route loader: loads routing
- Routing configuration → Route loader: configures routes
- Route loader → Front routes: loads routes
- Route loader → Admin routes: loads routes
- Route loader → Package routes: loads routes
- Front routes → Home page: routes to
- Admin routes → Admin dashboard: routes to
- Admin routes → Acme admin: routes to
- Home page → Home view: selects view
- Home view → Home template: renders
- Admin dashboard → Dashboard view: selects view
- Dashboard view → Dashboard template: renders
- Acme admin → Acme repository: uses repository
- Acme repository → Acme entity: maps records
- Acme repository → Application database: queries
- Acme admin → Acme view: selects view
- Acme view → Acme template: renders
- CLI operator → Console application: runs commands
- Console application → Command registry: registers commands
- Console application → Scheduled tasks: runs schedules
- Console application → Seeder registry: imports seeders
- Seeder registry → Acme seeder: includes seeder
- Web application → Application config: uses configuration
