[Phase 1] PR 1-1: 서브도메인 라우팅 설정
ID: 08bca958-c7e0-454e-817e-35db926151af
## 개요
blog.9way.co.kr / edu.9way.co.kr 서브도메인 라우팅 인프라 구축
## 생성할 파일
- `app/controllers/blog/base_controller.rb`
- `app/controllers/study/base_controller.rb`
- `app/views/layouts/blog.html.erb`
- `app/views/layouts/study.html.erb`
- `test/controllers/blog/base_controller_test.rb`
- `test/controllers/study/base_controller_test.rb`
## 수정할 파일
- `config/routes.rb` — 서브도메인 constraints 추가
- `config/environments/development.rb` — hosts 허용
- `config/environments/production.rb` — hosts 명시
## 완료 기준
- blog.localhost:3000 → Blog::BaseController 라우팅
- edu.localhost:3000 → Study::BaseController 라우팅
- 기존 라우트 영향 없음
- 인증 세션 공유 동작
## 의존성
없음 (첫 번째 PR)
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
서브 티켓 (1/1 완료)
활동 로그
-
팀팀리드 리뷰 완료 - 승인 (서브도메인 라우팅 설정)
2026년 03월 11일 12:19:54
상세 보기
## 리뷰 결과
- 상태: 승인
- 테스트: 6/6 통과, regression 없음## 코드 품질
- BaseController 상속 구조 적절 (ApplicationController → BaseController → PostsController)
- default_url_options 오버라이드로 locale 파라미터 깔끔하게 제거
- skip_before_action :set_sidebar_workspaces 적절 (비인증 페이지)
- strict locals 사용 (_navbar_subdomain)## 보안
- csrf_meta_tags, csp_meta_tag 포함
- allow_unauthenticated_access 적절 (공개 페이지)
- html_safe/raw 사용 없음## UX/UI
- shared/footer 재사용 (법적 정보 포함)
- shared/_navbar_subdomain 추출로 DRY
- yield :head 추가 (SEO 확장성)
- 디자인 토큰 올바르게 사용 -
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 11일 12:19:47
-
팀팀리드 팀 작업 완료 - 서브도메인 라우팅 설정
2026년 03월 11일 12:16:17
상세 보기
## 수정된 기능
- blog./edu. 서브도메인 라우팅 constraints
- Blog::BaseController, Study::BaseController
- blog.html.erb, study.html.erb 레이아웃
- shared/_navbar_subdomain.html.erb (공통 navbar)
- 임시 컨트롤러/뷰 (Coming Soon)## UX/UI 검토 결과
- P1 수정 완료: footer → shared/footer, yield :head 추가
- P2 수정 완료: navbar partial 추출, skip_before_action 추가
- P3 후속 처리: 배경색 토큰 통일, max-w 통일, 메타태그 보완## 테스트/보안 검증 결과
- 신규 6개 테스트 통과
- 기존 테스트 regression 없음 (기존 8개 실패는 무관)
- CSRF/CSP/XSS 보안 처리 적절## 생성/수정 파일
- config/routes.rb (서브도메인 constraints)
- config/environments/development.rb (hosts 추가)
- app/controllers/blog/base_controller.rb
- app/controllers/study/base_controller.rb
- app/controllers/blog/posts_controller.rb
- app/controllers/study/courses_controller.rb
- app/views/layouts/blog.html.erb
- app/views/layouts/study.html.erb
- app/views/shared/_navbar_subdomain.html.erb
- app/views/blog/posts/index.html.erb
- app/views/study/courses/index.html.erb
- test/controllers/blog/posts_controller_test.rb
- test/controllers/study/courses_controller_test.rb -
팀팀리드 상태 변경: 진행 중 → 리뷰
2026년 03월 11일 12:16:09
-
팀팀리드 위임: developer-1에게 '서브도메인 라우팅 + 베이스 컨트롤러 + 레이아웃 구현' 작업 배정
2026년 03월 11일 12:10:15
-
팀팀리드 작업 시작 - 서브도메인 라우팅 설정
2026년 03월 11일 12:09:57
상세 보기
## 작업 계획
- 목표: blog./edu. 서브도메인 라우팅 인프라 구축
- 접근: developer 1명으로 라우팅+컨트롤러+레이아웃+테스트 구현## 현재 상태
- 보드: todo 17 / in_progress 1 / done 104
- 이 티켓이 모든 후속 Phase의 기반 -
팀팀리드 티켓 클레임 완료
2026년 03월 11일 12:09:50
-
팀팀리드 블로그 + 교육 서브도메인 기능 계획 수립 완료 — 17개 백로그 티켓 생성
2026년 03월 11일 11:40:51
상세 보기
## 기능 개요
- blog.9way.co.kr: 블로그 (포스트, 카테고리, 댓글, 좋아요, SEO)
- edu.9way.co.kr: 교육 LMS (코스, 레슨, 수강, 진도추적) + 워크숍 (오프라인)## 분석 결과
- 기존 앱에 Blog/Education 관련 코드 없음 — 완전 신규
- ActiveStorage 설정됨(미사용), Grover(PDF) 사용 가능
- 기존 결제 서비스(Toss Payments) 재사용 가능## 생성된 티켓 (17개, 7 Phase)
- Phase 1: 서브도메인 라우팅 (1개, HIGH)
- Phase 2: 블로그 코어 (3개, HIGH)
- Phase 3: 블로그 퍼블릭 (3개, HIGH)
- Phase 4: 교육 코스 (2개, MEDIUM)
- Phase 5: 교육 수강 (3개, MEDIUM)
- Phase 6: 워크숍 (2개, MEDIUM)
- Phase 7: 결제+고급 (3개, LOW)## 기술적 결정
- 리치 텍스트: text 컬럼 + TipTap (ActionText 대신)
- 이미지: ActiveStorage
- PDF: Grover
- 네임스페이스: Blog::, Study::, Expert::## 계획서
- docs/plans/blog-edu-subdomain.md