CNU Airline은 실제 공항 터미널 및 예약 시스템에서 발생할 수 있는 복잡한 트랜잭션을 처리하기 위해 고안된 데이터베이스 연동 풀스택 프로젝트입니다. 단순한 웹 프로젝트가 아닌, 데이터베이스 단에서 엄격한 **무결성(Integrity)**을 보장하도록 설계되었습니다. 오라클(Oracle) 제약조건과 트리거를 적극 활용하여, 티켓 예약 및 변경이 발생해도 테이블 간의 정합성이 완벽하게 유지됩니다. 또한 이메일 발송 API를 연동하여 실제 서비스에 가까운 사용자 경험을 구현했습니다.
- Oracle Database (OCI): 클라우드 환경에서 운영
- SQL / PLSQL: 복잡한 제약조건(Constraints) 및 업무 자동화(Triggers) 구현
- Next.js (App Router): SSR 및 API Routes 활용
- React 19 & TypeScript: 타입 안정성을 갖춘 UI 개발
- Tailwind CSS v4: 최신 Tailwind v4를 적극 활용하여, 실제 대형 항공사 홈페이지와 동일한 수준의 프리미엄 UI(Glassmorphism, 반응형 디자인)를 직접 구현
- 오라클 연동(
oracledb커넥터): 서버사이드 DB 통신 설계 - Lucide React: 세련된 벡터 아이콘 라이브러리 사용
본 프로젝트는 어플리케이션(서버) 로직에 의존하는 것을 넘어, 데이터베이스 자체 기능을 십분 활용해 데이터의 신뢰성을 확보했습니다.
- 강력한 참조 무결성 보장 (
ON DELETE CASCADE등)- 예시: 회원 탈퇴 또는 운항 항공편 스케줄이 취소(삭제)될 경우, 해당 항공편을 예약한 승객의 결제 및 예약 로그가 정합성에 맞게 자동 처리됩니다.
- 비즈니스 로직을 처리하는 이벤트 트리거 (Trigger)
- 예시: 사용자가 새로운 예약을 등록 시,
FLIGHT테이블의 현재 '남은 좌석 수'를 자동으로 차감하는 실시간 동기화 트리거.
- 예시: 사용자가 새로운 예약을 등록 시,
- 스키마 및 더미 데이터: 모든 설계 내역은 리포지토리 루트의
/database/create_and_insert.sql에 보관되어 있습니다.
- 🛫 항공편 검색 및 조회: 날짜, 출발/도착지 정보를 기반으로 SQL 쿼리 최적화로 실시간 제공.
- 🛡️ 사용자 관리 및 로그인/예약: C0, C001 과 같은 ID 형태 관리. 일반 유저 예약/취소 조회, 관리자(admin) 페이지 권한 분리.
- 📧 E-Ticket 메일 자동 전송: 외부 이메일 API와 연동해 실제 공항에서의 항공권 결제 완료 메일과 동일한 발송 시뮬레이션 지원.
- 📊 관리자 대시보드: 현재 항공편들의 운항 현황과 좌석 통계 제공.
프로젝트를 다운로드하고 구동해보려면 다음 단계를 따라 주세요!
이 프로젝트는 Node.js 환경에서 동작합니다. 아래 명령어로 의존성을 설치합니다.
npm install보안 파일은 깃허브에 올라가지 않도록 설정되어 있습니다. 루트 폴더에 .env.local 파일을 생성하고 본인의 DB 또는 테스트용 API 키를 입력하세요.
# Oracle DB 연결 정보
DB_USER=your_db_username
DB_PASSWORD=your_db_password
DB_CONNECTION_STRING=your_oci_connection_string
# 이메일 / Azure 연동 API 키
# EMAIL_API_KEY=your_api_key...npm run dev서버가 켜지면 브라우저에서 http://localhost:3000 으로 접속하여 사용할 수 있습니다!
처음으로 기획부터 데이터베이스 설계, 웹 구현까지 완성도 있게 만든 뜻깊은 프로젝트입니다. 관심 있게 봐주셔서 감사합니다!