유레카엔터프라이즈
사업철학업무방식AI 워크플로우기술 스펙포트폴리오
유레카엔터프라이즈 주식회사

기술과 책임감으로 신뢰를 쌓아가는 소프트웨어 개발 파트너

대표
한장현
사업자등록번호
888-86-01529

Navigation

Home사업철학업무방식AI 워크플로우기술 스펙포트폴리오

Contact

andy@ureca.im02-6736-0701

#705, Pine Square Bldg. A,
22 Magokjungang 4-ro,
Gangseo-gu, Seoul, Korea

View on Map

© 2026 유레카엔터프라이즈. All rights reserved.

Building with purpose

포트폴리오 목록
와큰 에듀 (WAACN EDU)
모바일 앱
2025.06 — 진행중

와큰 에듀 (WAACN EDU)와큰 에듀 (WAACN EDU)

예비 예술인이 학원이나 학교를 찾는 플랫폼

AWSFlutterNest.jsGitHub Actions

고객사의 요청으로 링크는 제공되지 않습니다

프로젝트 개요

와큰 에듀(WAACN EDU)는 예술 분야를 꿈꾸는 예비 예술인들이 자신에게 맞는 학원과 교육기관을 쉽게 찾을 수 있도록 돕는 학원 정보 플랫폼입니다.

예비 예술인들은 자신의 전공 분야에 맞는 학원을 검색하고, 학원의 상세 정보(강사진, 시설, 커리큘럼 등)를 확인할 수 있습니다. 학원 담당자들은 자신의 학원 정보를 등록하고 관리하며, 유료 구독을 통해 더 많은 정보를 제공하고 노출을 높일 수 있습니다.

NestJS 기반의 Monorepo 아키텍처로 구축된 백엔드 시스템으로, 학원 관리, 결제, 알림톡 등의 핵심 기능을 제공합니다.


서비스 흐름도


주요 기능

1. 학원 등록 및 인증 시스템

학원 담당자는 사업자등록증 등의 인증서를 제출하여 학원을 등록합니다. 학원 유형별로 차별화된 정보를 수집하며, 주소와 연락처 등 필수 정보와 강사진 및 시설 등 선택 정보로 구분하여 관리합니다.

2. 정기 구독 및 자동 결제

토스페이먼츠 빌링키를 기반으로 매월 자동 결제를 처리합니다. 결제 성공 또는 실패 시 알림톡과 이메일이 자동으로 발송되며, 결제 실패 시 구독이 중단되고 재구독을 유도하는 플로우가 실행됩니다.

3. 카테고리 기반 검색

예술 분야별로 음악, 미술, 연기, 무용 등의 계층형 카테고리를 제공합니다. 학원과 카테고리는 다대다 관계로 설계되어 복수 전공을 지원하며, 카테고리별 필터링과 검색 기능을 통해 사용자가 원하는 학원을 빠르게 찾을 수 있습니다.

4. 학원 정보 관리

학원 담당자는 자신의 학원 정보를 실시간으로 수정하고 관리할 수 있습니다. 강사진 프로필, 시설 사진, Instagram 및 YouTube 등의 SNS 링크를 등록할 수 있으며, S3 Presigned URL을 통해 안전하게 이미지를 업로드합니다.

5. 알림톡 및 이메일 자동화

네이버 클라우드 플랫폼 SENS 알림톡과 연동하여 결제 성공, 결제 실패, 학원 승인 등 10가지 이상의 템플릿으로 자동 메시지를 발송합니다. AWS SQS를 통해 대량 메시지 전송을 처리하며, 알림톡 실패 시 SMS 또는 LMS로 자동 전환됩니다.

6. 관리자 기능

관리자는 학원 정보를 검토하고 수정을 요청할 수 있습니다. 부적절한 학원을 강제로 숨김 처리하거나, 결제 내역을 조회하고 일괄 처리 작업을 스케줄링할 수 있습니다.


플랫폼 구성

시스템 계층

계층기술 스택설명
API LayerNestJS, ExpressRESTful API, JWT 인증, Swagger 문서화
Domain LayerTypeORM, PostgreSQL엔티티, 리포지토리, 비즈니스 로직
Application LayerEvent Emitter, Batch알림톡/이메일 발송, 스케줄링
InfrastructureAWS SDK, Axios, Cheerio외부 서비스 연동, 메타데이터 크롤링

기술적 선택과 이유

NestJS Monorepo 아키텍처

복잡한 도메인 로직과 다양한 외부 연동을 효율적으로 관리하기 위해 NestJS 기반 Monorepo를 선택했습니다. apps/academy-app은 학원 관리자용 API 서버를 제공하고, apps/core는 공통 도메인 모델, 알림톡 및 이메일 서비스, 결제 로직 등을 담당합니다. 이 구조를 통해 비즈니스 로직을 재사용하면서도 각 앱의 독립적인 배포와 확장이 가능합니다.

TypeORM + PostgreSQL

학원과 카테고리, 강사진, 시설 등 복잡한 관계형 데이터 구조를 효과적으로 다루기 위해 TypeORM을 사용했습니다. Eager loading과 Cascade 옵션을 활용하여 연관 데이터를 효율적으로 조회하고, Value Object 패턴으로 복잡한 도메인 개념을 표현했습니다.

토스페이먼츠 빌링키 자동 결제

학원 구독 서비스는 정기적인 자동 결제가 필수입니다. 토스페이먼츠의 빌링키 방식을 사용하여 최초 1회만 카드 정보를 등록하면 매월 자동 청구되도록 구현했습니다. 빌링키는 학원 엔티티에 Value Object로 안전하게 저장되며, 결제 성공 또는 실패에 따라 구독 상태가 자동으로 갱신됩니다. 결제 실패 시 즉시 알림톡을 발송하고 재구독을 유도합니다.

이벤트 기반 알림톡/이메일 아키텍처

비즈니스 로직과 알림 발송을 분리하기 위해 NestJS Event Emitter를 활용했습니다. 결제, 학원 승인, 정보 수정 등의 비즈니스 이벤트에 자동으로 대응하며, 알림톡 실패 시 SMS로 전환되는 안정성을 제공합니다. AWS SQS를 통해 대량 메시지 전송을 처리합니다.

BFF(Backend For Frontend) 패턴

학원 목록 페이지에서는 학원 정보와 현재 구독 상태를 함께 표시해야 합니다. 여러 번의 API 호출을 줄이기 위해 BFF 엔드포인트를 제공하여 학원과 빌링 정보를 한 번에 반환합니다.


프로젝트 특징

도메인 주도 설계(DDD) 적용

학원, 계정, 빌링, 카테고리 등 각 도메인을 명확히 분리하고, 엔티티 내부에 비즈니스 로직을 캡슐화했습니다. 컨트롤러는 얇게 유지하고, 도메인 로직은 엔티티가 책임지도록 설계하여 유지보수성과 테스트 용이성을 높였습니다.

타입 안정성과 Validation

NestJS의 class-validator와 class-transformer를 활용하여 모든 입력값을 엄격하게 검증합니다. 런타임 에러를 사전에 방지하고, Swagger 문서가 자동으로 생성되어 API 명세를 쉽게 공유할 수 있습니다.

알림톡 템플릿 관리 시스템

10가지 이상의 알림톡 템플릿을 체계적으로 관리하기 위해 템플릿별로 디렉토리를 분리하고, 타입 안전한 인터페이스를 정의했습니다. 각 템플릿은 고유한 타입을 가지며, 컴파일 타임에 필수 데이터를 강제하여 런타임 오류를 방지합니다.

프리미엄 구독 기반 비즈니스 모델

무료 사용자는 기본 정보만 등록할 수 있고, 유료 구독자는 강사진, 시설, 외부 링크 등 풍부한 정보를 제공할 수 있습니다. 이는 학원의 노출도를 높이고, 플랫폼의 수익 모델을 구축합니다.

확장 가능한 아키텍처

Monorepo 구조로 새로운 앱을 쉽게 추가할 수 있으며, 공통 도메인 로직은 core 패키지에서 재사용합니다. 이벤트 기반 설계로 새로운 알림 채널도 쉽게 추가할 수 있습니다.