콘텐츠로 이동

6. 커스텀 모듈

dcamp 웹사이트는 Drupal의 기본 기능 외에 dcamp의 특수한 요구사항을 충족하기 위해 자체 개발 모듈들을 포함하고 있습니다. 이 모듈들은 기존 오픈소스 모듈로는 구현하기 어려운 기능을 제공합니다.

┌─────────────────────────────────────────────────────────────────┐
│ 커스텀 모듈 구조 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [핵심 모듈] │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ admin │ │ dcamp_admin │ │ dcamp_event │ │
│ │ (기반 기능) │ │ (관리 UI) │ │ (프로그램) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ [데이터 모듈] │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ dcamp_ │ │ dcamp_email │ │
│ │ portfolio │ │ (이메일) │ │
│ │(포트폴리오) │ │ │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ [인증/보조 모듈] │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ admin_user │ │ oauth_relay │ │download_log │ │
│ │ (회원인증) │ │(소셜로그인) │ │(다운로드) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘

시스템 전반에 사용되는 공통 기능을 제공합니다.

기능설명
JSON:API 확장API 응답 형식 커스터마이징, 추가 엔드포인트
파일 저장소 연동AWS S3, Cloudflare R2 연동
공통 서비스여러 모듈에서 사용하는 유틸리티 함수

하위 모듈:

  • admin_user: 회원 인증, JWT 토큰 관리, 이메일 인증
  • admin_jsonapi_webform_submission: 신청서 제출 API 지원

관리자 인터페이스와 사이트 설정을 담당합니다.

기능설명
메인 대시보드관리자 메인 화면 (Svelte 기반 SPA)
사이트 설정메인 페이지, 서브 페이지별 설정 관리
문의 관리고객 문의 내역 관리

왜 별도 UI를 만들었나?

Drupal의 기본 관리 화면은 범용적이지만, dcamp의 특수한 운영 흐름에 맞지 않는 부분이 있었습니다. 자주 사용하는 기능에 빠르게 접근하고, 직관적인 화면을 제공하기 위해 일부 관리 화면을 Svelte로 자체 개발했습니다.

프로그램 운영과 심사 시스템의 핵심 모듈입니다.

기능설명
프로그램 유형 관리참가 모집형, 심사형 프로그램 지원
신청 관리신청서와 프로그램 연결, 신청 현황
심사 시스템심사위원 배정, 점수 입력, 결과 집계
메일 발송합격/불합격 안내 메일 발송

심사 시스템 흐름:

[프로그램 등록]
[신청서 양식 연결] ───► Webform과 연동
[신청 접수 기간]
[심사위원 배정] ───► 관리자가 심사위원 선택
[심사 진행] ───► 심사위원이 점수 입력
[결과 집계] ───► 자동 합산, 순위 정렬
[결과 발표] ───► 메일 발송

스타트업, 파트너사 정보를 관리하는 모듈입니다.

기능설명
스타트업 관리회사 정보, 멤버, 투자 정보 관리
파트너사 관리협력사, 투자사 정보 관리
캠퍼스 관리dcamp 공간 정보 관리
데이터 내보내기스타트업 목록 JSON/Excel 추출

자체 엔티티를 만든 이유:

스타트업 정보는 일반 콘텐츠(글)와 다른 특수한 구조를 가집니다. 멤버 정보, 투자 이력, 연관 프로그램 등 복잡한 관계를 효율적으로 관리하기 위해 별도의 엔티티로 설계했습니다.


회원 가입, 로그인, 인증 관련 기능을 담당합니다.

기능설명
회원 가입이메일 인증 기반 가입
JWT 인증토큰 기반 API 인증
비밀번호 관리재설정, 변경 기능
계정 분리일반회원/관리자 완전 분리 처리

카카오, 네이버, 구글 소셜 로그인을 처리합니다.

기능설명
카카오 로그인카카오계정 연동
네이버 로그인네이버 아이디 연동
구글 로그인Google 계정 연동
계정 연결기존 회원과 소셜 계정 연결

동작 방식:

[사용자] [dcamp.kr] [관리 시스템] [소셜서비스]
│ │ │ │
│ 카카오 로그인 │ │ │
│ ───────────────► │ │ │
│ │ │ │
│ │ 카카오 인증 요청 │ │
│ │ ────────────────────────────────────►
│ │ │ │
│ 카카오 인증 화면 │ │ │
│ ◄────────────────────────────────────────────────────── │
│ │ │ │
│ 인증 완료 │ │ │
│ ───────────────────────────────────────────────────────►
│ │ │ │
│ │ 인증 정보 전달 │ │
│ │ ◄──────────────────────────────────── │
│ │ │ │
│ │ 토큰 요청 │ │
│ │ ───────────────► │ │
│ │ │ 회원 확인/생성 │
│ │ 토큰 반환 │ │
│ │ ◄─────────────── │ │
│ 로그인 완료 │ │ │
│ ◄─────────────── │ │ │

시스템 이메일 발송을 담당합니다.

기능설명
인증 메일회원가입 인증, 비밀번호 재설정
알림 메일프로그램 신청 확인, 결과 안내
템플릿 관리메일 양식 관리

파일 다운로드 기록을 저장합니다.

기능설명
다운로드 기록누가, 언제, 어떤 파일을 다운로드했는지 기록
통계다운로드 횟수 집계

┌─────────────┐
│ admin │ ◄─── 모든 모듈의 기반
└──────┬──────┘
┌────────────────┼────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ admin_user │ │ dcamp_admin │ │dcamp_email │
└─────────────┘ └─────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ oauth_relay │ │ dcamp_event │ ◄─── dcamp_email 사용
└─────────────┘ └──────┬──────┘
┌─────────────┐
│ dcamp_ │
│ portfolio │
└─────────────┘

← 이전: 5. API 명세 | 다음: 7. 보안 설계 →