Skip to content

beakjinu/AIBE2_FinalProject_Snow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AIBE2_FinalProject_Team1

icon

팀 소개

구분
👑 한정민

유혜빈

양주희

백진우

류영선
역할 📝 기획 · 💻 개발 📝 기획 · 💻 개발 📝 기획 · 💻 개발 📝 기획 · 💻 개발 📝 기획 · ✅ QA
주요 기여
  • 와이어프레임 제작
  • 요구사항 정의서 작성
  • 협업가이드 작성
  • WBS 작성
  • Swagger 설정
  • 마이페이지(공통)
  • 미션 기능
  • ERD 작성
  • GitHub 관리
  • GitHub 브랜치 전략 수립
  • PR/Merger 규칙 수립
  • 메인 페이지
  • 팝업 상세 페이지
  • AI 기반 팝업 추천 기능
  • ERD 작성
  • 시퀀스 다이어그램 작성
  • GitHub Action 워크플로우
  • MCP 서버 운영 가이드
  • 배포 전략 및 서버 구성도
  • 관리자 페이지
  • 사용자 인증 관련
  • 기획서 작성
  • 요구사항 정의서 작성
  • 정보구조도(IA) 작성
  • 와이어프레임 제작
  • 마이페이지(팝업주최자·공간제공자)
  • 공간 대여 페이지
  • 기획서 작성
  • 테스트 및 QA
  • 발표자료 제작
  • 발표
  • 문서 아카이빙




프로젝트 개요

Popin은 흩어져 있는 팝업스토어 정보를 한눈에 모아볼 수 있는 플랫폼입니다.
사용자는 지도를 통해 팝업을 탐색하고, 주최자는 공간을 쉽게 연결하며,
참여자는 미션·리워드로 특별한 경험을 얻을 수 있습니다.




주요 기능

📍 팝업 탐색: 지도·캘린더 기반 팝업 정보 확인, 관심사 기반 추천
📝 상세 정보 제공: 주소, 운영 시간, 혜택, 후기 및 별점 등록
🏠 공간 연결: 위치/날짜 기반 공간 검색, 공간 등록, 주최자와 매칭
🎯 참여형 기능: 미션 수행 및 리워드 제공

👤 마이페이지
   • 공통 사용자: 찜한 팝업, 방문 일정, 후기, 미션 관리
   • 팝업 주최자: 등록 팝업/공간 관리, 방문자·예약자 통계
   • 공간 제공자: 공간 등록, 요청 관리

사용자 페이지

image image

image image

관리자 페이지

image image

공간제공자 / 팝업 호스트 페이지

image image




사용 기술

구분 기술
Backend Spring Boot 2.7.1 · Spring Web (REST API) · Spring Data JPA (Hibernate) · MySQL (운영 DB: AWS RDS) · H2 (테스트 DB)
보안 / 인증 Spring Security · JWT (jjwt)
API 문서화 Springdoc OpenAPI (Swagger UI)
유틸리티 ModelMapper (Entity ↔ DTO 변환) · Lombok (보일러플레이트 코드 제거) · ZXing (QR 코드 생성)
테스트 JUnit5 · Mockito · k6 (부하/성능 테스트)
개발 편의 Spring Boot Devtools (핫 리로드)
Frontend HTML · CSS · JavaScript (REST API 연동)
Infra / Deployment AWS EC2 · Docker · AWS RDS (MySQL) · CloudWatch
외부 API / 서비스 Kakao Pay API · Naver Pay API · Kakao Map API · Google Gemini API
협업 및 도구 GitHub · Jira · Notion · Figma (와이어프레임) · FigJam (IA 설계) · Draw.io (ERD) · Swagger UI (API 테스트) · Slack




시스템 아키텍처

image





실행 환경 설정

프로젝트 실행을 위해 src/main/resources/application.properties 파일에 아래 내용을 추가하세요.
(민감 정보는 실제 값으로 교체해야 합니다.)

spring.application.name=popin

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/popin?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=YOUR_DB_USERNAME
spring.datasource.password=YOUR_DB_PASSWORD

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type.descriptor.sql=trace
spring.jpa.hibernate.ddl-auto=update
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

uploadPath=/your/project/path/uploads

jwt.secret=YOUR_JWT_SECRET
spring.profiles.active=dev
logging.level.com.snow.popin=DEBUG
logging.level.org.springframework.security=DEBUG

server.port=8080
app.host-url=http://localhost:${server.port}

server.error.whitelabel.enabled=false
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
spring.web.resources.cache.period=0

# Gemini AI API 설정
ai.gemini.api.key=YOUR_GEMINI_API_KEY
ai.gemini.api.url=https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent
ai.gemini.timeout=30000

# 결제 연동 (Kakao / Naver Pay)
kakao.pay.admin.key=YOUR_KAKAO_ADMIN_KEY
kakao.pay.cid=TC0ONETIME

naver.pay.client.id=YOUR_NAVER_CLIENT_ID
naver.pay.client.secret=YOUR_NAVER_CLIENT_SECRET

payment.success.url=http://localhost:8080/payment/success
payment.fail.url=http://localhost:8080/payment/fail
payment.cancel.url=http://localhost:8080/payment/cancel

About

AIBE2_Team1_popin

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 46.2%
  • JavaScript 32.8%
  • CSS 12.3%
  • HTML 8.7%