공연 티켓 기록 및 리뷰 관리 시스템 - Full Stack 프로젝트
.env 파일 생성:
DB_URL=jdbc:postgresql://localhost:5432/recorddb
DB_USER=recorduser
DB_PASSWORD=your_password
JWT_SECRET=$(openssl rand -base64 32)- Spring Boot 애플리케이션은 JDBC URL 형식(
jdbc:postgresql://)을 사용합니다 - 샘플 데이터 스크립트(
generate-sample-data.sh)는 JDBC URL과 일반 URL(postgresql://) 형식을 모두 지원합니다 - 두 형식 모두 사용 가능:
jdbc:postgresql://localhost:5432/recorddb또는postgresql://localhost:5432/recorddb
기능을 위한 환경 변수 (선택):
OPENAI_API_KEY: STT, DALLE 이미지 생성 기능RecAWS_ACCESS_KEY_ID,RecAWS_SECRET_ACCESS_KEY: S3 파일 저장GOOGLE_APPLICATION_CREDENTIALS: OCR 기능MAIL_USERNAME,MAIL_PASSWORD: 이메일 인증
psql -U postgres
CREATE DATABASE recorddb;
CREATE USER recorduser WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE recorddb TO recorduser;# Backend
make be-install
# Frontend
cd Record-FE && npm install
cd Record-FE/ios && bundle exec pod install # iOS만 (macOS)먼저 디비 테이블을 꼭 생성하세요.
Record-BE/Record-BE/schema.sql 파일을 사용하여 데이터베이스 스키마를 생성할 수 있습니다:
psql -U recorduser -d recorddb -f "Record-BE/Record-BE/schema.sql"테이블 생성이 완료된 후, 아래 명령어로 개발 및 테스트를 위한 샘플 데이터를 생성할 수 있습니다.
chmod +x generate-sample-data.sh
./generate-sample-data.sh생성되는 샘플 데이터:
- 사용자 3명 (admin@example.com, user1@example.com, user2@example.com)
- 비밀번호:
password123(모든 사용자 동일) - 뮤지컬 정보 3개 (레미제라블, 시카고, 위키드)
- 티켓 데이터 3개
- 리뷰 데이터 2개
- 친구 관계 1개
make be-buildFrontend는 개발 환경 기준으로 npm run ios 실행 시
필요한 빌드 과정이 자동으로 수행되므로, 별도의 빌드 명령을 사용하지 않습니다.
# Backend
make be-run
# Frontend
# 1. 개발 서버 실행 (Metro)
cd Record-FE && npm start
# 2. 앱 실행 (빌드 포함)
cd Record-FE && npm run ios # Backend
make be-test
# Frontend
make fe-test- 데이터베이스: PostgreSQL 12+
- 주요 테이블: users, tickets, reviews, friendships, musical_db
- 외부 서비스: AWS S3, Google Cloud Vision API, OpenAI API
자세한 의존성 목록은 다음 파일을 확인하세요:
- Backend:
Record-BE/Record-BE/build.gradle - Frontend:
Record-FE/package.json
- Spring Boot 3.2.5 - Apache License 2.0
- PostgreSQL JDBC Driver 42.6.0 - BSD License
- JJWT 0.11.5 - Apache License 2.0
- AWS SDK 2.25.11 - Apache License 2.0
- Google Cloud Vision 3.36.0 - Apache License 2.0
- React Native 0.81.0 - MIT License
- React 19.1.0 - MIT License
- React Navigation 7.x - MIT License
- Jotai 2.15.0 - MIT License
- Axios 1.13.2 - MIT License
- TypeScript 5.8.3 - Apache License 2.0
Record-BE/
├── Record-BE/
│ ├── src/
│ │ ├── main/java/com/example/record/
│ │ │ ├── auth/ # 인증 (JWT, 이메일, 비밀번호)
│ │ │ ├── user/ # 사용자 관리
│ │ │ ├── review/ # 리뷰 관리
│ │ │ ├── ocr/ # OCR 기능
│ │ │ ├── STTorText/ # STT 기능
│ │ │ ├── AWS/ # S3 통합
│ │ │ ├── application/ # 애플리케이션 설정
│ │ │ ├── band/ # 밴드 정보
│ │ │ ├── common/ # 공통 응답
│ │ │ ├── config/ # 설정 (Swagger, WebConfig 등)
│ │ │ ├── musical/ # 뮤지컬 정보
│ │ │ ├── promptcontrol_w03/ # 프롬프트 제어 및 이미지 생성
│ │ │ └── [루트 파일들] # ApiKey, ApiKeyInterceptor 등
│ │ └── resources/
│ │ ├── application.yml
│ │ └── static/
│ ├── build.gradle
│ └── settings.gradle
├── generate-sample-data.sh
├── schema.sql
└── Makefile
- Backend: Spring Boot 3.2.5 (Java 21), PostgreSQL, JWT 인증
- Frontend: React Native 0.81.0 (TypeScript)
- 주요 기능: 티켓 관리, OCR, STT, AI 이미지 생성, 리뷰 작성