# ahmadullahchowdhury/thesriii-copy architecture

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

- Interactive diagram: https://gitdiagram.com/ahmadullahchowdhury/thesriii-copy
- Repository: https://github.com/ahmadullahchowdhury/thesriii-copy

## Overview

1. **Overall shape**
   - This is a **Next.js 14 App Router** site for “Thesrii”.
   - The application is mostly a **static/marketing website** with multiple content pages, plus one notable interactive flow: the **contact form**, which sends email through Nodemailer.

2. **Routing and page entry points**
   - `src/app/(public)` contains the public routes and the top-level `layout.tsx`.
   - Each route folder has a thin `page.tsx` that delegates rendering to feature components in `view/page/...`.
   - `src/app/not-found.tsx` provides the global 404 boundary, and `src/app/theme-providers.tsx` wraps theme context for the app.

3. **Page composition layer**
   - The `view/page` directory is the main **feature/content layer**.
   - It is organized by site section: `home`, `About`, `Summits`, `Conferences`, `Contact`, `Pricing`, `TuSeminar`.
   - Each page is further broken into section components like hero blocks, member sliders, summit sections, and team/about sections.

4. **Shared site chrome**
   - `view/ui/shared-component` holds the global UI shell: **navbar, mobile navbar, footer, scroll-to-top control, theme switch**, and shared modal/slider controls.
   - This layer is reused across most pages and is the main boundary for site-wide navigation and presentation consistency.

5. **Reusable UI primitives**
   - `src/components/ui` contains low-level reusable components such as **button, card, and carousel**.
   - These are the design-system style building blocks used by the feature layer and likely aligned with the shadcn/headless-ui style stack.

6. **Static content and asset flow**
   - Most page content is driven by **hardcoded/content modules** rather than a backend database.
   - `public/` stores the site’s images and logos, while `data/siteMetadata.js` appears to centralize metadata for pages/SEO.
   - The visual pages mainly compose text + static media from these local assets.

7. **Contact form and email workflow**
   - The contact section is the only clear server-side business process.
   - `view/page/ContactForm` and `Validation/validation.ts` suggest input validation before submission.
   - `lib/sendEmail.ts` and `config/nodemailler.ts` implement the email-sending path via **Nodemailer**, likely using environment configuration from `.env.example`.

8. **Theme and styling system**
   - Styling is built with **Tailwind CSS** plus global CSS files (`styles/globals.css`, `styles/customswiper.css`).
   - `theme-providers.tsx` and `view/ui/shared-component/ThemeSwitch.tsx` indicate a **light/dark theme** boundary that affects the entire shell.
   - `components.json`, `tailwind.config.ts`, `postcss.config.js`, and `next.config.mjs` are the main build/config touchpoints.

9. **Interaction-heavy sections**
   - Several pages include carousel/slider patterns: home keynote speakers, members, and summit pages.
   - These interactions are isolated in dedicated components such as `SliderMemeber.tsx`, `KeyNoteSpeakerSlider.tsx`, `summitSlider.tsx`, and `swiperbutton.tsx`, with custom Swiper styling in `styles/customswiper.css`.

10. **Data/model boundaries**
   - `type/common.ts` likely defines shared TypeScript shapes for page content and reusable props.
   - `@json-db/index.ts` and `Validation/validation.ts` suggest local utility boundaries for structured data handling and input checks, but the repo does not show a separate API/database backend.

11. **Runtime and deployment characteristics**
   - The app runs as a **TypeScript/React** frontend on the Next.js runtime.
   - External dependency use is limited and practical: **Nodemailer** for outbound email, **react-icons** for iconography, and **@headlessui/react** for accessible UI behavior.

12. **How to diagram it**
   - A good architecture diagram would show:
     - Browser requests into `src/app/(public)` routes
     - Route pages delegating to `view/page` feature sections
     - Shared shell from `view/ui/shared-component`
     - Static assets from `public/` and metadata from `data/siteMetadata.js`
     - Contact form flow into validation and email delivery via Nodemailer
     - Theme providers and styling as cross-cutting concerns

Main entry points: [`src/components/ui/button.tsx`](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/components/ui/button.tsx) (UI primitives), [`src/app/(public)/layout.tsx`](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/layout.tsx) (Public shell), [`view/page/Contact/index.tsx`](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/Contact/index.tsx) (Contact content), [`view/page/ContactForm/index.tsx`](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/ContactForm/index.tsx) (Contact form)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["Routing"]
  node_app_root["App layout<br/>next layout<br/>[layout.tsx]"]
  node_public_layout["Public shell<br/>route layout<br/>[layout.tsx]"]
  node_home_route["Home route<br/>page entry<br/>[page.tsx]"]
  node_about_route["About route<br/>page entry<br/>[page.tsx]"]
  node_summits_route["Summits route<br/>page entry<br/>[page.tsx]"]
  node_conference_route["Conference route<br/>page entry<br/>[page.tsx]"]
  node_contact_route["Contact route<br/>page entry<br/>[page.tsx]"]
  node_pricing_route["Pricing route<br/>page entry<br/>[page.tsx]"]
  node_seminar_route["Tu Seminar<br/>page entry<br/>[page.tsx]"]
end

subgraph group_content["Content"]
  node_home_content["Home content<br/>feature pages<br/>[index.tsx]"]
  node_about_content["About content<br/>feature pages<br/>[index.tsx]"]
  node_summits_content["Summits content<br/>feature pages<br/>[index.tsx]"]
  node_contact_content["Contact content<br/>feature pages<br/>[index.tsx]"]
  node_contact_form["Contact form<br/>interactive form<br/>[index.tsx]"]
end

subgraph group_shared["Shared UI"]
  node_theme_providers["Theme providers<br/>theme context"]
  node_shell["Site shell<br/>shared chrome"]
  node_ui_primitives["UI primitives<br/>design system<br/>[button.tsx]"]
end

subgraph group_infra["Infra"]
  node_email_service["Email service<br/>nodemailer flow<br/>[sendEmail.ts]"]
  node_mailer_config["Mailer config<br/>smtp config<br/>[nodemailler.ts]"]
  node_validation["Validation<br/>input rules<br/>[validation.ts]"]
  node_site_metadata["Site metadata<br/>content config<br/>[siteMetadata.js]"]
end

node_app_root -->|"wraps"| node_public_layout
node_app_root -->|"provides"| node_theme_providers
node_public_layout -->|"uses"| node_shell
node_public_layout -->|"reads"| node_site_metadata
node_shell -->|"builds on"| node_ui_primitives
node_home_route -->|"delegates"| node_home_content
node_about_route -->|"delegates"| node_about_content
node_summits_route -->|"delegates"| node_summits_content
node_conference_route -->|"reuses"| node_summits_content
node_contact_route -->|"delegates"| node_contact_content
node_contact_content -->|"contains"| node_contact_form
node_contact_form -->|"checks"| node_validation
node_contact_form -->|"sends"| node_email_service
node_email_service -->|"configures"| node_mailer_config
node_pricing_route -->|"reads"| node_site_metadata
node_seminar_route -->|"reads"| node_site_metadata
node_home_content -->|"uses"| node_ui_primitives
node_about_content -->|"uses"| node_ui_primitives
node_summits_content -->|"uses"| node_ui_primitives
node_contact_content -->|"uses"| node_ui_primitives
node_theme_providers -->|"affects"| node_shell

click node_app_root "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/layout.tsx"
click node_public_layout "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/layout.tsx"
click node_theme_providers "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/theme-providers.tsx"
click node_home_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/page.tsx"
click node_about_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/about/page.tsx"
click node_summits_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/summits/page.tsx"
click node_conference_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/conferences/global-conference-2015/page.tsx"
click node_contact_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/contact/page.tsx"
click node_pricing_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/pricing/page.tsx"
click node_seminar_route "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/tu-seminar/page.tsx"
click node_ui_primitives "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/components/ui/button.tsx"
click node_home_content "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/home/hero/index.tsx"
click node_about_content "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/About/ManagementTeam/index.tsx"
click node_summits_content "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/summits/hero/index.tsx"
click node_contact_content "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/Contact/index.tsx"
click node_contact_form "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/ContactForm/index.tsx"
click node_email_service "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/lib/sendEmail.ts"
click node_mailer_config "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/config/nodemailler.ts"
click node_validation "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/Validation/validation.ts"
click node_site_metadata "https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/data/siteMetadata.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_app_root,node_public_layout,node_home_route,node_about_route,node_summits_route,node_conference_route,node_contact_route,node_pricing_route,node_seminar_route toneBlue
class node_home_content,node_about_content,node_summits_content,node_contact_content,node_contact_form toneAmber
class node_theme_providers,node_shell,node_ui_primitives toneMint
class node_email_service,node_mailer_config,node_validation,node_site_metadata toneRose
```

## Components

### Routing

Next.js App Router entry points and route boundaries.

- [App layout](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/layout.tsx): next layout · Top-level application wrapper. · `src/app/layout.tsx`
- [Public shell](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/layout.tsx): route layout · Layout for the public marketing site. · `src/app/(public)/layout.tsx`
- [Home route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/page.tsx): page entry · Landing page entry point delegating to feature sections. · `src/app/(public)/page.tsx`
- [About route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/about/page.tsx): page entry · About page entry point. · `src/app/(public)/about/page.tsx`
- [Summits route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/summits/page.tsx): page entry · Summits landing page entry point. · `src/app/(public)/summits/page.tsx`
- [Conference route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/conferences/global-conference-2015/page.tsx): page entry · Conference page entry point. · `src/app/(public)/conferences/global-conference-2015/page.tsx`
- [Contact route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/contact/page.tsx): page entry · Contact page entry point. · `src/app/(public)/contact/page.tsx`
- [Pricing route](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/pricing/page.tsx): page entry · Pricing page entry point. · `src/app/(public)/pricing/page.tsx`
- [Tu Seminar](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/(public)/tu-seminar/page.tsx): page entry · TuSeminar page entry point. · `src/app/(public)/tu-seminar/page.tsx`

### Content

Feature and page composition layer for the public site.

- [Home content](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/home/hero/index.tsx): feature pages · Home page sections and composed content blocks. · `view/page/home/hero/index.tsx`
- [About content](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/About/ManagementTeam/index.tsx): feature pages · About page sections and team/mission content. · `view/page/About/ManagementTeam/index.tsx`
- [Summits content](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/summits/hero/index.tsx): feature pages · Summits page sections and regional summit pages. · `view/page/summits/hero/index.tsx`
- [Contact content](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/Contact/index.tsx): feature pages · Contact page and form composition. · `view/page/Contact/index.tsx`
- [Contact form](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/view/page/ContactForm/index.tsx): interactive form · Input capture and submission flow for email contact. · `view/page/ContactForm/index.tsx`

### Shared UI

Global shell and reusable UI primitives.

- [Theme providers](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/app/theme-providers.tsx): theme context · App-wide theme context wrapper. · `src/app/theme-providers.tsx`
- **Site shell**: shared chrome · Global navbar, footer, theme switch, and site-wide presentation.
- [UI primitives](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/src/components/ui/button.tsx): design system · Reusable low-level controls such as button, card, and carousel. · `src/components/ui/button.tsx`

### Infra

Validation, email delivery, metadata, and build-time support.

- [Email service](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/lib/sendEmail.ts): nodemailer flow · Email sending implementation and mailer configuration. · `lib/sendEmail.ts`
- [Mailer config](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/config/nodemailler.ts): smtp config · Nodemailer setup and environment-driven transport config. · `config/nodemailler.ts`
- [Validation](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/Validation/validation.ts): input rules · Contact input validation before submission. · `Validation/validation.ts`
- [Site metadata](https://github.com/ahmadullahchowdhury/thesriii-copy/blob/kowcher/data/siteMetadata.js): content config · Central metadata for SEO and page context. · `data/siteMetadata.js`

## Connections

- App layout → Public shell: wraps · Root layout composes the public site layout.
- App layout → Theme providers: provides · Theme context is installed at the app boundary.
- Public shell → Site shell: uses · Public layout renders the global site chrome.
- Public shell → Site metadata: reads · Layout and pages consume shared metadata.
- Site shell → UI primitives: builds on · Shared chrome uses reusable UI primitives.
- Home route → Home content: delegates · Home route delegates rendering to feature sections.
- About route → About content: delegates · About route delegates rendering to feature sections.
- Summits route → Summits content: delegates · Summits route delegates rendering to feature sections.
- Conference route → Summits content: reuses · Conference page follows the same content composition pattern.
- Contact route → Contact content: delegates · Contact route delegates to the contact feature layer.
- Contact content → Contact form: contains · Contact page includes the interactive form.
- Contact form → Validation: checks · Form input is validated before sending.
- Contact form → Email service: sends · Validated contact submissions trigger email delivery.
- Email service → Mailer config: configures · Mail delivery relies on Nodemailer transport settings.
- Pricing route → Site metadata: reads · Pricing content is driven by shared site metadata.
- Tu Seminar → Site metadata: reads · TuSeminar content is driven by shared site metadata.
- Home content → UI primitives: uses · Feature sections assemble from shared primitives.
- About content → UI primitives: uses · About sections assemble from shared primitives.
- Summits content → UI primitives: uses · Summits sections assemble from shared primitives.
- Contact content → UI primitives: uses · Contact UI composes shared primitives and controls.
- Theme providers → Site shell: affects · Theme state influences global chrome rendering.
