# gurjyot-gurz/elastic-beanstalk-containerized-app architecture

> Architecture diagram of the GitHub repository gurjyot-gurz/elastic-beanstalk-containerized-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gurjyot-gurz/elastic-beanstalk-containerized-app
- Repository: https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app

## Overview

This repository is a Flask portfolio site packaged for deployment on AWS Elastic Beanstalk. A visitor reaches the site through the load balancer; Flask serves the landing page and its assets, while a separate health route supports infrastructure checks. The documented deployment branch covers Docker-hosted compute, multi-zone scaling, and CloudWatch log streaming. The README describes these AWS relationships, but the corresponding cloud provisioning implementation is not present in the sampled source; those links reflect documentation rather than inspected code.

Main entry points: [`Dockerfile`](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/Dockerfile) (Docker container), [`application.py`](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/application.py) (Flask application), [`.ebextensions/01_cloudwatch.config`](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/.ebextensions/01_cloudwatch.config) (Platform configuration), [`templates/index.html`](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/templates/index.html) (Landing page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_flask["Flask application<br/>[application.py]"]
end

subgraph group_frontend["Portfolio frontend"]
  node_landing["Landing page<br/>[index.html]"]
  node_styles["Stylesheet<br/>[styles.css]"]
  node_script["Frontend interactions<br/>[script.js]"]
end

subgraph group_hosting["AWS hosting"]
  node_alb["Application Load Balancer"]
  node_beanstalk["Elastic Beanstalk"]
  node_asg["Auto Scaling Group"]
  node_ec2["EC2 instances"]
  node_docker["Docker container"]
end

subgraph group_observability["Observability"]
  node_ebconfig["Platform configuration"]
  node_cloudwatch["CloudWatch"]
end

node_visitor(("Visitor"))

node_visitor -->|"HTTPS request"| node_alb
node_alb -->|"routes traffic"| node_ec2
node_alb -->|"health probes"| node_flask
node_beanstalk -->|"manages capacity"| node_asg
node_beanstalk -->|"provisions ingress"| node_alb
node_asg -->|"scales instances"| node_ec2
node_ec2 -->|"runs container"| node_docker
node_docker -->|"runs application"| node_flask
node_flask -->|"renders template"| node_landing
node_visitor -->|"loads asset"| node_styles
node_visitor -->|"loads asset"| node_script
node_ebconfig -->|"enables log streaming"| node_cloudwatch
node_docker -->|"streams logs"| node_cloudwatch

click node_docker "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/Dockerfile"
click node_flask "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/application.py"
click node_landing "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/templates/index.html"
click node_styles "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/static/styles.css"
click node_script "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/static/script.js"
click node_ebconfig "https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/.ebextensions/01_cloudwatch.config"

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_flask toneBlue
class node_landing,node_styles,node_script toneAmber
class node_alb,node_beanstalk,node_asg,node_ec2,node_docker toneMint
class node_ebconfig,node_cloudwatch toneRose
class node_visitor toneIndigo
```

## Components

### Web application

- [Flask application](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/application.py): `application.py`

### Portfolio frontend

- [Landing page](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/templates/index.html): `templates/index.html`
- [Stylesheet](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/static/styles.css): `static/styles.css`
- [Frontend interactions](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/static/script.js): `static/script.js`

### AWS hosting

- **Application Load Balancer**
- **Elastic Beanstalk**
- **Auto Scaling Group**
- **EC2 instances**
- [Docker container](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/Dockerfile): `Dockerfile`

### Observability

- [Platform configuration](https://github.com/gurjyot-gurz/elastic-beanstalk-containerized-app/blob/main/.ebextensions/01_cloudwatch.config): `.ebextensions/01_cloudwatch.config`
- **CloudWatch**

### Other components

- **Visitor**

## Connections

- Visitor → Application Load Balancer: HTTPS request
- Application Load Balancer → EC2 instances: routes traffic
- Application Load Balancer → Flask application: health probes
- Elastic Beanstalk → Auto Scaling Group: manages capacity
- Elastic Beanstalk → Application Load Balancer: provisions ingress
- Auto Scaling Group → EC2 instances: scales instances
- EC2 instances → Docker container: runs container
- Docker container → Flask application: runs application
- Flask application → Landing page: renders template
- Visitor → Stylesheet: loads asset
- Visitor → Frontend interactions: loads asset
- Platform configuration → CloudWatch: enables log streaming
- Docker container → CloudWatch: streams logs
