# santiagosuarez39880-hue/taquillafrontend architecture

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

- Interactive diagram: https://gitdiagram.com/santiagosuarez39880-hue/taquillafrontend
- Repository: https://github.com/santiagosuarez39880-hue/taquillafrontend

## Overview

Taquilla is a Spanish/English ticket-discovery frontend built with Next.js. Visitors land on a featured-event home page or explore the catalog by search, category, city, date, and price; the frontend requests catalog data from an external API and renders event cards and pagination. Shared shell and language-text services support the browsing experience, while category, event-detail, account, selling, and legal routes are present, though several currently use placeholder views. Some route and shell wiring is documented only by the source index; unverified links are omitted.

Main entry points: [`src/components/AppShell.tsx`](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/AppShell.tsx) (App shell), [`src/app/page.tsx`](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/page.tsx) (Home route), [`src/components/explorar/ExplorarVista.tsx`](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/ExplorarVista.tsx) (Explore view), [`src/hooks/useTextos.ts`](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/hooks/useTextos.ts) (Text loading)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browse["Event browsing"]
  node_home["Home route<br/>[page.tsx]"]
  node_homeview["Home view<br/>[InicioVista.tsx]"]
  node_hero_search["Hero search<br/>[BuscadorHero.tsx]"]
  node_event_card["Event card<br/>[EventCard.tsx]"]
  node_explore_route["Explore route<br/>[page.tsx]"]
  node_explore_view["Explore view<br/>[ExplorarVista.tsx]"]
  node_filters["Search filters<br/>[Filtros.tsx]"]
  node_price_range["Price range<br/>[RangoPrecio.tsx]"]
  node_pagination["Pagination<br/>[Paginacion.tsx]"]
end

subgraph group_shared["Shared interface"]
  node_app_shell["App shell<br/>[AppShell.tsx]"]
  node_navbar["Navigation<br/>[Navbar.tsx]"]
  node_footer["Footer<br/>[Footer.tsx]"]
  node_cookie_banner["Cookie banner<br/>[CookieBanner.tsx]"]
  node_text_provider["Text provider<br/>[TextosProvider.tsx]"]
  node_text_hook["Text loading<br/>[useTextos.ts]"]
end

subgraph group_data["API and domain"]
  node_catalog["Event catalog<br/>[catalogo.ts]"]
  node_api_client["API client<br/>[api.ts]"]
  node_filter_logic["Filter logic<br/>[explorar.ts]"]
  node_date_logic["Date helpers<br/>[fechas.ts]"]
  node_formatting["Display formatting<br/>[formato.ts]"]
  node_catalog_types["Catalog types<br/>[catalogo.ts]"]
  node_text_service["Text API<br/>[textos-api.ts]"]
  node_text_utils["Text utilities<br/>[textos.ts]"]
  node_text_types["Text types<br/>[textos.ts]"]
end

subgraph group_routes["Other routes"]
  node_pending["Placeholder view"]
  node_category_routes["Category pages<br/>[page.tsx]"]
  node_detail_route["Event detail<br/>[page.tsx]"]
  node_account_routes["Account pages<br/>[page.tsx]"]
  node_other_routes["Other sections<br/>[page.tsx]"]
end

node_visitor(("Visitor"))
node_api_service["Taquilla API"]

node_visitor -->|"opens"| node_home
node_home -->|"renders"| node_homeview
node_home -->|"loads catalog"| node_catalog
node_homeview -->|"renders"| node_hero_search
node_homeview -->|"renders"| node_event_card
node_visitor -->|"opens"| node_explore_route
node_explore_route -->|"renders"| node_explore_view
node_explore_route -->|"loads events"| node_catalog
node_explore_view -->|"renders"| node_event_card
node_explore_view -->|"renders"| node_filters
node_explore_view -->|"renders"| node_pagination
node_filters -->|"renders"| node_price_range
node_catalog -->|"builds parameters"| node_filter_logic
node_catalog -->|"requests data"| node_api_client
node_api_client -.->|"calls"| node_api_service
node_home -.->|"uses types"| node_catalog_types
node_filter_logic -->|"uses date ranges"| node_date_logic
node_visitor -.->|"uses interface"| node_app_shell
node_app_shell -->|"renders"| node_navbar
node_app_shell -->|"renders"| node_footer
node_app_shell -->|"renders"| node_cookie_banner
node_app_shell -->|"provides texts"| node_text_provider
node_text_provider -->|"loads via"| node_text_hook
node_text_provider -->|"translates with"| node_text_utils
node_text_hook -->|"validates with"| node_text_service
node_text_hook -.->|"fetches translations"| node_api_service
node_text_utils -->|"uses types"| node_text_types
node_text_hook -->|"uses types"| node_text_types
node_visitor -.->|"opens"| node_category_routes
node_category_routes -->|"renders"| node_pending
node_visitor -.->|"opens"| node_detail_route
node_detail_route -->|"renders"| node_pending
node_visitor -.->|"opens"| node_account_routes
node_account_routes -->|"renders"| node_pending
node_visitor -.->|"opens"| node_other_routes

click node_home "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/page.tsx"
click node_homeview "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/InicioVista.tsx"
click node_hero_search "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/BuscadorHero.tsx"
click node_event_card "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/EventCard.tsx"
click node_explore_route "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/explorar/page.tsx"
click node_explore_view "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/ExplorarVista.tsx"
click node_filters "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/Filtros.tsx"
click node_price_range "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/RangoPrecio.tsx"
click node_pagination "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/Paginacion.tsx"
click node_catalog "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/catalogo.ts"
click node_api_client "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/api.ts"
click node_filter_logic "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/explorar.ts"
click node_date_logic "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/fechas.ts"
click node_formatting "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/formato.ts"
click node_catalog_types "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/types/catalogo.ts"
click node_app_shell "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/AppShell.tsx"
click node_navbar "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/Navbar.tsx"
click node_footer "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/Footer.tsx"
click node_cookie_banner "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/ui/CookieBanner.tsx"
click node_text_provider "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/TextosProvider.tsx"
click node_text_hook "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/hooks/useTextos.ts"
click node_text_service "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/textos-api.ts"
click node_text_utils "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/textos.ts"
click node_text_types "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/types/textos.ts"
click node_pending "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/PaginaPendiente.tsx"
click node_category_routes "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/conciertos/page.tsx"
click node_detail_route "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/eventos/%5Bslug%5D/page.tsx"
click node_account_routes "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/ingresar/page.tsx"
click node_other_routes "https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/vender/page.tsx"

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_home,node_homeview,node_hero_search,node_event_card,node_explore_route,node_explore_view,node_filters,node_price_range,node_pagination toneBlue
class node_app_shell,node_navbar,node_footer,node_cookie_banner,node_text_provider,node_text_hook toneAmber
class node_catalog,node_api_client,node_filter_logic,node_date_logic,node_formatting,node_catalog_types,node_text_service,node_text_utils,node_text_types,node_api_service toneMint
class node_pending,node_category_routes,node_detail_route,node_account_routes,node_other_routes toneRose
class node_visitor toneIndigo
```

## Components

### Event browsing

- [Home route](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Home view](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/InicioVista.tsx): `src/components/inicio/InicioVista.tsx`
- [Hero search](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/BuscadorHero.tsx): `src/components/inicio/BuscadorHero.tsx`
- [Event card](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/inicio/EventCard.tsx): `src/components/inicio/EventCard.tsx`
- [Explore route](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/explorar/page.tsx): `src/app/explorar/page.tsx`
- [Explore view](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/ExplorarVista.tsx): `src/components/explorar/ExplorarVista.tsx`
- [Search filters](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/Filtros.tsx): `src/components/explorar/Filtros.tsx`
- [Price range](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/RangoPrecio.tsx): `src/components/explorar/RangoPrecio.tsx`
- [Pagination](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/explorar/Paginacion.tsx): `src/components/explorar/Paginacion.tsx`

### Shared interface

- [App shell](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/AppShell.tsx): `src/components/AppShell.tsx`
- [Navigation](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/Navbar.tsx): `src/components/Navbar.tsx`
- [Footer](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/Footer.tsx): `src/components/Footer.tsx`
- [Cookie banner](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/ui/CookieBanner.tsx): `src/components/ui/CookieBanner.tsx`
- [Text provider](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/TextosProvider.tsx): `src/components/TextosProvider.tsx`
- [Text loading](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/hooks/useTextos.ts): `src/hooks/useTextos.ts`

### API and domain

- [Event catalog](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/catalogo.ts): `src/lib/catalogo.ts`
- [API client](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Filter logic](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/explorar.ts): `src/lib/explorar.ts`
- [Date helpers](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/fechas.ts): `src/lib/fechas.ts`
- [Display formatting](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/formato.ts): `src/lib/formato.ts`
- [Catalog types](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/types/catalogo.ts): `src/types/catalogo.ts`
- [Text API](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/textos-api.ts): `src/lib/textos-api.ts`
- [Text utilities](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/lib/textos.ts): `src/lib/textos.ts`
- [Text types](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/types/textos.ts): `src/types/textos.ts`

### Other routes

- [Placeholder view](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/components/PaginaPendiente.tsx): `src/components/PaginaPendiente.tsx`
- [Category pages](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/conciertos/page.tsx): `src/app/conciertos/page.tsx`
- [Event detail](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/eventos/%5Bslug%5D/page.tsx): `src/app/eventos/[slug]/page.tsx`
- [Account pages](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/ingresar/page.tsx): `src/app/ingresar/page.tsx`
- [Other sections](https://github.com/santiagosuarez39880-hue/taquillafrontend/blob/main/src/app/vender/page.tsx): `src/app/vender/page.tsx`

### Other components

- **Visitor**
- **Taquilla API**

## Connections

- Visitor → Home route: opens
- Home route → Home view: renders (evidence: `src/app/page.tsx`)
- Home route → Event catalog: loads catalog (evidence: `src/app/page.tsx`)
- Home view → Hero search: renders (evidence: `src/components/inicio/InicioVista.tsx`)
- Home view → Event card: renders (evidence: `src/components/inicio/InicioVista.tsx`)
- Visitor → Explore route: opens
- Explore route → Explore view: renders (evidence: `src/app/explorar/page.tsx`)
- Explore route → Event catalog: loads events (evidence: `src/app/explorar/page.tsx`)
- Explore view → Event card: renders (evidence: `src/components/explorar/ExplorarVista.tsx`)
- Explore view → Search filters: renders (evidence: `src/components/explorar/ExplorarVista.tsx`)
- Explore view → Pagination: renders (evidence: `src/components/explorar/ExplorarVista.tsx`)
- Search filters → Price range: renders (evidence: `src/components/explorar/Filtros.tsx`)
- Event catalog → Filter logic: builds parameters (evidence: `src/lib/catalogo.ts`)
- Event catalog → API client: requests data (evidence: `src/lib/catalogo.ts`)
- API client → Taquilla API: calls
- Home route → Catalog types: uses types
- Filter logic → Date helpers: uses date ranges (evidence: `src/lib/explorar.ts`)
- Visitor → App shell: uses interface
- App shell → Navigation: renders (evidence: `src/components/AppShell.tsx`)
- App shell → Footer: renders (evidence: `src/components/AppShell.tsx`)
- App shell → Cookie banner: renders (evidence: `src/components/AppShell.tsx`)
- App shell → Text provider: provides texts (evidence: `src/components/AppShell.tsx`)
- Text provider → Text loading: loads via (evidence: `src/components/TextosProvider.tsx`)
- Text provider → Text utilities: translates with (evidence: `src/components/TextosProvider.tsx`)
- Text loading → Text API: validates with (evidence: `src/hooks/useTextos.ts`)
- Text loading → Taquilla API: fetches translations
- Text utilities → Text types: uses types (evidence: `src/lib/textos.ts`)
- Text loading → Text types: uses types (evidence: `src/hooks/useTextos.ts`)
- Visitor → Category pages: opens
- Category pages → Placeholder view: renders (evidence: `src/app/conciertos/page.tsx`)
- Visitor → Event detail: opens
- Event detail → Placeholder view: renders (evidence: `src/app/eventos/[slug]/page.tsx`)
- Visitor → Account pages: opens
- Account pages → Placeholder view: renders (evidence: `src/app/ingresar/page.tsx`)
- Visitor → Other sections: opens
