# rudeodud/high_school_employment_system architecture

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

- Interactive diagram: https://gitdiagram.com/rudeodud/high_school_employment_system
- Repository: https://github.com/rudeodud/high_school_employment_system

## Overview

학교 채용 시스템은 학교 샘플 공고와 고용24 외부 공고를 탐색하고, 학교 기본정보를 검색하는 웹 앱입니다. 주 흐름은 공고 분류 선택, 검색, 목록·상세 확인이며 외부 공고는 브라우저에서 서버 라우트를 거쳐 조회됩니다. 학교 검색도 화면에서 서버 라우트를 호출해 NEIS 정보를 찾습니다. 로그인·회원가입은 입력 검사용 미리보기로, 계정이나 신청 데이터는 저장하지 않습니다. README와 발췌된 소스에서 확인되는 연결만 표시했으며, 학교 API 라우트의 내부 구현은 발췌되지 않았습니다.

Main entry points: [`src/components/Header.tsx`](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/Header.tsx) (상단 메뉴), [`src/app/page.tsx`](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/page.tsx) (공고 목록 화면), [`src/app/login/page.tsx`](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/login/page.tsx) (로그인 화면), [`src/app/api/jobs/route.ts`](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/api/jobs/route.ts) (외부 공고 라우트)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_jobs["공고 탐색"]
  node_home["공고 목록 화면<br/>[page.tsx]"]
  node_job_data["공고 샘플·형식<br/>[jobs.ts]"]
  node_job_card["공고 상세 카드<br/>[JobCard.tsx]"]
  node_jobs_api["외부 공고 라우트<br/>[route.ts]"]
  node_work24["고용24 API"]
end

subgraph group_schools["학교 정보"]
  node_schools_page["학교 정보 화면<br/>[page.tsx]"]
  node_school_search["학교 검색<br/>[SchoolSearch.tsx]"]
  node_schools_api["학교 검색 라우트<br/>[route.ts]"]
  node_neis["NEIS API"]
end

subgraph group_accounts["계정 미리보기"]
  node_login_page["로그인 화면<br/>[page.tsx]"]
  node_signup_page["회원가입 화면<br/>[page.tsx]"]
  node_auth_form["인증 입력 폼<br/>[AuthForm.tsx]"]
end

subgraph group_shared["공통 앱"]
  node_layout["공통 레이아웃<br/>[layout.tsx]"]
  node_header["상단 메뉴<br/>[Header.tsx]"]
  node_source_state["공고 선택 상태"]
end

node_student(("학생"))

node_student -->|"공고 탐색"| node_home
node_student -->|"학교 검색"| node_schools_page
node_student -->|"로그인 시도"| node_login_page
node_student -->|"가입 입력"| node_signup_page
node_layout -->|"배치"| node_header
node_layout -->|"상태 제공"| node_source_state
node_header -->|"선택 변경"| node_source_state
node_header -->|"공고 메뉴 이동"| node_home
node_home -->|"선택 읽기"| node_source_state
node_home -->|"샘플 공고 읽기"| node_job_data
node_home -->|"공고 렌더"| node_job_card
node_home -->|"외부 공고 조회"| node_jobs_api
node_jobs_api -->|"공고 요청"| node_work24
node_jobs_api -->|"공고 형식 사용"| node_job_data
node_job_card -->|"공고 형식 사용"| node_job_data
node_header -->|"학교 메뉴 이동"| node_schools_page
node_schools_page -->|"검색 UI 배치"| node_school_search
node_school_search -->|"학교명 조회"| node_schools_api
node_schools_api -->|"학교정보 조회"| node_neis
node_header -->|"로그인 메뉴 이동"| node_login_page
node_header -->|"가입 메뉴 이동"| node_signup_page
node_login_page -->|"로그인 폼 렌더"| node_auth_form
node_signup_page -->|"가입 폼 렌더"| node_auth_form
node_auth_form -->|"입력값 전달"| node_login_page

click node_layout "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/layout.tsx"
click node_header "https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/Header.tsx"
click node_source_state "https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/JobSourceProvider.tsx"
click node_home "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/page.tsx"
click node_job_data "https://github.com/rudeodud/high_school_employment_system/blob/main/src/data/jobs.ts"
click node_job_card "https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/JobCard.tsx"
click node_jobs_api "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/api/jobs/route.ts"
click node_schools_page "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/schools/page.tsx"
click node_school_search "https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/SchoolSearch.tsx"
click node_schools_api "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/api/schools/route.ts"
click node_login_page "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/login/page.tsx"
click node_signup_page "https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/signup/page.tsx"
click node_auth_form "https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/AuthForm.tsx"

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_home,node_job_data,node_job_card,node_jobs_api,node_work24 toneBlue
class node_schools_page,node_school_search,node_schools_api,node_neis toneAmber
class node_login_page,node_signup_page,node_auth_form toneMint
class node_layout,node_header,node_source_state toneRose
class node_student toneIndigo
```

## Components

### 공고 탐색

- [공고 목록 화면](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [공고 샘플·형식](https://github.com/rudeodud/high_school_employment_system/blob/main/src/data/jobs.ts): `src/data/jobs.ts`
- [공고 상세 카드](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/JobCard.tsx): `src/components/JobCard.tsx`
- [외부 공고 라우트](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/api/jobs/route.ts): `src/app/api/jobs/route.ts`
- **고용24 API**

### 학교 정보

- [학교 정보 화면](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/schools/page.tsx): `src/app/schools/page.tsx`
- [학교 검색](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/SchoolSearch.tsx): `src/components/SchoolSearch.tsx`
- [학교 검색 라우트](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/api/schools/route.ts): `src/app/api/schools/route.ts`
- **NEIS API**

### 계정 미리보기

- [로그인 화면](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/login/page.tsx): `src/app/login/page.tsx`
- [회원가입 화면](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/signup/page.tsx): `src/app/signup/page.tsx`
- [인증 입력 폼](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/AuthForm.tsx): `src/components/AuthForm.tsx`

### 공통 앱

- [공통 레이아웃](https://github.com/rudeodud/high_school_employment_system/blob/main/src/app/layout.tsx): `src/app/layout.tsx`
- [상단 메뉴](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/Header.tsx): `src/components/Header.tsx`
- [공고 선택 상태](https://github.com/rudeodud/high_school_employment_system/blob/main/src/components/JobSourceProvider.tsx): `src/components/JobSourceProvider.tsx`

### Other components

- **학생**

## Connections

- 학생 → 공고 목록 화면: 공고 탐색 (evidence: `README.md`)
- 학생 → 학교 정보 화면: 학교 검색 (evidence: `README.md`)
- 학생 → 로그인 화면: 로그인 시도 (evidence: `README.md`)
- 학생 → 회원가입 화면: 가입 입력 (evidence: `README.md`)
- 공통 레이아웃 → 상단 메뉴: 배치 (evidence: `src/app/layout.tsx`)
- 공통 레이아웃 → 공고 선택 상태: 상태 제공 (evidence: `src/app/layout.tsx`)
- 상단 메뉴 → 공고 선택 상태: 선택 변경 (evidence: `src/components/Header.tsx`)
- 상단 메뉴 → 공고 목록 화면: 공고 메뉴 이동 (evidence: `src/components/Header.tsx`)
- 공고 목록 화면 → 공고 선택 상태: 선택 읽기 (evidence: `src/app/page.tsx`)
- 공고 목록 화면 → 공고 샘플·형식: 샘플 공고 읽기 (evidence: `src/app/page.tsx`)
- 공고 목록 화면 → 공고 상세 카드: 공고 렌더 (evidence: `src/app/page.tsx`)
- 공고 목록 화면 → 외부 공고 라우트: 외부 공고 조회 (evidence: `src/app/page.tsx`)
- 외부 공고 라우트 → 고용24 API: 공고 요청 (evidence: `src/app/api/jobs/route.ts`)
- 외부 공고 라우트 → 공고 샘플·형식: 공고 형식 사용 (evidence: `src/app/api/jobs/route.ts`)
- 공고 상세 카드 → 공고 샘플·형식: 공고 형식 사용 (evidence: `src/components/JobCard.tsx`)
- 상단 메뉴 → 학교 정보 화면: 학교 메뉴 이동 (evidence: `src/components/Header.tsx`)
- 학교 정보 화면 → 학교 검색: 검색 UI 배치 (evidence: `src/app/schools/page.tsx`)
- 학교 검색 → 학교 검색 라우트: 학교명 조회 (evidence: `src/components/SchoolSearch.tsx`)
- 학교 검색 라우트 → NEIS API: 학교정보 조회 (evidence: `README.md`)
- 상단 메뉴 → 로그인 화면: 로그인 메뉴 이동 (evidence: `src/components/Header.tsx`)
- 상단 메뉴 → 회원가입 화면: 가입 메뉴 이동 (evidence: `src/components/Header.tsx`)
- 로그인 화면 → 인증 입력 폼: 로그인 폼 렌더 (evidence: `src/app/login/page.tsx`)
- 회원가입 화면 → 인증 입력 폼: 가입 폼 렌더 (evidence: `src/app/signup/page.tsx`)
- 인증 입력 폼 → 로그인 화면: 입력값 전달 (evidence: `src/components/AuthForm.tsx`)
