ν λͺ: μλ¬Έλ μΉ κ³΅μ£Όνλ‘μ νΈ λͺ: Cinema Princessνλ‘μ νΈ κΈ°κ°: 2023.06.28 - 2023.07.24νμ: μ΄μν, μ΄μ μ, κΉνμΌ, μνμ€, κΉμ’ ν, κΉν΄, μ΄νλ£¨λ°°ν¬ λ§ν¬: http://cinema-princess-s3-bucket.s3-website.ap-northeast-2.amazonaws.com/
![]() |
||||||
|---|---|---|---|---|---|---|
| μ΄μ μ | κΉνμΌ | κΉμ’ ν | μ΄μν | κΉν΄ | μνμ€ | μ΄ν루 |
| FE λΆνμ₯ | FE | FE | BE νμ₯ | BE | BE | BE |
μ΄μ μ
-
μν μμΈ νμ΄μ§
- μν μ 보(νκ· νμ , μν 컀λ², μμΈ μ 보, μκ° μμ, OTTμ 곡 μ 보, λΉμ·ν μν μΆμ²), 리뷰 λͺ©λ‘ νμ
- νμ λ° λ¦¬λ·° CRUD, 리뷰 μ’μμ λ±λ‘ λ° ν΄μ , μμΉλ¦¬μ€νΈ(μ°) λ±λ‘ λ° ν΄μ
- λ‘κ·ΈμΈ ν μ¬μ©μμ λ‘κ·ΈμΈ μν μ¬μ©μ apiμμ²κ³Ό λ²νΌ μ‘°μ λ‘μ§ λΆλ¦¬
-
λ§μ΄ νμ΄μ§
- νλ‘ν μ΄λ―Έμ§(5MBμ΄ν) μ λ‘λ λ° λ―Έλ¦¬λ³΄κΈ°
- νμμ 보 λ° λΉλ°λ²νΈ μμ Form λΆλ¦¬νμ¬ λ λλ§ μ΅μ ν
- λ΄κ° λ¨κΈ΄ 리뷰 λͺ¨μ보기
-
ν΅κ³ νμ΄μ§
- μ¬μ©μκ° μ νν μ°λμ μ°κ° κ°λ΄ μ₯λ₯΄ ν΅κ³ λ°μ΄ν° api μμ² λ° μ°¨νΈ μμ±
κΉνμΌ
-
λ©μΈνμ΄μ§
- λ°μ€μ€νΌμ€ μμ , ν(μ μ,μΈκΈ°,κ°λ΄μμ ), μ¬ν΄ μΆμ²μ ꡬν
- react-slick λΌμ΄λΈλ¬λ¦¬λ₯Ό νμ©νμ¬ μ¬λΌμ΄λ ꡬν
- ν κΈ°λ₯ ꡬν
-
μ°ν μν νμ΄μ§
- 무νμ€ν¬λ‘€ κΈ°λ₯ ꡬν
- νν°κΈ°λ₯ ꡬν
- λΆλ§ν¬ μμ΄μ½ ν΄λ¦μ ν΄λΉ μν μμ κΈ°λ₯ ꡬν
κΉμ’
ν
-
νμ κ°μ λ° λ‘κ·ΈμΈ
- νμκ°μ λ° λ‘κ·ΈμΈ λͺ¨λ¬μ°½ ꡬν
- μ ν¨μ±κ²μ¬ ꡬν
-
κ²μ νμ΄μ§
- ν€λ μλ¨ κ²μμ°½μ ν΅ν μν κ²μκΈ°λ₯ ꡬν
μ΄μν
-
λ©€λ²μ½
- λ©€λ²μ½ CRUD ꡬν
- νμκ°μ , νμμ 보 μμ μ μ€λ³΅ κ²μ¬ λ° μ ν¨μ± κ²μ¦ ꡬν
- νλ‘ν μ΄λ―Έμ§ μ λ‘λ ꡬν
-
μν μ° λͺ©λ‘
- μν μ° λͺ©λ‘ CRUD ꡬν
-
Spring Security
- JWT ν ν° μΈμ¦ κΈ°λ° λ‘κ·ΈμΈ κ΅¬ν
- OAuth 2.0 μμ λ‘κ·ΈμΈ κ΅¬ν (Google, Kakao, Naver)
- νμλ³ μν λ° μ κ·Ό κΆν μ€μ ꡬν
-
CI/CD
- CI/CD νκ²½ κ΅¬μΆ λ° λ°±μλ μλ² λ°°ν¬ (Github Actions, AWS S3, AWS CodeDeploy, AWS EC2)
- AWS RDS ꡬμΆ
κΉν΄
- 리뷰 CRUD
- μνμ λν 리뷰, λ³μ μμ±
- 리뷰μ λν μ’μμ μΆκ°, μ·¨μ
- λ©μΈνμ΄μ§
- λ°μ€μ€νΌμ€ μμ μ‘°ν
μνμ€
-
tmdb api μ¬μ©
- μνμ κ΄λ ¨λ μ 보λ€μ μΈλΆ apiμΈ tmdb apiλ₯Ό μ¬μ©νμ¬ DBμ μ μ₯ λ° μ‘°ν
-
λ©μΈνμ΄μ§
- μΈκΈ°μ, μ μ, κ°λ΄μμ μ λͺ©λ‘ μ‘°ν
- μ¬ν΄μ μΆμ² μν λͺ©λ‘ μ‘°ν
-
μν μμΈνμ΄μ§
- tmdb apiλ₯Ό ν΅ν΄ μν μ 보(νκ· νμ , μν ν¬μ€ν°, μμΈ μ 보, μκ³ νΈ, OTTμ 곡 μ 보, κ°μ λ±) μ‘°ν
- μ₯λ₯΄ 리μ€νΈλ₯Ό ν΅ν΄ μ‘°ννλ μνμ λκ°μ μ₯λ₯΄μ λ€λ₯Έ μνλ€μ μΆμ²
-
μ₯λ₯΄ 리μ€νΈ, ott λͺ©λ‘ tmdb apiμμ κ°μ Έμμ DBμ μ μ₯
-
μ½ 8.5λ§ κ°μ μν λͺ©λ‘μ DBμ μ μ₯
- jdbcμ batchupdateμ future api λ₯Ό μ¬μ©νμ¬ μ μ₯ μλ ν₯μ
μ΄ν루
- ν΅κ³νμ΄μ§
- μ°λλ³ κ°λ΄μ₯λ₯΄ ν΅κ³
- μ μ μ νλ³ μ νΈμ₯λ₯΄ ν΅κ³
- κ²μνμ΄μ§
- μν μ λͺ© κ²μ
| Github | Discord | Notion |
|---|---|---|
| Html | CSS | JavaScript | React | TypeScript | redux-toolkit | styled-components |
|---|---|---|---|---|---|---|
| Java | MySQL | Tomcat | AWS | Spring Boot | Spring Boot JPA | JWT | Spring Security |
|---|---|---|---|---|---|---|---|
![]() |
src
β£ api # api μμ²νλ ν¨μ ν΄λ
β β£ auth.ts
β β£ getMonthly.ts
β β£ getMovierank.ts
β β£ getNew.ts
β β£ getPopular.ts
β β£ getSearch.ts
β β£ getUpcoming.ts
β β£ getWatchlist.ts
β β£ movie.ts
β β£ statistics.ts
β β userInfo.ts
β£ assets # μ΄λ―Έμ§ νμΌ ν΄λ
β β£ closeButton.svg
β β£ default_poster.png
β β£ elemental_cover.png
β β£ elemental_poster.png
β β£ errorIcon.svg
β β£ halfStarIcon.png
β β£ profile.png
β β£ starIcon.png
β β thumb-up.svg
β£ components # μ»΄ν¬λνΈ νμΌ ν΄λ
β β£ account
β β β£ Googlelogin.tsx
β β β£ Kakaologin.tsx
β β β£ Naverlogin.tsx
β β β£ OauthHandler.tsx
β β β£ SignupForm1.tsx
β β β loginForm.tsx
β β£ main
β β β£ monthmovie
β β β β£ Monthcard.tsx
β β β β£ Monthmovie.tsx
β β β β Monthslider.tsx
β β β£ movierank
β β β β£ Card.tsx
β β β β£ Slider.tsx
β β β β Topmovie.tsx
β β β tabmovie
β β β β£ Botmovietab.tsx
β β β β£ Tab.tsx
β β β β£ TabCard.tsx
β β β β Tabslider.tsx
β β£ movie
β β β£ MovieInfo.tsx
β β β£ MyReview.tsx
β β β£ Rating.tsx
β β β ReviewRegisterModal.tsx
β β£ mypage
β β β£ PasswordEditForm.tsx
β β β£ ProfileUploadModal.tsx
β β β UserInfoEditModal.tsx
β β£ share
β β β£ ConfirmModal.tsx
β β β£ EmptyMessage.tsx
β β β£ Footer.tsx
β β β£ Header.tsx
β β β£ Pagination.tsx
β β β£ ReviewList.tsx
β β β£ ReviewListitem.tsx
β β β£ ReviewStars.tsx
β β β£ SearchCard.tsx
β β β Searchbar.tsx
β β watch
β β β£ WatchBookMark.tsx
β β β WatchDrop.tsx
β£ pages # λΌμ°ν° ν΄λ
β β£ Error.tsx
β β£ Login.tsx
β β£ Main.tsx
β β£ Movie.tsx
β β£ Mypage.tsx
β β£ Root.tsx
β β£ Search.tsx
β β£ Signup.tsx
β β£ Statistics.tsx
β β£ Statisticsusers.tsx
β β£ Watchlist.tsx
β β YearlyGenres.tsx
β£ redux # μν κ΄λ¦¬ ν΄λ
β β£ reducers
β β β£ authSlice.ts
β β β£ isLogin.ts
β β β£ modal.ts
β β β£ movierank.ts
β β β£ searchSlice.ts
β β β£ singupSlice.ts
β β β£ tabmovieSlice.ts
β β β£ watchlistSlice.ts
β β β yearlySlice.ts
β β store.ts
β£ styles # μ€νμΌ νμΌ ν΄λ
β β£ components
β β β£ account
β β β β£ LoginForm.styled.ts
β β β β SignupForm1.styled.ts
β β β£ main
β β β β£ monthmovie
β β β β β£ Monthcard.ts
β β β β β Monthmovie.ts
β β β β£ rankmovie
β β β β β£ Card.styled.ts
β β β β β£ Slider.styled.ts
β β β β β Topmovie.styled.ts
β β β β tabmovie
β β β β β£ Botmovie.styled.ts
β β β β β£ Tab.styled.ts
β β β β β Tabcard.styled.ts
β β β£ movie
β β β β£ MovieInfo.styled.ts
β β β β£ MyReview.styled.ts
β β β β£ Rating.styled.ts
β β β β ReviewRegisterModal.styled.ts
β β β£ mypage
β β β β£ PasswordEditForm.styled.ts
β β β β£ ProfileUploadModal.styled.ts
β β β β UserInfoEditModal.styled.ts
β β β£ share
β β β β£ ConfirmModal.styled.ts
β β β β£ Empty.styled.ts
β β β β£ Footer.styled.ts
β β β β£ Header.styled.ts
β β β β£ Pagination.styled.ts
β β β β£ ReviewList.styled.ts
β β β β£ ReviewListitem.styled.ts
β β β β£ ReviewStars.styled.ts
β β β β Searchbar.styled.ts
β β β watchlist
β β β β£ WatchBookMark.styled.ts
β β β β WatchDrop.styled.ts
β β£ pages
β β β£ Error.styled.ts
β β β£ Login.styled.ts
β β β£ Main.styled.ts
β β β£ Movie.styled.ts
β β β£ Mypage.styled.ts
β β β£ Root.styled.ts
β β β£ Signup.styled.ts
β β β£ Statistics.styled.ts
β β β£ Statisticsusers.styled.ts
β β β YearlyGenres.styled.ts
β β£ GlobalStyle.tsx
β β index.css
β£ types # νμ
μ§μ ν΄λ
β β£ movie.ts
β β user.ts
β£ util # μ νΈ ν¨μ ν΄λ
β β func.ts
β£ App.tsx
β£ index.tsx
β react-app-env.d.ts
- λ©μΈνμ΄μ§ λ°μ€μ€νΌμ€ μμ, ν(μ μ,μΈκΈ°,κ°λ΄μμ ), μ¬ν΄ μΆμ²μμΌλ‘ λλ©λλ€.
- λ°μ€μ€νΌμ€ μμ μ¬λΌμ΄λ λ²νΌμ ν΄λ¦μ νμ¬ 1~10μκΉμ§μ μν λνΉμ λ³Ό μ μμ΅λλ€.
- ν(μ μ, μΈκΈ°, κ°λ΄μμ )λ λ§μ°¬κ°μ§λ‘ λ²νΌμ ν΄λ¦νμ¬ μνλ₯Ό λ³Ό μ μκ³ ν΄λ¦μ νλ©΄ ν΄λΉ μνμ μμΈνμ΄μ§λ‘ μ΄λν©λλ€.
- μ¬ν΄ μΆμ²μμ μλμΌλ‘ λμ΄κ°μ§λ©° ν΄λ¦νμλ μμΈνμ΄μ§λ‘ λμ΄κ°λλ€.
- μνλ₯Ό ν΄λ¦νλ©΄ ν΄λΉ μνμ μμΈνμ΄μ§λ‘ μ΄λν©λλ€.
- λλ€μ, μ΄λ©μΌ, λΉλ°λ²νΈλ‘ ꡬμ±λ 1νμ΄μ§μ λμ΄, μ±λ³, μ νΈμ₯λ₯΄λ‘ ꡬμ±λ 2νμ΄μ§λ₯Ό κ°μ§ νμκ°μ λͺ¨λ¬μ°½μ λλ€.
- νμκ°μ μ μ¬μ©ν μ΄λ©μΌκ³Ό λΉλ°λ²νΈλ‘ ꡬμ±λ λ‘κ·ΈμΈ λͺ¨λ¬μ°½μ λλ€.
- κ°κ°μ μ ν¨μ± κ²μ¬λ₯Ό κ°μ§κ³ μμΌλ©° μ ν¨μ± κ²μ¬μ ν΅κ³Όνμ§ λͺ»ν κ²½μ° alertλ©μΈμ§λ₯Ό νμν©λλ€.
- μ ν¨μ± κ²μ¬μ ν΅κ³Όν κ²½μ° λ‘κ·ΈμΈμ΄ μ±κ³΅νλ©° λͺ¨λ¬μ°½μ΄ λ«νκ³ ν€λμ λ²νΌ ꡬμ±μ΄ λ°λλλ€.
- λ©μΈ νμ΄μ§μ κ²μ νμ΄μ§, λ§μ΄ νμ΄μ§μμ μνλ₯Ό ν΄λ¦νλ©΄ μν μμΈνμ΄μ§μ μ§μ ν©λλ€.
- μν μ 보, μ μ λ€μ΄ λ¨κΈ΄ νκ· νμ κ³Ό 리뷰, λΉμ·ν μν μΆμ² λͺ©λ‘ λ±μ μ 보λ₯Ό μ»μ μ μμ΅λλ€.
- νμ , 리뷰λ₯Ό μ‘°ν, μμ±, μμ , μμ ν μ μκ³ , μμΉλ¦¬μ€νΈμ μμ±/μμ ν μ μμ΅λλ€.
- λ‘κ·ΈμΈμ νμ§ μκ³ λ²νΌμ μ‘°μνλ©΄ λ‘κ·ΈμΈ λͺ¨λ¬μ°½μ΄ λνλ©λλ€.
- μμΈνμ΄μ§μμ λΆλ§ν¬ μμ΄μ½μ ν΄λ¦μ νλ©΄ μ°νμν 리μ€νΈμ λ΄κ²¨μ§λλ€.
- μ°ν μν νμ΄μ§μμ λΆλ§ν¬ μμ΄μ½μ ν΄λ¦μ νλ©΄ μ°νμν νμ΄μ§μμ μμ κ° λ©λλ€.
- μ°ν μν νμ΄μ§μμ μνλ ννμ΄μ§μ 8κ°μ© 보μ¬μ§λ©° 무νμ€ν¬λ‘€μ ꡬννμ¬ λ°μΌλ‘ μ€ν¬λ‘€μ΄ λΏμμλ μΆκ°λ‘ 8κ°μ μνλ€μ΄ λΆλ¬μμ§λλ€.
- λ΄μμ, μ μμ, μ΄λ¦μμΌλ‘ νν° κΈ°λ₯μ΄ λ€μ΄κ°μμΌλ©° μνλ₯Ό ν΄λ¦νλ©΄ μμΈνμ΄μ§λ‘ μ΄λν©λλ€.
- ν€λ μλ¨ κ²μλ°λ₯Ό ν΅ν΄, κ²μμ΄μ ν΄λΉνλ λ¨μ΄λ₯Ό μ λͺ©μΌλ‘ κ°μ§κ³ μλ μν λͺ©λ‘μ λΆλ¬μ¨ νμ΄μ§μ λλ€.
- λμ νμ μ 보λ₯Ό μ‘°ννκ³ μμ , νλ‘νμ΄λ―Έμ§ μ‘°ν λ° μμ , νμ νν΄λ₯Ό ν μ μμ΅λλ€.
- λ΄κ° μνμ λ¨κΈ΄ 리뷰λ€μ λͺ¨μ λ³Ό μ μμ΅λλ€. ν΄λ¦νλ©΄ ν΄λΉ μν μμΈ νμ΄μ§λ‘ μ΄λν©λλ€.
- νλ‘ν μ΄λ―Έμ§λ‘ 5MBμ΄νμ κ°μΈ νμΌμ μ λ‘λ ν μ μμ΅λλ€.
- νμμ 보μμ λλ€μ, λμ΄, μ’μνλ μ₯λ₯΄λ₯Ό μμ νκ³ , λΉλ°λ²νΈλ₯Ό λ³κ²½ν μ μμ΅λλ€.
- νμ νν΄μ 체ν¬λ°μ€μ 체ν¬λ₯Ό ν΄μΌ νκ³ , μλ£λλ©΄ λ‘κ·Έμμκ³Ό λμμ κ³μ μ΄ μμ λ©λλ€.
- μ°λλ³ κ°λ΄ν μνμ μ₯λ₯΄ λΆν¬λ₯Ό μ μ μμ΅λλ€.
- μνλ μ°λλ₯Ό μ ννλ©΄ ν΄λΉ μ°λμ λν λ°μ΄ν°λ₯Ό λ³Ό μ μμ΅λλ€.
μ¬μ©μ μꡬμ¬ν μ μμ
ν
μ΄λΈ λͺ
μΈμ
ERD
νλ©΄μ μμ
API λͺ
μΈμ
μλΉμ€ λ©λ΄μΌ

