# victor-amili/travel-kulture architecture

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

- Interactive diagram: https://gitdiagram.com/victor-amili/travel-kulture
- Repository: https://github.com/victor-amili/travel-kulture

## Overview

TravelKulture is a Next.js travel-agency website foundation. The visible customer journey starts at the home page, where travelers can explore tours, open tour details and access trip tracking; the booking page currently collects a request and shows a local confirmation rather than creating a booking or taking payment. Separate pages cover reviews, souvenirs, radio and support. Admin pages provide operational entry points, with sampled tour editing backed by Supabase and image uploads signed by a server route for Cloudinary. Several capabilities are README-described foundations; their internal wiring is not established by the sampled source.

Main entry points: [`app/page.tsx`](https://github.com/victor-amili/travel-kulture/blob/main/app/page.tsx) (Home), [`app/admin/tours/[id]/page.tsx`](https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/%5Bid%5D/page.tsx) (Edit tour), [`components/admin/CloudinaryUploader.tsx`](https://github.com/victor-amili/travel-kulture/blob/main/components/admin/CloudinaryUploader.tsx) (Image uploader), [`lib/supabase/client.ts`](https://github.com/victor-amili/travel-kulture/blob/main/lib/supabase/client.ts) (Supabase)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Tour discovery"]
  node_home["Home<br/>[page.tsx]"]
  node_tour_list["Tour listing<br/>[page.tsx]"]
  node_tour_detail["Tour detail<br/>[page.tsx]"]
  node_demo_tours["Demo tours<br/>[demo-data.ts]"]
end

subgraph group_operations["Admin operations"]
  node_admin_home["Admin dashboard<br/>[page.tsx]"]
  node_admin_tours["Tour management<br/>[Page.tsx]"]
  node_admin_edit["Edit tour<br/>[page.tsx]"]
  node_admin_new["Create tour<br/>[Page.tsx]"]
end

subgraph group_trip["Traveler services"]
  node_booking["Booking request<br/>[page.tsx]"]
  node_my_trip["Trip tracker<br/>[page.tsx]"]
  node_reviews["Reviews<br/>[page.tsx]"]
  node_shop["Souvenir shop<br/>[page.tsx]"]
  node_radio["Radio<br/>[page.tsx]"]
  node_contact["Contact support<br/>[page.tsx]"]
  node_about["About<br/>[page.tsx]"]
end

subgraph group_platform["Platform services"]
  node_supabase[("Supabase<br/>[client.ts]")]
  node_schema["Database schema<br/>[schema.sql]"]
  node_uploader["Image uploader"]
  node_signature["Signature route<br/>[route.ts]"]
end

node_traveler(("Traveler"))
node_cloudinary(("Cloudinary"))

node_traveler -->|"opens"| node_home
node_traveler -->|"browses"| node_tour_list
node_traveler -->|"views"| node_tour_detail
node_traveler -->|"submits request"| node_booking
node_traveler -->|"tracks trip"| node_my_trip
node_traveler -->|"reads"| node_reviews
node_traveler -->|"visits"| node_shop
node_traveler -->|"listens"| node_radio
node_traveler -->|"contacts"| node_contact
node_home -->|"links to"| node_tour_list
node_home -->|"links to"| node_reviews
node_home -->|"links to"| node_my_trip
node_home -->|"renders"| node_demo_tours
node_admin_home -->|"counts records"| node_supabase
node_admin_edit -->|"updates tours"| node_supabase
node_admin_edit -->|"writes gallery"| node_supabase
node_admin_edit -->|"uses"| node_uploader
node_uploader -->|"requests signature"| node_signature
node_signature -->|"signs upload"| node_cloudinary
node_uploader -->|"uploads image"| node_cloudinary

click node_home "https://github.com/victor-amili/travel-kulture/blob/main/app/page.tsx"
click node_tour_list "https://github.com/victor-amili/travel-kulture/blob/main/app/tours/page.tsx"
click node_tour_detail "https://github.com/victor-amili/travel-kulture/blob/main/app/tours/%5Bslug%5D/page.tsx"
click node_demo_tours "https://github.com/victor-amili/travel-kulture/blob/main/lib/demo-data.ts"
click node_booking "https://github.com/victor-amili/travel-kulture/blob/main/app/booking/page.tsx"
click node_my_trip "https://github.com/victor-amili/travel-kulture/blob/main/app/my-trip/page.tsx"
click node_reviews "https://github.com/victor-amili/travel-kulture/blob/main/app/reviews/page.tsx"
click node_shop "https://github.com/victor-amili/travel-kulture/blob/main/app/shop/page.tsx"
click node_radio "https://github.com/victor-amili/travel-kulture/blob/main/app/radio/page.tsx"
click node_contact "https://github.com/victor-amili/travel-kulture/blob/main/app/contact/page.tsx"
click node_about "https://github.com/victor-amili/travel-kulture/blob/main/app/about/page.tsx"
click node_admin_home "https://github.com/victor-amili/travel-kulture/blob/main/app/admin/page.tsx"
click node_admin_tours "https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/Page.tsx"
click node_admin_edit "https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/%5Bid%5D/page.tsx"
click node_admin_new "https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/new/Page.tsx"
click node_supabase "https://github.com/victor-amili/travel-kulture/blob/main/lib/supabase/client.ts"
click node_schema "https://github.com/victor-amili/travel-kulture/blob/main/database/schema.sql"
click node_uploader "https://github.com/victor-amili/travel-kulture/blob/main/components/admin/CloudinaryUploader.tsx"
click node_signature "https://github.com/victor-amili/travel-kulture/blob/main/app/api/cloudinary/signature/route.ts"

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_tour_list,node_tour_detail,node_demo_tours toneBlue
class node_admin_home,node_admin_tours,node_admin_edit,node_admin_new toneAmber
class node_booking,node_my_trip,node_reviews,node_shop,node_radio,node_contact,node_about toneMint
class node_supabase,node_schema,node_uploader,node_signature toneRose
class node_traveler,node_cloudinary toneIndigo
```

## Components

### Tour discovery

- [Home](https://github.com/victor-amili/travel-kulture/blob/main/app/page.tsx): `app/page.tsx`
- [Tour listing](https://github.com/victor-amili/travel-kulture/blob/main/app/tours/page.tsx): `app/tours/page.tsx`
- [Tour detail](https://github.com/victor-amili/travel-kulture/blob/main/app/tours/%5Bslug%5D/page.tsx): `app/tours/[slug]/page.tsx`
- [Demo tours](https://github.com/victor-amili/travel-kulture/blob/main/lib/demo-data.ts): `lib/demo-data.ts`

### Admin operations

- [Admin dashboard](https://github.com/victor-amili/travel-kulture/blob/main/app/admin/page.tsx): `app/admin/page.tsx`
- [Tour management](https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/Page.tsx): `app/admin/tours/Page.tsx`
- [Edit tour](https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/%5Bid%5D/page.tsx): `app/admin/tours/[id]/page.tsx`
- [Create tour](https://github.com/victor-amili/travel-kulture/blob/main/app/admin/tours/new/Page.tsx): `app/admin/tours/new/Page.tsx`

### Traveler services

- [Booking request](https://github.com/victor-amili/travel-kulture/blob/main/app/booking/page.tsx): `app/booking/page.tsx`
- [Trip tracker](https://github.com/victor-amili/travel-kulture/blob/main/app/my-trip/page.tsx): `app/my-trip/page.tsx`
- [Reviews](https://github.com/victor-amili/travel-kulture/blob/main/app/reviews/page.tsx): `app/reviews/page.tsx`
- [Souvenir shop](https://github.com/victor-amili/travel-kulture/blob/main/app/shop/page.tsx): `app/shop/page.tsx`
- [Radio](https://github.com/victor-amili/travel-kulture/blob/main/app/radio/page.tsx): `app/radio/page.tsx`
- [Contact support](https://github.com/victor-amili/travel-kulture/blob/main/app/contact/page.tsx): `app/contact/page.tsx`
- [About](https://github.com/victor-amili/travel-kulture/blob/main/app/about/page.tsx): `app/about/page.tsx`

### Platform services

- [Supabase](https://github.com/victor-amili/travel-kulture/blob/main/lib/supabase/client.ts): `lib/supabase/client.ts`
- [Database schema](https://github.com/victor-amili/travel-kulture/blob/main/database/schema.sql): `database/schema.sql`
- [Image uploader](https://github.com/victor-amili/travel-kulture/blob/main/components/admin/CloudinaryUploader.tsx): `components/admin/CloudinaryUploader.tsx`
- [Signature route](https://github.com/victor-amili/travel-kulture/blob/main/app/api/cloudinary/signature/route.ts): `app/api/cloudinary/signature/route.ts`

### Other components

- **Traveler**
- **Cloudinary**

## Connections

- Traveler → Home: opens
- Traveler → Tour listing: browses
- Traveler → Tour detail: views
- Traveler → Booking request: submits request
- Traveler → Trip tracker: tracks trip
- Traveler → Reviews: reads
- Traveler → Souvenir shop: visits
- Traveler → Radio: listens
- Traveler → Contact support: contacts
- Home → Tour listing: links to
- Home → Reviews: links to
- Home → Trip tracker: links to
- Home → Demo tours: renders
- Admin dashboard → Supabase: counts records
- Edit tour → Supabase: updates tours
- Edit tour → Supabase: writes gallery
- Edit tour → Image uploader: uses
- Image uploader → Signature route: requests signature
- Signature route → Cloudinary: signs upload
- Image uploader → Cloudinary: uploads image
