# davidsaruni/genyra architecture

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

- Interactive diagram: https://gitdiagram.com/davidsaruni/genyra
- Repository: https://github.com/davidsaruni/genyra

## Overview

This is a Genyra Group corporate website with a Laravel-backed content admin. Visitors browse organizational pages and published news, while administrators manage news, posters, contacts, and email content. The sampled code confirms public news filtering, contact submission and email, admin news persistence, poster image handling, and sitemap regeneration. Other listed controllers and views indicate additional admin capabilities, but their wiring is not shown; the graph therefore omits uncertain route-to-controller links.

Main entry points: [`app/Http/Controllers/WebController.php`](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/WebController.php) (Public Pages), [`config/database.php`](https://github.com/davidsaruni/genyra/blob/main/config/database.php) (Application Database), [`app/Http/Controllers/NewsController.php`](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/NewsController.php) (News Admin), [`app/Models/News.php`](https://github.com/davidsaruni/genyra/blob/main/app/Models/News.php) (News Records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Website"]
  node_web["Public Pages<br/>[WebController.php]"]
  node_webviews["Public Views<br/>[app.blade.php]"]
end

subgraph group_content["Content Management"]
  node_newscontroller["News Admin<br/>[NewsController.php]"]
  node_postercontroller["Poster Admin"]
  node_admincontroller["Admin Access"]
  node_articlecontroller["Article Admin"]
  node_newsviews["News Admin Views<br/>[index.blade.php]"]
  node_posterviews["Poster Admin Views<br/>[index.blade.php]"]
end

subgraph group_engagement["Contact and Email"]
  node_contactcontroller["Contact Admin"]
  node_emailcontroller["Email Admin"]
  node_mailservice["Mail Delivery<br/>[ContactMail.php]"]
end

subgraph group_platform["Persistence and Services"]
  node_newsmodel["News Records<br/>[News.php]"]
  node_categorymodel["Categories<br/>[Category.php]"]
  node_postermodel["Poster Records<br/>[Poster.php]"]
  node_contactmodel["Contact Records<br/>[Contact.php]"]
  node_emailmodel["Email Records<br/>[Email.php]"]
  node_database[("Application Database<br/>[database.php]")]
  node_filesystem["Public Image Files"]
  node_sitemap["Sitemap Generator"]
end

node_visitor(("Visitor"))
node_mailrecipient(("Mail Recipient"))

node_visitor -->|"requests pages"| node_web
node_web -->|"renders pages"| node_webviews
node_web -->|"queries published news"| node_newsmodel
node_web -->|"filters categories"| node_categorymodel
node_web -->|"loads active poster"| node_postermodel
node_visitor -->|"submits contact"| node_web
node_web -->|"sends contact email"| node_mailservice
node_web -->|"creates contact"| node_contactmodel
node_newscontroller -->|"manages articles"| node_newsmodel
node_newscontroller -->|"assigns categories"| node_categorymodel
node_newscontroller -->|"renders admin views"| node_newsviews
node_newscontroller -->|"regenerates sitemap"| node_sitemap
node_postercontroller -->|"manages posters"| node_postermodel
node_postercontroller -->|"stores poster images"| node_filesystem
node_postercontroller -->|"renders admin views"| node_posterviews
node_newsmodel -->|"persists records"| node_database
node_categorymodel -->|"persists records"| node_database
node_postermodel -->|"persists records"| node_database
node_contactmodel -->|"persists records"| node_database
node_emailmodel -->|"persists records"| node_database
node_mailservice -->|"delivers email"| node_mailrecipient
node_contactcontroller -->|"manages contacts"| node_contactmodel
node_emailcontroller -->|"manages email records"| node_emailmodel
node_admincontroller -->|"authenticates users"| node_database
node_articlecontroller -.->|"manages articles"| node_newsmodel

click node_web "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/WebController.php"
click node_webviews "https://github.com/davidsaruni/genyra/blob/main/resources/views/web/app.blade.php"
click node_newscontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/NewsController.php"
click node_postercontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/PosterController.php"
click node_admincontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/AdminController.php"
click node_articlecontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/ArticleController.php"
click node_newsviews "https://github.com/davidsaruni/genyra/blob/main/resources/views/admin/news/index.blade.php"
click node_posterviews "https://github.com/davidsaruni/genyra/blob/main/resources/views/admin/posters/index.blade.php"
click node_contactcontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/ContactController.php"
click node_emailcontroller "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/EmailController.php"
click node_mailservice "https://github.com/davidsaruni/genyra/blob/main/app/Mail/ContactMail.php"
click node_newsmodel "https://github.com/davidsaruni/genyra/blob/main/app/Models/News.php"
click node_categorymodel "https://github.com/davidsaruni/genyra/blob/main/app/Models/Category.php"
click node_postermodel "https://github.com/davidsaruni/genyra/blob/main/app/Models/Poster.php"
click node_contactmodel "https://github.com/davidsaruni/genyra/blob/main/app/Models/Contact.php"
click node_emailmodel "https://github.com/davidsaruni/genyra/blob/main/app/Models/Email.php"
click node_database "https://github.com/davidsaruni/genyra/blob/main/config/database.php"
click node_filesystem "https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/PosterController.php"
click node_sitemap "https://github.com/davidsaruni/genyra/blob/main/app/Support/SitemapGenerator.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,node_webviews toneBlue
class node_newscontroller,node_postercontroller,node_admincontroller,node_articlecontroller,node_newsviews,node_posterviews toneAmber
class node_contactcontroller,node_emailcontroller,node_mailservice toneMint
class node_newsmodel,node_categorymodel,node_postermodel,node_contactmodel,node_emailmodel,node_database,node_filesystem,node_sitemap toneRose
class node_visitor,node_mailrecipient toneIndigo
```

## Components

### Public Website

- [Public Pages](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/WebController.php): `app/Http/Controllers/WebController.php`
- [Public Views](https://github.com/davidsaruni/genyra/blob/main/resources/views/web/app.blade.php): `resources/views/web/app.blade.php`

### Content Management

- [News Admin](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/NewsController.php): `app/Http/Controllers/NewsController.php`
- [Poster Admin](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/PosterController.php): `app/Http/Controllers/PosterController.php`
- [Admin Access](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/AdminController.php): `app/Http/Controllers/AdminController.php`
- [Article Admin](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/ArticleController.php): `app/Http/Controllers/ArticleController.php`
- [News Admin Views](https://github.com/davidsaruni/genyra/blob/main/resources/views/admin/news/index.blade.php): `resources/views/admin/news/index.blade.php`
- [Poster Admin Views](https://github.com/davidsaruni/genyra/blob/main/resources/views/admin/posters/index.blade.php): `resources/views/admin/posters/index.blade.php`

### Contact and Email

- [Contact Admin](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/ContactController.php): `app/Http/Controllers/ContactController.php`
- [Email Admin](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/EmailController.php): `app/Http/Controllers/EmailController.php`
- [Mail Delivery](https://github.com/davidsaruni/genyra/blob/main/app/Mail/ContactMail.php): `app/Mail/ContactMail.php`

### Persistence and Services

- [News Records](https://github.com/davidsaruni/genyra/blob/main/app/Models/News.php): `app/Models/News.php`
- [Categories](https://github.com/davidsaruni/genyra/blob/main/app/Models/Category.php): `app/Models/Category.php`
- [Poster Records](https://github.com/davidsaruni/genyra/blob/main/app/Models/Poster.php): `app/Models/Poster.php`
- [Contact Records](https://github.com/davidsaruni/genyra/blob/main/app/Models/Contact.php): `app/Models/Contact.php`
- [Email Records](https://github.com/davidsaruni/genyra/blob/main/app/Models/Email.php): `app/Models/Email.php`
- [Application Database](https://github.com/davidsaruni/genyra/blob/main/config/database.php): `config/database.php`
- [Public Image Files](https://github.com/davidsaruni/genyra/blob/main/app/Http/Controllers/PosterController.php): `app/Http/Controllers/PosterController.php`
- [Sitemap Generator](https://github.com/davidsaruni/genyra/blob/main/app/Support/SitemapGenerator.php): `app/Support/SitemapGenerator.php`

### Other components

- **Visitor**
- **Mail Recipient**

## Connections

- Visitor → Public Pages: requests pages
- Public Pages → Public Views: renders pages
- Public Pages → News Records: queries published news
- Public Pages → Categories: filters categories
- Public Pages → Poster Records: loads active poster
- Visitor → Public Pages: submits contact
- Public Pages → Mail Delivery: sends contact email
- Public Pages → Contact Records: creates contact
- News Admin → News Records: manages articles
- News Admin → Categories: assigns categories
- News Admin → News Admin Views: renders admin views
- News Admin → Sitemap Generator: regenerates sitemap
- Poster Admin → Poster Records: manages posters
- Poster Admin → Public Image Files: stores poster images
- Poster Admin → Poster Admin Views: renders admin views
- News Records → Application Database: persists records
- Categories → Application Database: persists records
- Poster Records → Application Database: persists records
- Contact Records → Application Database: persists records
- Email Records → Application Database: persists records
- Mail Delivery → Mail Recipient: delivers email
- Contact Admin → Contact Records: manages contacts
- Email Admin → Email Records: manages email records
- Admin Access → Application Database: authenticates users
- Article Admin → News Records: manages articles
