# tericcabrel/blog-tutorials architecture

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

- Interactive diagram: https://gitdiagram.com/tericcabrel/blog-tutorials
- Repository: https://github.com/tericcabrel/blog-tutorials

## Overview

This repository is a catalog of independent tutorial projects, not one integrated application. A reader chooses a tutorial and follows its standalone example, which may be an API, web app, infrastructure sample, or focused utility. The groups collect related tutorial domains; they do not imply shared runtime flows. The README documents the tutorial topics, while the tree and sampled sources show selected implementations. Many listed projects were not sampled, so their internal behavior and connections are intentionally not inferred.

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web applications"]
  node_nextblog["Next.js blog"]
  node_staticwebsite["Static website"]
  node_newsletterui["Newsletter UI"]
  node_sseui["SSE frontend"]
  node_springweb["Spring web apps"]
end

subgraph group_api["APIs and services"]
  node_restapi["Node REST APIs"]
  node_graphql["GraphQL APIs"]
  node_middleware["Next middleware"]
  node_jwt["JWT authentication"]
  node_rbac["Role-based access"]
  node_validation["Request validation"]
end

subgraph group_cloud["Cloud and messaging"]
  node_lambda["Lambda examples"]
  node_awsinfra["AWS CDK stacks"]
  node_snsservices["SNS services"]
  node_rabbitmq["RabbitMQ samples"]
end

subgraph group_data["Data and integrations"]
  node_prisma["Prisma examples"]
  node_mongodb["MongoDB examples"]
  node_caching["Caching examples"]
  node_upload["File uploads"]
  node_google["Google Drive"]
  node_email["Email integrations"]
  node_scraping["Web scraping"]
  node_csvexcel["CSV and Excel"]
end

subgraph group_tools["Developer utilities"]
  node_typescript["TypeScript starter"]
  node_commitlint["Commit linting"]
  node_cron["Scheduled tasks"]
  node_pdf["PDF generation"]
  node_translation["AWS Translate"]
end

node_reader(("Tutorial reader"))
node_catalog["Tutorial catalog"]

node_reader -->|"browses"| node_catalog

click node_nextblog "https://github.com/tericcabrel/blog-tutorials/tree/main/docker-nextjs/app"
click node_staticwebsite "https://github.com/tericcabrel/blog-tutorials/tree/main/aws-cdk-static-website/website/src"
click node_newsletterui "https://github.com/tericcabrel/blog-tutorials/tree/main/react-newsletter/src"
click node_sseui "https://github.com/tericcabrel/blog-tutorials/tree/main/node-react-sse/frontend/src"
click node_springweb "https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-tailwind-css/src/main/java/com/tericcabrel/webapp/controllers"
click node_restapi "https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api/src"
click node_graphql "https://github.com/tericcabrel/blog-tutorials/tree/main/node-graphql/src"
click node_middleware "https://github.com/tericcabrel/blog-tutorials/tree/main/next-api-middleware/src"
click node_jwt "https://github.com/tericcabrel/blog-tutorials/tree/main/node-api-jwt-auth/src"
click node_rbac "https://github.com/tericcabrel/blog-tutorials/tree/main/node-api-rbac-auth/src"
click node_validation "https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api-validation/src"
click node_awsinfra "https://github.com/tericcabrel/blog-tutorials/tree/main/github-oidc-aws-cdk/lib"
click node_snsservices "https://github.com/tericcabrel/blog-tutorials/tree/main/node-aws-sns"
click node_rabbitmq "https://github.com/tericcabrel/blog-tutorials/tree/main/node-rabbitmq-pubsub"
click node_prisma "https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-mysql/src"
click node_mongodb "https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-mongo/src"
click node_caching "https://github.com/tericcabrel/blog-tutorials/tree/main/node-caching/src"
click node_upload "https://github.com/tericcabrel/blog-tutorials/tree/main/node-upload-files/src"
click node_google "https://github.com/tericcabrel/blog-tutorials/tree/main/node-gdrive-api/src"
click node_email "https://github.com/tericcabrel/blog-tutorials/tree/main/node-email-ses/src"
click node_scraping "https://github.com/tericcabrel/blog-tutorials/tree/main/node-web-scraping/src"
click node_csvexcel "https://github.com/tericcabrel/blog-tutorials/tree/main/node-csv-write/src"
click node_typescript "https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-starter/src"
click node_commitlint "https://github.com/tericcabrel/blog-tutorials/tree/main/commit-lint-app/src"
click node_cron "https://github.com/tericcabrel/blog-tutorials/tree/main/node-cron-job/src"
click node_pdf "https://github.com/tericcabrel/blog-tutorials/tree/main/node-webapp-pdf/src"
click node_translation "https://github.com/tericcabrel/blog-tutorials/tree/main/node-aws-translate/src"

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_nextblog,node_staticwebsite,node_newsletterui,node_sseui,node_springweb toneBlue
class node_restapi,node_graphql,node_middleware,node_jwt,node_rbac,node_validation toneAmber
class node_lambda,node_awsinfra,node_snsservices,node_rabbitmq toneMint
class node_prisma,node_mongodb,node_caching,node_upload,node_google,node_email,node_scraping,node_csvexcel toneRose
class node_typescript,node_commitlint,node_cron,node_pdf,node_translation,node_reader,node_catalog toneIndigo
```

## Components

### Web applications

- [Next.js blog](https://github.com/tericcabrel/blog-tutorials/tree/main/docker-nextjs/app): `docker-nextjs/app`
- [Static website](https://github.com/tericcabrel/blog-tutorials/tree/main/aws-cdk-static-website/website/src): `aws-cdk-static-website/website/src`
- [Newsletter UI](https://github.com/tericcabrel/blog-tutorials/tree/main/react-newsletter/src): `react-newsletter/src`
- [SSE frontend](https://github.com/tericcabrel/blog-tutorials/tree/main/node-react-sse/frontend/src): `node-react-sse/frontend/src`
- [Spring web apps](https://github.com/tericcabrel/blog-tutorials/tree/main/springboot-tailwind-css/src/main/java/com/tericcabrel/webapp/controllers): `springboot-tailwind-css/src/main/java/com/tericcabrel/webapp/controllers`

### APIs and services

- [Node REST APIs](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api/src): `node-rest-api/src`
- [GraphQL APIs](https://github.com/tericcabrel/blog-tutorials/tree/main/node-graphql/src): `node-graphql/src`
- [Next middleware](https://github.com/tericcabrel/blog-tutorials/tree/main/next-api-middleware/src): `next-api-middleware/src`
- [JWT authentication](https://github.com/tericcabrel/blog-tutorials/tree/main/node-api-jwt-auth/src): `node-api-jwt-auth/src`
- [Role-based access](https://github.com/tericcabrel/blog-tutorials/tree/main/node-api-rbac-auth/src): `node-api-rbac-auth/src`
- [Request validation](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rest-api-validation/src): `node-rest-api-validation/src`

### Cloud and messaging

- **Lambda examples**
- [AWS CDK stacks](https://github.com/tericcabrel/blog-tutorials/tree/main/github-oidc-aws-cdk/lib): `github-oidc-aws-cdk/lib`
- [SNS services](https://github.com/tericcabrel/blog-tutorials/tree/main/node-aws-sns): `node-aws-sns`
- [RabbitMQ samples](https://github.com/tericcabrel/blog-tutorials/tree/main/node-rabbitmq-pubsub): `node-rabbitmq-pubsub`

### Data and integrations

- [Prisma examples](https://github.com/tericcabrel/blog-tutorials/tree/main/node-prisma-mysql/src): `node-prisma-mysql/src`
- [MongoDB examples](https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-mongo/src): `node-typescript-mongo/src`
- [Caching examples](https://github.com/tericcabrel/blog-tutorials/tree/main/node-caching/src): `node-caching/src`
- [File uploads](https://github.com/tericcabrel/blog-tutorials/tree/main/node-upload-files/src): `node-upload-files/src`
- [Google Drive](https://github.com/tericcabrel/blog-tutorials/tree/main/node-gdrive-api/src): `node-gdrive-api/src`
- [Email integrations](https://github.com/tericcabrel/blog-tutorials/tree/main/node-email-ses/src): `node-email-ses/src`
- [Web scraping](https://github.com/tericcabrel/blog-tutorials/tree/main/node-web-scraping/src): `node-web-scraping/src`
- [CSV and Excel](https://github.com/tericcabrel/blog-tutorials/tree/main/node-csv-write/src): `node-csv-write/src`

### Developer utilities

- [TypeScript starter](https://github.com/tericcabrel/blog-tutorials/tree/main/node-typescript-starter/src): `node-typescript-starter/src`
- [Commit linting](https://github.com/tericcabrel/blog-tutorials/tree/main/commit-lint-app/src): `commit-lint-app/src`
- [Scheduled tasks](https://github.com/tericcabrel/blog-tutorials/tree/main/node-cron-job/src): `node-cron-job/src`
- [PDF generation](https://github.com/tericcabrel/blog-tutorials/tree/main/node-webapp-pdf/src): `node-webapp-pdf/src`
- [AWS Translate](https://github.com/tericcabrel/blog-tutorials/tree/main/node-aws-translate/src): `node-aws-translate/src`

### Other components

- **Tutorial reader**
- **Tutorial catalog**

## Connections

- Tutorial reader → Tutorial catalog: browses (evidence: `README.md`)
