# dmitriiutyrf/cryptoos architecture

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

## Overview

This is a low-current-systems marketing site with an interactive estimate calculator. Visitors browse service and company information, select services and project details, calculate a preliminary estimate, then submit it for saving. The sampled code confirms local contact-form handling rather than a backend submission. The README is only the default Next.js starter guide; unsampled components are represented by their tree paths, but their behavior and internal wiring are not inferred.

Main entry points: [`app/page.tsx`](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/page.tsx) (Home page), [`app/actions.ts`](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/actions.ts) (Save estimate action), [`lib/db/index.ts`](https://github.com/dmitriiutyrf/cryptoos/blob/main/lib/db/index.ts) (Database client), [`app/components/EstimateCalculator.tsx`](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/EstimateCalculator.tsx) (Estimate calculator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Marketing site"]
  node_page["Home page<br/>[page.tsx]"]
  node_layout["Root layout<br/>[layout.tsx]"]
  node_header["Header<br/>[Header.tsx]"]
  node_hero["Hero<br/>[Hero.tsx]"]
  node_features["Service features<br/>[Features.tsx]"]
  node_about["Company info<br/>[About.tsx]"]
  node_contact["Contact form<br/>[Contact.tsx]"]
  node_footer["Footer<br/>[Footer.tsx]"]
end

subgraph group_estimate["Estimate workflow"]
  node_calculator["Estimate calculator"]
  node_save["Save estimate action<br/>[actions.ts]"]
end

subgraph group_persistence["Estimate storage"]
  node_dbclient["Database client<br/>[index.ts]"]
  node_estimates[("Estimates table<br/>[schema.ts]")]
end

node_visitor(("Visitor"))
node_postgres[("Vercel Postgres")]

node_visitor -->|"opens"| node_page
node_page -->|"renders within"| node_layout
node_page -->|"renders"| node_header
node_page -->|"renders"| node_hero
node_page -->|"renders"| node_features
node_page -->|"renders"| node_about
node_page -->|"renders"| node_calculator
node_page -->|"renders"| node_contact
node_page -->|"renders"| node_footer
node_visitor -->|"enters details"| node_calculator
node_calculator -->|"submits estimate"| node_save
node_save -->|"inserts via"| node_dbclient
node_save -->|"writes estimate"| node_estimates
node_dbclient -->|"uses schema"| node_estimates
node_dbclient -->|"connects to"| node_postgres

click node_page "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/page.tsx"
click node_layout "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/layout.tsx"
click node_header "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Header.tsx"
click node_hero "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Hero.tsx"
click node_features "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Features.tsx"
click node_about "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/About.tsx"
click node_contact "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Contact.tsx"
click node_footer "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Footer.tsx"
click node_calculator "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/EstimateCalculator.tsx"
click node_save "https://github.com/dmitriiutyrf/cryptoos/blob/main/app/actions.ts"
click node_dbclient "https://github.com/dmitriiutyrf/cryptoos/blob/main/lib/db/index.ts"
click node_estimates "https://github.com/dmitriiutyrf/cryptoos/blob/main/lib/db/schema.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_page,node_layout,node_header,node_hero,node_features,node_about,node_contact,node_footer toneBlue
class node_calculator,node_save,node_postgres toneAmber
class node_dbclient,node_estimates toneMint
class node_visitor toneIndigo
```

## Components

### Marketing site

- [Home page](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/page.tsx): `app/page.tsx`
- [Root layout](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/layout.tsx): `app/layout.tsx`
- [Header](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Header.tsx): `app/components/Header.tsx`
- [Hero](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Hero.tsx): `app/components/Hero.tsx`
- [Service features](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Features.tsx): `app/components/Features.tsx`
- [Company info](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/About.tsx): `app/components/About.tsx`
- [Contact form](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Contact.tsx): `app/components/Contact.tsx`
- [Footer](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/Footer.tsx): `app/components/Footer.tsx`

### Estimate workflow

- [Estimate calculator](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/components/EstimateCalculator.tsx): `app/components/EstimateCalculator.tsx`
- [Save estimate action](https://github.com/dmitriiutyrf/cryptoos/blob/main/app/actions.ts): `app/actions.ts`

### Estimate storage

- [Database client](https://github.com/dmitriiutyrf/cryptoos/blob/main/lib/db/index.ts): `lib/db/index.ts`
- [Estimates table](https://github.com/dmitriiutyrf/cryptoos/blob/main/lib/db/schema.ts): `lib/db/schema.ts`

### Other components

- **Visitor**
- **Vercel Postgres**

## Connections

- Visitor → Home page: opens
- Home page → Root layout: renders within
- Home page → Header: renders
- Home page → Hero: renders
- Home page → Service features: renders
- Home page → Company info: renders
- Home page → Estimate calculator: renders
- Home page → Contact form: renders
- Home page → Footer: renders
- Visitor → Estimate calculator: enters details
- Estimate calculator → Save estimate action: submits estimate
- Save estimate action → Database client: inserts via
- Save estimate action → Estimates table: writes estimate
- Database client → Estimates table: uses schema
- Database client → Vercel Postgres: connects to
