Skip to content

devKobe24/KoreaHistory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‡°πŸ‡· ν•œκ΅­μ‚¬ 아띠 (KoreaHistory)

체계적인 ν•œκ΅­μ‚¬ ν•™μŠ΅μ„ μœ„ν•œ κ³„μΈ΅ν˜• 데이터 관리 ν”Œλž«νΌ & RESTful API

Java Spring Boot Gradle MySQL JPA Flyway AWS License

β€’ κΈ°λŠ₯ μ†Œκ°œ β€’ 데이터 ꡬ쑰 β€’ 기술 μŠ€νƒ β€’ μ‹œμž‘ν•˜κΈ° β€’ API λͺ…μ„Έ


πŸ“– ν”„λ‘œμ νŠΈ μ†Œκ°œ

ν•œκ΅­μ‚¬ 아띠(KoreaHistory) λŠ” ν•œκ΅­μ‚¬μ˜ λ°©λŒ€ν•œ 데이터λ₯Ό 7단계 계측 ꡬ쑰(Hierarchy) 둜 μ²΄κ³„ν™”ν•˜μ—¬ κ΄€λ¦¬ν•˜κ³  μ œκ³΅ν•˜λŠ” μ›Ή ν”Œλž«νΌμž…λ‹ˆλ‹€.

λ‹¨μˆœν•œ ν…μŠ€νŠΈ λ‚˜μ—΄μ΄ μ•„λ‹Œ, μ‹œλŒ€(Chapter)λΆ€ν„° μ„ΈλΆ€ λ‚΄μš©(Content)κΉŒμ§€ λ…Όλ¦¬μ μœΌλ‘œ μ—°κ²°λœ ν•™μŠ΅ κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€. κ΄€λ¦¬μžλŠ” μ „μš© λŒ€μ‹œλ³΄λ“œλ₯Ό 톡해 데이터λ₯Ό μ‹œκ°μ μœΌλ‘œ 관리할 수 있으며, ν•™μŠ΅μžλŠ” μ›Ή νŽ˜μ΄μ§€λ₯Ό 톡해 κ΅¬μ‘°ν™”λœ ν•œκ΅­μ‚¬ μ½˜ν…μΈ λ₯Ό ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


✨ μ£Όμš” κΈ°λŠ₯

1. 7단계 계측적 데이터 관리

ν•œκ΅­μ‚¬μ˜ 흐름을 λŠκΉ€ 없이 μ—°κ²°ν•˜κΈ° μœ„ν•΄ μ •κ΅ν•œ 7단계 ꡬ쑰λ₯Ό μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€.

  • ꡬ쑰: Chapter > Lesson > Section > Subsection > Topic > Keyword > Content
  • μƒμœ„ κ°œλ… μ‚­μ œ μ‹œ ν•˜μœ„ 데이터가 ν•¨κ»˜ μ •λ¦¬λ˜λŠ” Cascade μ •μ±… 적용

2. λ‹€ν˜•μ„±(Polymorphism) 기반 ContentBlock μ‹œμŠ€ν…œ

ν•™μŠ΅ λ‚΄μš©μ€ λ‹¨μˆœ ν…μŠ€νŠΈμ— κ·ΈμΉ˜μ§€ μ•Šκ³ , λ‹€μ–‘ν•œ ν˜•νƒœμ˜ λΈ”λ‘μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. (JSON 기반 μ €μž₯)

  • TEXT: 일반 ν…μŠ€νŠΈ μ„€λͺ…
  • TABLE: ν‚€-κ°’ ν˜•νƒœμ˜ 정보 ν…Œμ΄λΈ”
  • COMPARISON_TABLE: κ΅­κ°€/μ‹œλŒ€ κ°„ λΉ„κ΅ν‘œ
  • TIMELINE: 역사적 μ‚¬κ±΄μ˜ 흐름 (μ—°ν‘œ)
  • HERITAGE: λ¬Έν™”μž¬ 정보 및 이미지
  • IMAGE_GALLERY: κ΄€λ ¨ 유물/유적 가러리

3. κ΄€λ¦¬μž(Admin) & ν•™μŠ΅μž(Web) λ“€μ–Ό μΈν„°νŽ˜μ΄μŠ€

  • Admin Dashboard: 데이터 CRUD, JSON ν…œν”Œλ¦Ώ 생성기, μ‹€μ‹œκ°„ 미리보기 제곡
  • Web Learning: λ°˜μ‘ν˜• λ””μžμΈ, ν•™μŠ΅ 진도 체크, ν‚€μ›Œλ“œ 검색 및 ν•˜μ΄λΌμ΄νŒ…

4. κ°•λ ₯ν•œ 검색 μ‹œμŠ€ν…œ

  • ν‚€μ›Œλ“œ μ‘°ν•© 검색 지원 (예: "λΉ—μ‚΄λ¬΄λŠ¬ν† κΈ° + 신석기")
  • 계측 ꡬ쑰 역좔적 검색 (Content λ‚΄μš©μ„ 톡해 μƒμœ„ Chapter μ°ΎκΈ°)

πŸ—‚ 데이터 ꡬ쑰

이 ν”„λ‘œμ νŠΈμ˜ 핡심은 7-Layer Hierarchy μž…λ‹ˆλ‹€.

계측 ꡬ쑰 상세

μ—”ν‹°ν‹° μ„€λͺ… μ˜ˆμ‹œ
Chapter κ°€μž₯ 큰 μ‹œλŒ€μ  ꡬ뢄 μ„ μ‚¬μ‹œλŒ€, κ³ λŒ€, κ³ λ €...
Lesson μ‹œλŒ€ λ‚΄μ˜ μ£Όμš” κ°•μ˜ λ‹¨μœ„ ꡬ석기~μ² κΈ° μ‹œλŒ€, μ‚Όκ΅­μ˜ 성립
Section κ°•μ˜λ₯Ό κ΅¬μ„±ν•˜λŠ” μ†Œμ£Όμ œ ꡬ석기와 신석기
Subsection ꡬ체적인 ν•™μŠ΅ 파트 ꡬ석기 μ‹œλŒ€
Topic ν•™μŠ΅ν•  핡심 주제 도ꡬ, μƒν™œ, μ‚¬νšŒ
Keyword 검색 및 ν•™μŠ΅μ˜ 핡심 μ–΄νœ˜ [뗀석기, 주먹도끼]
Content μ‹€μ œ ν•™μŠ΅ 데이터 (JSON Block) ν…μŠ€νŠΈ, 이미지, ν‘œ λ“±

πŸ›  기술 μŠ€νƒ

Backend

  • Framework: Spring Boot 3.5.6 (Java 17)
  • Database: MySQL 8.x (Prod), H2 (Dev)
  • ORM: Spring Data JPA
  • Migration: Flyway (DB μŠ€ν‚€λ§ˆ 버전 관리)
  • Cloud: AWS Secrets Manager (ν™˜κ²½ λ³€μˆ˜ λ³΄μ•ˆ 관리)
  • Build: Gradle 8.14.3

Frontend (Admin/Web)

  • Core: HTML5, CSS3, Vanilla JavaScript (ES6+)
  • Styling: Custom CSS (Responsive), CSS Grid/Flexbox
  • Communication: Fetch API (RESTful)

πŸš€ μ‹œμž‘ν•˜κΈ° (Getting Started)

사전 μš”κ΅¬μ‚¬ν•­

  • JDK 17 이상
  • MySQL 8.0 이상 (Prod ν”„λ‘œν•„ μ‚¬μš© μ‹œ)

1. ν”„λ‘œμ νŠΈ 클둠

git clone https://github.com/devKobe24/KoreaHistory.git
cd KoreaHistory

2. μ„€μ • 파일 (Local 개발)

둜컬 개발 ν™˜κ²½(dev ν”„λ‘œν•„)은 H2 인메λͺ¨λ¦¬ DBλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ 별도 μ„€μ • 없이 λ°”λ‘œ μ‹€ν–‰ κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • Admin 계정 μžλ™ 생성: admin / admin123

3. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

# Mac/Linux
./gradlew bootRun

# Windows
gradlew.bat bootRun

4. 접속 μ£Όμ†Œ


πŸ”Œ API λͺ…μ„Έ (Endpoints)

μ£Όμš” REST API μ—”λ“œν¬μΈνŠΈμž…λ‹ˆλ‹€.

πŸ“š Hierarchy Search

Method Endpoint Description
GET /api/v1/chapters/search/all 전체 계측 ꡬ쑰 쑰회
GET /api/v1/search/lessons?title={title} κ°•μ˜ 제λͺ© 검색
GET /api/v1/search/keywords?keyword={word} ν‚€μ›Œλ“œ 검색
GET /api/v1/search/contents?detail={text} λ‚΄μš© λ³Έλ¬Έ 검색

πŸ“ Management (Admin)

Method Endpoint Description
POST /api/v1/create/chapter λŒ€λΆ„λ₯˜ 생성 (ν•˜μœ„ 계측 포함 κ°€λŠ₯)
POST /api/v1/create/content/{keywordId} νŠΉμ • ν‚€μ›Œλ“œ ν•˜μœ„μ— 컨텐츠 생성
PATCH /api/v1/content/{id} 컨텐츠 μˆ˜μ • (JSON Block μ—…λ°μ΄νŠΈ)
DELETE /api/v1/chapters/{id} 챕터 및 ν•˜μœ„ 데이터 전체 μ‚­μ œ

πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰

Java νŒ¨ν‚€μ§€ ꡬ쑰

src/main/java/com/kobe/koreahistory
β”œβ”€β”€ config          # Flyway, WebMvc(CORS) μ„€μ •
β”œβ”€β”€ controller      # REST API 및 View Controller
β”œβ”€β”€ domain/entity   # JPA Entity (7-Layer + Admin)
β”œβ”€β”€ dto             # Request/Response DTO
β”œβ”€β”€ repository      # Spring Data JPA Repositories
β”œβ”€β”€ service         # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 (Transaction 관리)
└── util            # ContentBlockUtil (JSON 처리), JwtUtil

λ¦¬μ†ŒμŠ€ ꡬ쑰

src/main/resources
β”œβ”€β”€ application.yml         # 곡톡 μ„€μ •
β”œβ”€β”€ application-dev.yml     # 개발 ν”„λ‘œν•„ (H2)
β”œβ”€β”€ db/migration/mysql      # Flyway SQL 슀크립트
└── static                  # 정적 λ¦¬μ†ŒμŠ€
    β”œβ”€β”€ admin               # κ΄€λ¦¬μž νŽ˜μ΄μ§€ (HTML/CSS/JS)
    └── web                 # μ‚¬μš©μž νŽ˜μ΄μ§€ (HTML/CSS/JS)

πŸ“œ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT Licenseλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

Copyright (c) 2025 Minseong Kang


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published