# lorenzotettamanti/viverecomo architecture

> Architecture diagram of the GitHub repository lorenzotettamanti/viverecomo, 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/lorenzotettamanti/viverecomo
- Repository: https://github.com/lorenzotettamanti/viverecomo

## Overview

VivereComo is a bilingual destination-discovery and tourism content site, with public pages for experiences, blog articles, practical information, collaborations and checkout, plus account and CMS areas. A visitor discovers the territory through the home page or experience listing; the listing fetches suggestions, while the blog has a separate listing and article route. Content creators manage site material through the CMS, and users have registration, login, verification and dashboard flows. The README documents these product areas; several backend and CMS links are shown as unverified because their implementation was not sampled.

Main entry points: [`app/api`](https://github.com/lorenzotettamanti/viverecomo/tree/prod-mvp/app/api) (API routes), [`app/[locale]/HomePageContent.jsx`](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/HomePageContent.jsx) (Home page), [`app/[locale]/territorio/esperienze/page.jsx`](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/territorio/esperienze/page.jsx) (Experience listing), [`app/[locale]/blog/blog-listing-content.jsx`](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/blog/blog-listing-content.jsx) (Blog listing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Destination discovery"]
  node_home["Home page"]
  node_navigation["Site navigation<br/>[Navbar.jsx]"]
  node_experience_listing["Experience listing<br/>[page.jsx]"]
  node_experience_detail["Experience detail<br/>[item_template.jsx]"]
  node_info["Practical information<br/>[InfoContent.jsx]"]
  node_help["Help center"]
end

subgraph group_content["Editorial content"]
  node_blog_listing["Blog listing"]
  node_blog_article["Blog article<br/>[blog-template.jsx]"]
  node_collaborations["Collaborations"]
  node_checkout["Checkout"]
end

subgraph group_accounts["Accounts and CMS"]
  node_auth_ui["Account pages<br/>[Login.jsx]"]
  node_auth_context["Auth context<br/>[AuthContext.js]"]
  node_dashboard["Owner dashboard"]
  node_cms["Content CMS<br/>[CmsExperiences.jsx]"]
end

subgraph group_services["Application services"]
  node_api["API routes"]
  node_content_services["Content services"]
  node_appwrite["Appwrite client<br/>[appwrite.js]"]
end

node_visitor(("Visitor"))
node_account_user(("Account user"))

node_visitor -->|"opens"| node_home
node_home -->|"renders"| node_navigation
node_visitor -.->|"browses"| node_experience_listing
node_experience_listing -->|"fetches suggestions"| node_api
node_visitor -.->|"browses"| node_blog_listing
node_blog_listing -.->|"opens article"| node_blog_article
node_visitor -.->|"views information"| node_info
node_visitor -.->|"requests help"| node_help
node_visitor -.->|"views"| node_collaborations
node_visitor -.->|"checks out"| node_checkout
node_account_user -.->|"signs in"| node_auth_ui
node_auth_context -->|"logs out via"| node_appwrite
node_account_user -.->|"manages activity"| node_dashboard
node_account_user -.->|"manages content"| node_cms
node_cms -.->|"submits changes"| node_api
node_api -.->|"delegates"| node_content_services
node_content_services -.->|"uses client"| node_appwrite

click node_home "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/HomePageContent.jsx"
click node_navigation "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/components/LandingPage/Navbar.jsx"
click node_experience_listing "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/territorio/esperienze/page.jsx"
click node_experience_detail "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/territorio/esperienze/%5Bitem%5D/item_template.jsx"
click node_info "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/info/InfoContent.jsx"
click node_help "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/assistenza/HelpCenterContent.jsx"
click node_blog_listing "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/blog/blog-listing-content.jsx"
click node_blog_article "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/blog/%5Bpost%5D/blog-template.jsx"
click node_collaborations "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/collaborazioni/CollaborationsContent.jsx"
click node_checkout "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/checkout/checkout-content.jsx"
click node_auth_ui "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/components/Login/Login.jsx"
click node_auth_context "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/context/AuthContext.js"
click node_dashboard "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/user/%5Bid%5D/dashboard/components/sections/OwnerActivityProfile.jsx"
click node_cms "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/user/%5Bid%5D/cms/components/sections/CmsExperiences.jsx"
click node_api "https://github.com/lorenzotettamanti/viverecomo/tree/prod-mvp/app/api"
click node_content_services "https://github.com/lorenzotettamanti/viverecomo/tree/prod-mvp/server"
click node_appwrite "https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/server/config/appwrite.js"

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_navigation,node_experience_listing,node_experience_detail,node_info,node_help,node_account_user toneBlue
class node_blog_listing,node_blog_article,node_collaborations,node_checkout toneAmber
class node_auth_ui,node_auth_context,node_dashboard,node_cms toneMint
class node_api,node_content_services,node_appwrite toneRose
class node_visitor toneIndigo
```

## Components

### Destination discovery

- [Home page](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/HomePageContent.jsx): `app/[locale]/HomePageContent.jsx`
- [Site navigation](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/components/LandingPage/Navbar.jsx): `components/LandingPage/Navbar.jsx`
- [Experience listing](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/territorio/esperienze/page.jsx): `app/[locale]/territorio/esperienze/page.jsx`
- [Experience detail](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/territorio/esperienze/%5Bitem%5D/item_template.jsx): `app/[locale]/territorio/esperienze/[item]/item_template.jsx`
- [Practical information](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/info/InfoContent.jsx): `app/[locale]/info/InfoContent.jsx`
- [Help center](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/assistenza/HelpCenterContent.jsx): `app/[locale]/assistenza/HelpCenterContent.jsx`

### Editorial content

- [Blog listing](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/blog/blog-listing-content.jsx): `app/[locale]/blog/blog-listing-content.jsx`
- [Blog article](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/blog/%5Bpost%5D/blog-template.jsx): `app/[locale]/blog/[post]/blog-template.jsx`
- [Collaborations](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/collaborazioni/CollaborationsContent.jsx): `app/[locale]/collaborazioni/CollaborationsContent.jsx`
- [Checkout](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/checkout/checkout-content.jsx): `app/[locale]/checkout/checkout-content.jsx`

### Accounts and CMS

- [Account pages](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/components/Login/Login.jsx): `components/Login/Login.jsx`
- [Auth context](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/context/AuthContext.js): `context/AuthContext.js`
- [Owner dashboard](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/user/%5Bid%5D/dashboard/components/sections/OwnerActivityProfile.jsx): `app/[locale]/user/[id]/dashboard/components/sections/OwnerActivityProfile.jsx`
- [Content CMS](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/app/%5Blocale%5D/user/%5Bid%5D/cms/components/sections/CmsExperiences.jsx): `app/[locale]/user/[id]/cms/components/sections/CmsExperiences.jsx`

### Application services

- [API routes](https://github.com/lorenzotettamanti/viverecomo/tree/prod-mvp/app/api): `app/api`
- [Content services](https://github.com/lorenzotettamanti/viverecomo/tree/prod-mvp/server): `server`
- [Appwrite client](https://github.com/lorenzotettamanti/viverecomo/blob/prod-mvp/server/config/appwrite.js): `server/config/appwrite.js`

### Other components

- **Visitor**
- **Account user**

## Connections

- Visitor → Home page: opens
- Home page → Site navigation: renders (evidence: `app/[locale]/HomePageContent.jsx`)
- Visitor → Experience listing: browses (evidence: `README.md`)
- Experience listing → API routes: fetches suggestions (evidence: `app/[locale]/territorio/esperienze/page.jsx`)
- Visitor → Blog listing: browses (evidence: `README.md`)
- Blog listing → Blog article: opens article (evidence: `README.md`)
- Visitor → Practical information: views information (evidence: `README.md`)
- Visitor → Help center: requests help (evidence: `README.md`)
- Visitor → Collaborations: views (evidence: `README.md`)
- Visitor → Checkout: checks out (evidence: `README.md`)
- Account user → Account pages: signs in (evidence: `README.md`)
- Auth context → Appwrite client: logs out via (evidence: `context/AuthContext.js`)
- Account user → Owner dashboard: manages activity (evidence: `README.md`)
- Account user → Content CMS: manages content (evidence: `README.md`)
- Content CMS → API routes: submits changes
- API routes → Content services: delegates
- Content services → Appwrite client: uses client (evidence: `server/actions/AuthActions.js`)
