Skip to content

Commit 2b99637

Browse files
authored
Merge pull request #131 from Cloud-Engineering2/docs/add-readme
Update README.md
2 parents 1318f3b + 6df5285 commit 2b99637

File tree

2 files changed

+161
-1
lines changed

2 files changed

+161
-1
lines changed

.github/workflows/deploy.yml

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
- develop
88
paths-ignore:
99
- .github/**
10+
- README.md
1011
workflow_dispatch:
1112

1213
jobs:

README.md

+160-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,160 @@
1-
# cinebox
1+
# cinebox
2+
3+
# 영화 예매 시스템
4+
5+
> **React + Spring Boot + AWS + Kubernetes 기반의 영화 예매 웹 애플리케이션**
6+
> CI/CD 자동화 및 클라우드 인프라 구축을 통해 운영 가능한 시스템 설계 및 구현
7+
8+
---
9+
10+
## 프로젝트 개요
11+
12+
이 프로젝트는 **영화 예매 서비스**를 위한 웹 애플리케이션으로,
13+
사용자(고객)와 관리자(운영자)의 기능을 모두 포함하며,
14+
AWS 기반 클라우드 인프라 위에서 자동화된 배포 환경을 갖추고 있습니다.
15+
16+
### 주요 목표
17+
- 실제 상영 서비스처럼 영화 등록, 상영 시간 설정, 예매/결제 기능 제공
18+
- REST API 기반 프론트/백 분리 구조
19+
- CI/CD 자동화 및 GitOps 배포 실습
20+
21+
---
22+
23+
## 주요 기능
24+
25+
### 사용자 기능
26+
- 영화 목록 조회
27+
- 날짜별 상영 시간 선택
28+
- 좌석 선택 및 예매
29+
- 결제 연동
30+
- 리뷰 작성 및 마이페이지 조회
31+
32+
### 관리자 기능
33+
- 영화 등록/수정
34+
- 상영관 및 상영 정보 설정
35+
- 예매 내역 관리
36+
37+
---
38+
39+
## 인프라 설계
40+
![image](https://github.com/user-attachments/assets/6cddcde4-b900-410e-a724-e2da8e2257e2)
41+
42+
## ERD 설계
43+
![image](https://github.com/user-attachments/assets/39dacdf7-0757-490a-964d-62732a621b1d)
44+
45+
---
46+
47+
## 기술 스택
48+
49+
| 분류 | 기술 |
50+
|------|------|
51+
| Frontend | React, React Router, MUI, Axios, React Calendar, React Toastify |
52+
| Backend | Spring Boot 3.4.2, JDK 17, JPA (ORM), MySQL, Redis, Maven |
53+
| API 연동 | 영화진흥위원회 API (KOBIS), KMDB |
54+
| 인증/보안 | OAuth2.0, JWT (Access/Refresh Token) |
55+
| Infra & DevOps | AWS (EKS, RDS, S3, Route 53, ELB, IAM, VPC), Docker, GitHub Actions, Terraform, ArgoCD, Prometheus, Grafana |
56+
57+
---
58+
59+
## 프로젝트 실행 방법
60+
61+
### 방법 1: 배포된 웹 접속
62+
63+
서비스는 다음 도메인을 통해 확인할 수 있습니다:
64+
65+
[https://cine-box.store](https://cine-box.store)
66+
67+
---
68+
69+
### 방법 2: 로컬에서 직접 실행하기
70+
71+
#### 1. 설정 파일 생성 (필수)
72+
73+
먼저 `src/main/resources/application.properties` 파일을 아래 예시를 참고하여 작성해야 합니다.
74+
→ 민감한 정보(API 키, DB 비밀번호 등)는 실제 값으로 교체해주세요.
75+
→ 해당 파일은 `.gitignore`에 포함되어야 하며, Git에 커밋되지 않도록 주의하세요.
76+
77+
78+
[application.properties 예시](#applicationproperties-예시)
79+
80+
```properties
81+
spring.application.name={ YOUR_APPLICATION_NAME }
82+
83+
# Primary DataSource
84+
spring.datasource.primary.hikari.type=com.zaxxer.hikari.HikariDataSource
85+
spring.datasource.primary.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
86+
spring.datasource.primary.hikari.username={ YOUR_DB_USERNAME }
87+
spring.datasource.primary.hikari.password={ YOUR_DB_PASSWORD }
88+
spring.datasource.primary.hikari.jdbc-url=jdbc:mysql://{YOUR_DB_HOST}:{YOUR_DB_PORT}/{YOUR_DB_NAME}
89+
90+
# Secondary DataSource
91+
spring.datasource.secondary.hikari.type=com.zaxxer.hikari.HikariDataSource
92+
spring.datasource.secondary.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
93+
spring.datasource.secondary.hikari.username={ YOUR_DB_USERNAME }
94+
spring.datasource.secondary.hikari.password={ YOUR_DB_PASSWORD }
95+
spring.datasource.secondary.hikari.jdbc-url=jdbc:mysql://{YOUR_DB_HOST}:{YOUR_DB_PORT}/{YOUR_DB_NAME}
96+
97+
# 공통 Hikari 설정
98+
spring.datasource.hikari.pool-name=Hikari
99+
spring.datasource.hikari.auto-commit=false
100+
101+
# Redis
102+
spring.data.redis.host={ YOUR_REDIS_HOST }
103+
spring.data.redis.port={ YOUR_REDIS_PORT }
104+
105+
# JPA
106+
spring.jpa.generate-ddl=false
107+
spring.jpa.hibernate.ddl-auto=none
108+
spring.jpa.properties.hibernate.format_sql=true
109+
spring.jpa.show-sql=false
110+
111+
# Multipart 설정
112+
spring.servlet.multipart.max-file-size=20MB
113+
spring.servlet.multipart.max-request-size=20MB
114+
115+
# AWS S3 설정
116+
cloud.aws.credentials.access-key={ YOUR_AWS_CREDENTIALS_KEY }
117+
cloud.aws.credentials.secret-key={ YOUR_AWS_SECRET_KEY }
118+
cloud.aws.s3.bucket={ YOUR_S3_BUCKET_NAME }
119+
cloud.aws.region.static={ YOUR_S3_REGION }
120+
cloud.aws.stack.auto=false
121+
122+
# JWT 설정
123+
security.jwt.secretkey=your-secret-key
124+
security.jwt.accessTokenValidityInMilliseconds=3600000
125+
security.jwt.refreshTokenValidityInMilliseconds=604800000
126+
127+
# 외부 API 연동 - 영화진흥위원회 & KMDB
128+
kobis.api.key={ YOUR_API_SECRET_KEY }
129+
kobis.api.url=http://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.json
130+
131+
kmdb.api.key={ YOUR_API_SECRET_KEY }
132+
kmdb.api.url=https://api.koreafilm.or.kr/openapi-data2/wisenut/search_api/search_json2.jsp?collection=kmdb_new2&detail=Y
133+
134+
# Kakao 로그인 연동
135+
spring.kakao.auth.client={ YOUR_KAKAO_AUTH_KEY }
136+
spring.kakao.auth.redirect={ YOUR_REDIRECT_URL }
137+
138+
# Cookie Domain 설정
139+
## If your env is localhost, it would be empty.
140+
domain={ YOUR_DOMAIN }
141+
142+
# Spring Boot Actuator
143+
management.endpoints.web.exposure.include=prometheus,health,metrics,info
144+
145+
# Logback
146+
logging.config=classpath:logback-spring.xml
147+
```
148+
149+
---
150+
151+
#### 2. 백엔드 실행 (Spring Boot)
152+
153+
```bash
154+
# 레포지토리 클론
155+
git clone [레포지토리 주소]
156+
cd cinebox
157+
158+
# 빌드 및 실행
159+
./mvnw spring-boot:run
160+
```

0 commit comments

Comments
 (0)