예약 관리 시스템 - Spring + Vue

예약 관리 시스템 (Spring Boot 3 + Vue 3) - 프로젝트 개요

그랜파 개발자 2025. 5. 25. 14:29

🗓️ 예약 관리 시스템 (Meeting Room / 미용실 / 병원 등)

  • 주요 기능: 예약 등록/조회, 시간대 중복 방지, 관리자 승인
  • 학습 포인트:
    • Spring: REST API 설계, JPA + DB 연동, 예약 중복 체크 로직
    • Vue: 캘린더 컴포넌트, 시간 선택 UI, 예약 목록 관리
    • 인증: 사용자/관리자 권한 분리 (JWT or Spring Security)

Spring + Vue 기반의 "예약 관리 시스템"은 실제 스타트업, 병원, 미용실, 학원 등에서 사용하는 실전성이 높은 프로젝트입니다.
아래는 이 프로젝트의 전체 구성, 기능 목록, 기술 스택, 그리고 추후 확장 포인트입니다.


✅ 프로젝트 개요: 예약 관리 시스템

🎯 목표

사용자는 시간대를 선택해 예약하고, 관리자는 이를 확인 및 승인/거절할 수 있는 시스템 구축


📦 주요 기능

[사용자 기능]

  • 회원가입 / 로그인 (JWT 기반)
  • 예약 가능한 날짜 및 시간 확인
  • 예약 등록 / 수정 / 취소
  • 예약 내역 조회

[관리자 기능]

  • 전체 예약 목록 확인 (필터링: 날짜/상태 등)
  • 예약 승인 / 거절 처리
  • 예약 통계 확인 (선택적)

🛠️ 기술 스택

🔹 백엔드 (Spring Boot)

  • Spring Boot 3.x
  • Spring Security + JWT 인증
  • Spring Data JPA + Hibernate
  • MySQL
  • RESTful API
  • Lombok, MapStruct(optional)

🔸 프론트엔드 (Vue 3)

  • Vue 3 + Composition API
  • Vue Router / Pinia
  • Vuetify 또는 Tailwind CSS
  • Axios (API 통신)
  • FullCalendar / vue-datepicker 등 UI 라이브러리

🗂️ ERD 예시

User
- id (PK)
- email
- password
- name
- role (USER | ADMIN)
- created_at

Reservation
- id (PK)
- user_id (FK)
- date (예약일 yyyy-MM-dd)
- time_slot (예: "10:00~11:00")
- status (PENDING | APPROVED | REJECTED | CANCELLED)
- created_at
  • ERD(Entity-Relationship Diagram)는 데이터베이스 설계에서 엔티티(데이터 객체) 간의 관계를 도식화한 다이어그램입니다. 쉽게 말해, 어떤 데이터 테이블이 존재하고, 그 테이블들 사이에 어떤 관계가 있는지를 시각적으로 보여주는 설계도입니다.

🔁 API 예시

메서드 URI 설명
POST /auth/signup 회원가입
POST /auth/login 로그인 (JWT 발급)
GET /reservations/available?date=2025-05-25 시간대 조회
POST /reservations 예약 등록
GET /reservations 내 예약 조회
PUT /reservations/{id}/cancel 예약 취소
PUT /admin/reservations/{id}/approve 관리자 승인
PUT /admin/reservations/{id}/reject 관리자 거절

📆 UI 구성 예시

  • 메인 페이지: 예약 버튼, 나의 예약 보기
  • 캘린더/시간 선택 UI: 날짜 클릭 → 예약 가능한 시간 리스트 출력
  • 관리자 페이지: 전체 예약 목록, 승인/거절 버튼

🚀 확장 아이디어

  • 예약 중복 방지 (DB Lock 또는 Validation)
  • 이메일 알림 (예약 확정 시)
  • 관리자 통계 대시보드 (예약 수/취소율)
  • 카카오 로그인 / 구글 OAuth
  • 모바일 대응 (PWA)

💡 개발 순서 추천 (WBS)

  1. 🔐 사용자 인증 (Spring Security + JWT)
  2. 📆 예약 기능 (백엔드 API → 프론트 예약 폼 연결)
  3. ⚙️ 관리자 승인/거절 기능
  4. 🖥️ 프론트엔드 UI 연결 (캘린더, 시간 선택 등)
  5. 📊 마이페이지 및 관리 페이지
  6. 🔔 알림 / 예외 처리 / UX 개선