# josepbacardit/peluqueriajenver architecture

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

- Interactive diagram: https://gitdiagram.com/josepbacardit/peluqueriajenver
- Repository: https://github.com/josepbacardit/peluqueriajenver

## Overview

1. **Overall shape**
   - This is a **Laravel monolith** for a hair salon site (“Peluquería Jenver”).
   - The repo is currently **page-oriented and content-heavy** rather than a feature-rich CRUD system: the tree shows mostly Blade pages, partials, a sitemap controller, and default Laravel infrastructure.

2. **Request entrypoint and framework boundary**
   - All HTTP traffic enters through **`public/index.php`**, which boots Laravel via **`bootstrap/app.php`**.
   - Routing is centralized in **`routes/web.php`** for browser pages, with **`routes/console.php`** for artisan/CLI hooks.

3. **Controller layer**
   - The app has a very small controller surface:
     - **`app/Http/Controllers/SitemapController.php`** for sitemap output.
     - The base **`Controller.php`**.
   - This suggests the app mostly serves **rendered pages directly from routes**, with minimal server-side business logic.

4. **View/presentation subsystem**
   - The main UI is built with **Blade templates** in `resources/views`.
   - There is a shared layout at **`resources/views/layouts/app.blade.php`** and reusable fragments in **`resources/views/partials/`**:
     - header/footer
     - cookie banner
     - FAQ
     - pricing
     - schema/local structured-data snippet
   - Page templates include:
     - home
     - contact
     - legal/privacy/cookies
     - service detail pages
     - sitemap view

5. **Content structure**
   - The page set is organized around a public-facing salon website:
     - home page
     - service catalog pages such as haircut/treatments, color/highlights, beauty/aesthetics, event styling
     - legal/compliance pages
     - contact page
   - `resources/views/pages/services/*` indicates the service catalog is **split into dedicated views**, likely each rendered as an individual route.

6. **Static assets pipeline**
   - Frontend assets live in **`resources/css/app.css`** and **`resources/js/app.js`**, with Vite configured in **`vite.config.js`**.
   - JavaScript bootstrap is split into **`resources/js/bootstrap.js`**, following standard Laravel asset initialization.
   - Compiled assets are served from **`public/`**, which also contains **`robots.txt`**, `.htaccess`, and images.

7. **Media and public files**
   - `public/images/galeria/` suggests a static gallery directory for salon imagery.
   - Because images are under `public/`, they are treated as **directly web-accessible assets**, not managed uploads.

8. **Localization/content language boundary**
   - The app is partially localized:
     - `lang/es/*` contains Spanish site content keys such as `home`, `navigation`, `servicios`.
     - `lang/en/*` contains standard Laravel auth/validation messages.
   - This indicates a **Spanish-facing public site** with some Laravel defaults preserved in English.

9. **Data and persistence layer**
   - The database layer is mostly **Laravel defaults**:
     - `users`
     - cache table
     - jobs table
   - There are **no custom domain migrations/models** beyond `app/Models/User.php`, so current persistence appears limited to framework/user/auth support rather than appointments, clients, or services in code.

10. **Infrastructure services**
   - Config files cover the usual Laravel subsystems:
     - `database.php`
     - `cache.php`
     - `session.php`
     - `queue.php`
     - `mail.php`
     - `filesystems.php`
     - `auth.php`
     - `services.php`
   - The README notes SQLite/MySQL/PostgreSQL support, but the code tree suggests these are **enabling services**, not yet heavily used by custom business logic.

11. **Background work and runtime support**
   - `composer run dev` is described as starting:
     - Laravel HTTP server
     - queue worker
     - Vite asset watcher/build
   - That means the local architecture includes **three cooperating processes**: web, background jobs, and frontend compilation.

12. **Storage and runtime state**
   - `storage/` is the boundary for logs, cache, sessions, and any file uploads.
   - The presence of `storage/app/public` and `storage/logs` indicates standard Laravel separation between **persistent runtime state** and web-served assets.

13. **Testing and quality boundary**
   - Tests are split into **Feature** and **Unit** using **Pest/PHPUnit** (`tests/Pest.php`, `tests/TestCase.php`).
   - The included example tests imply the test suite is still lightweight and mostly scaffolded.

14. **Important architecture note for diagramming**
   - The README describes bookings, clients, employees, reports, and notifications, but the repository tree does **not yet show corresponding controllers/models/migrations**.
   - For an accurate architecture diagram, treat those as **intended future domain capabilities**, while the current implemented system is a **Laravel-rendered marketing/information site with sitemap and localized content**.

Main entry points: [`routes/web.php`](https://github.com/josepbacardit/peluqueriajenver/blob/main/routes/web.php) (web routes), [`resources/views/layouts/app.blade.php`](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/layouts/app.blade.php) (main layout), [`resources/views/pages/home.blade.php`](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/home.blade.php) (home), [`config`](https://github.com/josepbacardit/peluqueriajenver/tree/main/config) (config stack)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry & Framework"]
  node_public_index["index.php<br/>http entry<br/>[index.php]"]
  node_bootstrap_app["bootstrap app<br/>framework boot<br/>[app.php]"]
  node_routes_web["web routes<br/>route map<br/>[web.php]"]
  node_routes_console["console routes<br/>cli routes<br/>[console.php]"]
  node_controller_base["base controller<br/>controller base<br/>[Controller.php]"]
  node_sitemap_controller["sitemap controller<br/>page controller"]
end

subgraph group_presentation["Presentation"]
  node_layout_app["main layout<br/>blade layout<br/>[app.blade.php]"]
  node_partials["partials<br/>blade fragments"]
  node_home_page["home<br/>landing page<br/>[home.blade.php]"]
  node_contact_page["contact<br/>[contacto.blade.php]"]
  node_legal_pages["legal pages<br/>compliance pages"]
  node_service_pages["service pages<br/>service catalog"]
  node_sitemap_view["sitemap view<br/>sitemap page<br/>[sitemap.blade.php]"]
end

subgraph group_content["Content & Language"]
  node_spanish_lang["es content<br/>localized copy"]
  node_english_lang["en defaults<br/>framework copy"]
  node_gallery_assets[("gallery<br/>static media")]
  node_public_root["public assets<br/>web root"]
end

subgraph group_platform["Platform Services"]
  node_app_model["user model<br/>auth model<br/>[User.php]"]
  node_config_stack["config stack<br/>runtime config"]
  node_database_layer[("database<br/>schema & seed")]
  node_storage_runtime[("storage<br/>runtime state")]
  node_vite_assets["vite assets<br/>frontend build"]
  node_tests_suite["tests<br/>pest suite"]
end

node_public_index -->|"boots"| node_bootstrap_app
node_public_index -->|"dispatches to"| node_routes_web
node_routes_web -->|"renders"| node_home_page
node_routes_web -->|"renders"| node_contact_page
node_routes_web -->|"renders"| node_legal_pages
node_routes_web -->|"renders"| node_service_pages
node_routes_web -->|"invokes"| node_sitemap_controller
node_sitemap_controller -->|"returns"| node_sitemap_view
node_controller_base -->|"extends"| node_sitemap_controller
node_home_page -->|"uses"| node_layout_app
node_contact_page -->|"uses"| node_layout_app
node_legal_pages -->|"uses"| node_layout_app
node_service_pages -->|"uses"| node_layout_app
node_layout_app -->|"includes"| node_partials
node_home_page -->|"loads copy"| node_spanish_lang
node_layout_app -->|"serves from"| node_public_root
node_public_root -->|"exposes"| node_gallery_assets
node_app_model -->|"persists via"| node_database_layer
node_config_stack -->|"configures"| node_database_layer
node_config_stack -->|"configures"| node_storage_runtime
node_vite_assets -->|"builds into"| node_public_root
node_tests_suite -.->|"covers"| node_controller_base
node_tests_suite -.->|"covers"| node_routes_web
node_routes_console -->|"uses"| node_config_stack

click node_public_index "https://github.com/josepbacardit/peluqueriajenver/blob/main/public/index.php"
click node_bootstrap_app "https://github.com/josepbacardit/peluqueriajenver/blob/main/bootstrap/app.php"
click node_routes_web "https://github.com/josepbacardit/peluqueriajenver/blob/main/routes/web.php"
click node_routes_console "https://github.com/josepbacardit/peluqueriajenver/blob/main/routes/console.php"
click node_controller_base "https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Http/Controllers/Controller.php"
click node_sitemap_controller "https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Http/Controllers/SitemapController.php"
click node_layout_app "https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/layouts/app.blade.php"
click node_partials "https://github.com/josepbacardit/peluqueriajenver/tree/main/resources/views/partials"
click node_home_page "https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/home.blade.php"
click node_contact_page "https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/contacto.blade.php"
click node_legal_pages "https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/privacidad.blade.php"
click node_service_pages "https://github.com/josepbacardit/peluqueriajenver/tree/main/resources/views/pages/services"
click node_sitemap_view "https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/sitemap.blade.php"
click node_spanish_lang "https://github.com/josepbacardit/peluqueriajenver/tree/main/lang/es"
click node_english_lang "https://github.com/josepbacardit/peluqueriajenver/tree/main/lang/en"
click node_gallery_assets "https://github.com/josepbacardit/peluqueriajenver/tree/main/public/images/galeria"
click node_public_root "https://github.com/josepbacardit/peluqueriajenver/tree/main/public"
click node_app_model "https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Models/User.php"
click node_config_stack "https://github.com/josepbacardit/peluqueriajenver/tree/main/config"
click node_database_layer "https://github.com/josepbacardit/peluqueriajenver/tree/main/database"
click node_storage_runtime "https://github.com/josepbacardit/peluqueriajenver/tree/main/storage"
click node_vite_assets "https://github.com/josepbacardit/peluqueriajenver/tree/main/resources"
click node_tests_suite "https://github.com/josepbacardit/peluqueriajenver/tree/main/tests"

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_public_index,node_bootstrap_app,node_routes_web,node_routes_console,node_controller_base,node_sitemap_controller toneBlue
class node_layout_app,node_partials,node_home_page,node_contact_page,node_legal_pages,node_service_pages,node_sitemap_view toneAmber
class node_spanish_lang,node_english_lang,node_gallery_assets,node_public_root toneMint
class node_app_model,node_config_stack,node_database_layer,node_storage_runtime,node_vite_assets,node_tests_suite toneRose
```

## Components

### Entry & Framework

HTTP bootstrap, routing, and controller boundary.

- [index.php](https://github.com/josepbacardit/peluqueriajenver/blob/main/public/index.php): http entry · Web entrypoint that boots the Laravel app. · `public/index.php`
- [bootstrap app](https://github.com/josepbacardit/peluqueriajenver/blob/main/bootstrap/app.php): framework boot · Creates and configures the application instance. · `bootstrap/app.php`
- [web routes](https://github.com/josepbacardit/peluqueriajenver/blob/main/routes/web.php): route map · Browser-facing route definitions. · `routes/web.php`
- [console routes](https://github.com/josepbacardit/peluqueriajenver/blob/main/routes/console.php): cli routes · Artisan and console command hooks. · `routes/console.php`
- [base controller](https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Http/Controllers/Controller.php): controller base · Shared controller superclass. · `app/Http/Controllers/Controller.php`
- [sitemap controller](https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Http/Controllers/SitemapController.php): page controller · Serves sitemap output. · `app/Http/Controllers/SitemapController.php`

### Presentation

Blade layouts, pages, and reusable UI fragments.

- [main layout](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/layouts/app.blade.php): blade layout · Shared site shell used by pages. · `resources/views/layouts/app.blade.php`
- [partials](https://github.com/josepbacardit/peluqueriajenver/tree/main/resources/views/partials): blade fragments · Shared header, footer, cookie, FAQ, pricing, and schema fragments. · `resources/views/partials`
- [home](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/home.blade.php): landing page · Public homepage content. · `resources/views/pages/home.blade.php`
- [contact](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/contacto.blade.php): contact page · Contact and inquiry page. · `resources/views/pages/contacto.blade.php`
- [legal pages](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/pages/privacidad.blade.php): compliance pages · Privacy, cookies, and legal notices. · `resources/views/pages/privacidad.blade.php`
- [service pages](https://github.com/josepbacardit/peluqueriajenver/tree/main/resources/views/pages/services): service catalog · Dedicated salon service detail views. · `resources/views/pages/services`
- [sitemap view](https://github.com/josepbacardit/peluqueriajenver/blob/main/resources/views/sitemap.blade.php): sitemap page · Rendered sitemap page/template. · `resources/views/sitemap.blade.php`

### Content & Language

Localized site copy and public media assets.

- [es content](https://github.com/josepbacardit/peluqueriajenver/tree/main/lang/es): localized copy · Spanish navigation, home, and services strings. · `lang/es`
- [en defaults](https://github.com/josepbacardit/peluqueriajenver/tree/main/lang/en): framework copy · Laravel auth and validation messages in English. · `lang/en`
- [gallery](https://github.com/josepbacardit/peluqueriajenver/tree/main/public/images/galeria): static media · Public salon imagery served directly by the web server. · `public/images/galeria`
- [public assets](https://github.com/josepbacardit/peluqueriajenver/tree/main/public): web root · Web-served static files and server entry directory. · `public`

### Platform Services

Laravel runtime, persistence, config, and developer tooling.

- [user model](https://github.com/josepbacardit/peluqueriajenver/blob/main/app/Models/User.php): auth model · Default application user entity. · `app/Models/User.php`
- [config stack](https://github.com/josepbacardit/peluqueriajenver/tree/main/config): runtime config · Framework configuration for auth, database, cache, session, mail, queue, filesystems, and services. · `config`
- [database](https://github.com/josepbacardit/peluqueriajenver/tree/main/database): schema & seed · Default migrations, factory, and seeder scaffolding. · `database`
- [storage](https://github.com/josepbacardit/peluqueriajenver/tree/main/storage): runtime state · Logs, cache, sessions, and private/public storage boundary. · `storage`
- [vite assets](https://github.com/josepbacardit/peluqueriajenver/tree/main/resources): frontend build · CSS/JS entrypoints and Vite configuration. · `resources`
- [tests](https://github.com/josepbacardit/peluqueriajenver/tree/main/tests): pest suite · Feature and unit test scaffolding. · `tests`

## Connections

- index.php → bootstrap app: boots · HTTP requests start by bootstrapping the application.
- index.php → web routes: dispatches to · Web traffic is routed through the browser route map.
- web routes → home: renders · Routes return the homepage view.
- web routes → contact: renders · Routes return the contact page.
- web routes → legal pages: renders · Routes serve legal and compliance pages.
- web routes → service pages: renders · Routes serve individual service pages.
- web routes → sitemap controller: invokes · One route likely delegates sitemap generation to the controller.
- sitemap controller → sitemap view: returns · Controller produces the sitemap page.
- base controller → sitemap controller: extends · Sitemap controller uses the shared base controller.
- home → main layout: uses · Pages are wrapped by the shared layout.
- contact → main layout: uses · Pages are wrapped by the shared layout.
- legal pages → main layout: uses · Pages are wrapped by the shared layout.
- service pages → main layout: uses · Service pages are wrapped by the shared layout.
- main layout → partials: includes · The layout composes shared header/footer and utility fragments.
- home → es content: loads copy · Site content keys are localized in Spanish.
- main layout → public assets: serves from · Rendered assets are delivered through the public web root.
- public assets → gallery: exposes · Gallery images are directly web-accessible.
- user model → database: persists via · User data is backed by the default database schema.
- config stack → database: configures · Database settings control the persistence backend.
- config stack → storage: configures · Runtime settings govern cache, sessions, logs, mail, queue, and files.
- vite assets → public assets: builds into · Frontend resources are compiled for public serving.
- tests → base controller: covers · Tests target the Laravel application boundary.
- tests → web routes: covers · Feature tests likely exercise route responses.
- console routes → config stack: uses · Console hooks run within the configured Laravel environment.
