Skip to content

likeLion-backendJava15/team5-PerfumeLog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🍀 향기 저장소 (PerfumeLog)

사용자 리뷰 기반 향수 정보 공유 플랫폼


📌 프로젝트 소개

향기 저장소 (PerfumeLog)는 사용자들이 다양한 향수에 대한 리뷰와 정보를 공유하는 커뮤니티 기반 플랫폼입니다.

🎯 제작 목표

  • 사용자 리뷰 기반 향수 정보 공유 플랫폼 구축
  • 향기 노트, 지속력, 잔향 등 향수 특화 정보 기반 리뷰 시스템 제공

🎈 기대 효과

  • 직접 시향이 어려운 사용자들에게 리뷰 기반 향수 선택의 기준 제공
  • 지속력·확산력·성별 인식 등 감성 정보를 정량화하여 비교 가능
  • 찜 기능과 사용자 맞춤형 정보 제공으로 구매 결정에 도움

⚙️ 기능

구분 기능 설명
사용자 회원가입 / 로그인
검색 향수명, 브랜드명, 향 노트 기반 검색
향수 목록 브랜드, 향 계열 필터링
상세 정보 향기 노트, 지속력, 정가, 리뷰 등 상세 보기
리뷰 리뷰 작성, 평점 등록

🛠 기술 스택

💻 Frontend

🧩 Backend

🗃️ Database

🛠 Version Control & Collaboration

🔗 Notion Project Page


👥 팀원 소개


김진아


윤선현


윤형일


이예은


황승미

제품 목록 / 나의 찜 목록 / 향수 검색 / 로그인 / 회원가입 제품 필터링 / 제품 카드 자신이 쓴 리뷰 수정 삭제 / 리뷰 좋아요 리뷰 CRUD / 통계 / 로그인 / 회원가입 제품 카드 / 상세페이지 / 제품 찜

🗂️ 파일별 역할 분배

팀원 프론트 담당 컴포넌트 백엔드 담당 파일
김진아 Header.jsx, ProductList.jsx, WishList.jsx, LoginForm.jsx, SignUpForm.jsx, LoginPage.js, SignUpPage.js productController.js, productModel.js, productRoutes.js, productDTO.js, wishController.js, wishModel.js, wishDTO.js, userController.js, userModel.js, userRoutes.js, userDTO.js
황승미 ProductCard.jsx, ProductDetail.jsx productNoteController.js, productNoteModel.js, productNoteRoutes.js, productNoteDTO.js, wishController.js, wishModel.js, wishRoutes.js
윤선현 ProductFilter.jsx, HomePage.js noteController.js, noteModel.js, noteRoutes.js, noteDTO.js
이예은 ReviewForm.jsx, ReviewStats.jsx, ReviewCard.jsx, ReviewList.jsx, ReviewPage.js, ReviewFilter.jsx,LoginForm.jsx, SignUpForm.jsx, LoginPage.js, SignUpPage.js, MyReview.js reviewController.js, reviewModel.js, reviewRoutes.js, reviewDTO.js, userController.js, userModel.js, userRoutes.js, userDTO.js
윤형일 MyReview.js, MyPage.js reviewLikeController.js, reviewLikeModel.js, reviewLikeRoutes.js, reviewLikeDTO.js

🚀 실행 방법

1. DB 설정

  1. data 폴더에 있는 csv 파일 다운로드

    • brand.csv
    • fragnance_family.csv
    • note.csv
    • product_note.csv
    • sample.csv
  2. mysql 에서 SHOW VARIABLES LIKE 'secure_file_priv'; 에서 나온 폴더에 perfume_data/ 폴더 생성 후 다운로드 받은 파일들 저장 (예 : C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/brand.csv'

  3. mysql에서 다음 sql 실행

    CREATE TABLE USER (
      id INT AUTO_INCREMENT PRIMARY KEY,
      userid VARCHAR(255) NOT NULL UNIQUE,
      password VARCHAR(255) NOT NULL
    );
    CREATE TABLE BRAND (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL UNIQUE
    );
    CREATE TABLE FRAGRANCE_FAMILY (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL UNIQUE
    );
    
    CREATE TABLE NOTE (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL UNIQUE
    );
    
    CREATE TABLE PRODUCT (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        brand_id INT NOT NULL,
        family_id INT NOT NULL,
        image_url TEXT NOT NULL,
        price INT NOT NULL,
        description_url TEXT NOT NULL,
        FOREIGN KEY (brand_id) REFERENCES BRAND(id),
        FOREIGN KEY (family_id) REFERENCES FRAGRANCE_FAMILY(id)
    );
    
    CREATE TABLE PRODUCT_NOTE (
        id INT AUTO_INCREMENT PRIMARY KEY,
        product_id INT,
        note_id INT,
        type ENUM('TOP', 'MIDDLE', 'BASE') NOT NULL,
        FOREIGN KEY (product_id) REFERENCES PRODUCT(id),
        FOREIGN KEY (note_id) REFERENCES NOTE(id)
    );
    
    CREATE TABLE REVIEW (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id INT,
        product_id INT,
        rating INT CHECK (rating BETWEEN 1 AND 5),
        longevity ENUM('매우약함', '약함', '중간', '강함', '아주강함') NOT NULL,
        sillage ENUM('매우약함', '약함', '중간', '강함', '아주강함') NOT NULL,
        gender ENUM('여성적', '중성적', '남성적') NOT NULL,
        content TEXT NOT NULL,
        created_at DATETIME DEFAULT NOW(),
        FOREIGN KEY (user_id) REFERENCES USER(id),
        FOREIGN KEY (product_id) REFERENCES PRODUCT(id)
    );
    
    CREATE TABLE WISH (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id INT,
        product_id INT,
        created_at DATETIME DEFAULT NOW(),
        UNIQUE(user_id, product_id),
        FOREIGN KEY (user_id) REFERENCES USER(id),
        FOREIGN KEY (product_id) REFERENCES PRODUCT(id)
    );
    
    CREATE TABLE REVIEW_LIKE (
        id INT AUTO_INCREMENT PRIMARY KEY,
        user_id INT,
        review_id INT,
        created_at DATETIME DEFAULT NOW(),
        UNIQUE(user_id, review_id),
        FOREIGN KEY (user_id) REFERENCES USER(id),
        FOREIGN KEY (review_id) REFERENCES REVIEW(id)
    );
    LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/brand.csv'
    INTO TABLE brand
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 ROWS
    (id, name);
    
    LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/fragrance_family.csv'
    INTO TABLE fragrance_family
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 ROWS
    (id, name);
    
    LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/note.csv'
    INTO TABLE note
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 ROWS
    (id, name);
    
    LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/sample.csv'
    INTO TABLE product
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 ROWS
    (id, name, brand_id, @family_id, @image_url, price, @description_url)
    SET
      family_id = NULLIF(@family_id, ''),
      image_url = NULLIF(@image_url, ''),
      description_url = NULLIF(@description_url, '');
    
    LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/perfume_data/product_note.csv'
    INTO TABLE product_note
    FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    LINES TERMINATED BY '\r\n'
    IGNORE 1 ROWS
    (product_id, note_id, type);```

2. 환경 변수 설정

backend 폴더에 .env 파일을 생성하고 .env.example 참고하여 값을 입력하세요.

3. 백엔드 설정 및 실행

cd backend
npm init -y
npm install express cors mysql2 dotenv

node app.js

4. 프론트엔드 설정 및 실행

npx create-react-app frontend
cd frontend
npm install bootstrap react-router-dom axios

npm start

About

다양한 향수에 대한 리뷰와 정보를 공유하는 커뮤니티 기반 플랫폼

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 6