# damanegi2005/docker-compose architecture

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

## Overview

간단한 학생용 일정·할 일 웹 서비스입니다. 사용자는 로그인 화면에서 인증한 뒤 달력을 열고 날짜를 선택해 할 일을 조회하거나 추가합니다. 브라우저 JavaScript가 Flask API를 호출하고, API는 CSV 파일을 읽고 씁니다. README는 Nginx 기반 프런트엔드와 Docker Compose 컨테이너 연결을 설명하지만, 해당 설정의 세부 구현은 제공된 파일에서 확인할 수 없습니다. 로그인·할 일 API와 CSV 접근은 app.py에서 확인되며, 완료 상태 변경 API도 있지만 화면에서 호출하는 코드는 확인되지 않습니다.

Main entry points: [`backend/app.py`](https://github.com/damanegi2005/docker-compose/blob/main/backend/app.py) (할 일 API), [`frontend/popup.js`](https://github.com/damanegi2005/docker-compose/blob/main/frontend/popup.js) (날짜별 할 일), [`frontend/login.js`](https://github.com/damanegi2005/docker-compose/blob/main/frontend/login.js) (로그인 동작), [`frontend/calendar.js`](https://github.com/damanegi2005/docker-compose/blob/main/frontend/calendar.js) (달력 렌더링)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["브라우저 화면"]
  node_login_page["로그인 화면<br/>[login.html]"]
  node_login_js["로그인 동작<br/>[login.js]"]
  node_calendar_page["달력 화면<br/>[calendar.html]"]
  node_calendar_js["달력 렌더링<br/>[calendar.js]"]
  node_popup_js["날짜별 할 일<br/>[popup.js]"]
end

subgraph group_api["Flask API"]
  node_login_api["로그인 API<br/>[app.py]"]
  node_todo_api["할 일 API<br/>[app.py]"]
end

subgraph group_storage["CSV 저장소"]
  node_user_csv[("사용자 CSV")]
  node_todo_csv[("할 일 CSV")]
end

subgraph group_deployment["배포 구성"]
  node_nginx["Nginx 프런트엔드"]
  node_compose["Compose 구성<br/>[docker-compose.yml]"]
end

node_user(("사용자"))

node_user -->|"opens"| node_login_page
node_login_js -->|"posts credentials"| node_login_api
node_login_api -->|"reads users"| node_user_csv
node_calendar_js -->|"opens date popup"| node_popup_js
node_popup_js -->|"fetches and adds"| node_todo_api
node_todo_api -->|"validates schedule owner"| node_user_csv
node_todo_api -->|"reads and writes tasks"| node_todo_csv
node_nginx -.->|"runs in containers"| node_compose

click node_login_page "https://github.com/damanegi2005/docker-compose/blob/main/frontend/login.html"
click node_login_js "https://github.com/damanegi2005/docker-compose/blob/main/frontend/login.js"
click node_calendar_page "https://github.com/damanegi2005/docker-compose/blob/main/frontend/calendar.html"
click node_calendar_js "https://github.com/damanegi2005/docker-compose/blob/main/frontend/calendar.js"
click node_popup_js "https://github.com/damanegi2005/docker-compose/blob/main/frontend/popup.js"
click node_login_api "https://github.com/damanegi2005/docker-compose/blob/main/backend/app.py"
click node_todo_api "https://github.com/damanegi2005/docker-compose/blob/main/backend/app.py"
click node_compose "https://github.com/damanegi2005/docker-compose/blob/main/docker-compose.yml"

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_login_page,node_login_js,node_calendar_page,node_calendar_js,node_popup_js toneBlue
class node_login_api,node_todo_api toneAmber
class node_user_csv,node_todo_csv toneMint
class node_nginx,node_compose toneRose
class node_user toneIndigo
```

## Components

### 브라우저 화면

- [로그인 화면](https://github.com/damanegi2005/docker-compose/blob/main/frontend/login.html): `frontend/login.html`
- [로그인 동작](https://github.com/damanegi2005/docker-compose/blob/main/frontend/login.js): `frontend/login.js`
- [달력 화면](https://github.com/damanegi2005/docker-compose/blob/main/frontend/calendar.html): `frontend/calendar.html`
- [달력 렌더링](https://github.com/damanegi2005/docker-compose/blob/main/frontend/calendar.js): `frontend/calendar.js`
- [날짜별 할 일](https://github.com/damanegi2005/docker-compose/blob/main/frontend/popup.js): `frontend/popup.js`

### Flask API

- [로그인 API](https://github.com/damanegi2005/docker-compose/blob/main/backend/app.py): `backend/app.py`
- [할 일 API](https://github.com/damanegi2005/docker-compose/blob/main/backend/app.py): `backend/app.py`

### CSV 저장소

- **사용자 CSV**
- **할 일 CSV**

### 배포 구성

- **Nginx 프런트엔드**
- [Compose 구성](https://github.com/damanegi2005/docker-compose/blob/main/docker-compose.yml): `docker-compose.yml`

### Other components

- **사용자**

## Connections

- 사용자 → 로그인 화면: opens (evidence: `README.md`)
- 로그인 동작 → 로그인 API: posts credentials (evidence: `frontend/login.js`)
- 로그인 API → 사용자 CSV: reads users (evidence: `backend/app.py`)
- 달력 렌더링 → 날짜별 할 일: opens date popup (evidence: `frontend/calendar.js`)
- 날짜별 할 일 → 할 일 API: fetches and adds (evidence: `frontend/popup.js`)
- 할 일 API → 사용자 CSV: validates schedule owner (evidence: `backend/app.py`)
- 할 일 API → 할 일 CSV: reads and writes tasks (evidence: `backend/app.py`)
- Nginx 프런트엔드 → Compose 구성: runs in containers (evidence: `README.md`)
