Skip to content

중고 의류를 거래하고, 나누며, 창의적 활동을 통해 지속 가능한 패션을 실현하는 플랫폼입니다

Project-FitLoop/FitLoop-FE

Repository files navigation

👗 FITLOOP - Frontend

FITLOOP Logo

FITLOOP은 사용자가 옷을 사고팔 수 있는 패션 거래 플랫폼입니다.
사용자는 마켓에서 옷을 사고팔 수 있으며, 룩북을 통해 스타일을 공유하고, 챌린지에 참여해 트렌디한 패션 문화를 즐길 수 있습니다.



🛠️ 프로젝트 개요

  • 프로젝트명: FITLOOP
  • 목적: 사용자들이 패션 아이템을 사고팔고, 룩북과 챌린지를 통해 스타일을 공유하는 패션 커뮤니티 플랫폼 제공

✨ 주요 기능

  • 🛒 마켓플레이스: 사용자가 직접 패션 아이템을 등록 및 판매
  • 📸 룩북: 사진 업로드를 통한 스타일 공유
  • 🎥 챌린지: 태그 + 영상 기반의 패션 챌린지 참여 기능
  • ⭐ 즐겨찾기(북마크): 관심 있는 상품 및 룩북을 저장하여 쉽게 다시 보기
  • 🔍 필터링: 스타일, 브랜드, 가격대 등의 조건으로 검색 가능


💻 개발 환경

카테고리 라이브러리 설명
프레임워크 Next.js (v15.1.4) React 기반 SSR/CSR 웹 프레임워크
React (v19.0.0) 선언형 UI 라이브러리
UI Tailwind CSS 유틸리티 기반 CSS 프레임워크
Ant Design (v5.22.7) 고성능 UI 컴포넌트 라이브러리
@ant-design/icons (v5.5.2) Ant Design 공식 아이콘 패키지
데이터 처리 @tanstack/react-query (v5.66.0) 서버 상태 및 비동기 처리 라이브러리
기타 Axios (v1.7.9) HTTP 통신 클라이언트
Lottie-react (v2.4.0) 애니메이션 효과용 라이브러리
react-cookie (v7.2.2) 쿠키 기반 로그인 상태 관리


🚀 설계 방향

FITLOOP은 사용자 경험보안 안정성을 동시에 고려하여 설계되었습니다.

🔐 인증 및 권한 관리

  • JWT 기반 인증 시스템

    • 로그인 시 액세스 토큰리프레시 토큰을 발급하여, 각각 헤더와 HttpOnly 쿠키에 저장
    • 리프레시 토큰을 DB에 저장하고 유효성을 추가 검증하여 보안 강화
    • 요청마다 JWT의 유효성 및 권한을 확인하여 미인증 요청 사전 차단
  • 역할(Role) 기반 접근 제어

    • 사용자의 권한(MEMBER, ADMIN 등)에 따라 접근 가능한 API 엔드포인트를 명확히 구분하여 설정
    • 로그인 응답 시 사용자 권한과 개인정보 입력 여부를 함께 전달하여 프론트엔드에서의 접근 관리 지원
  • 안전한 로그아웃 처리

    • 로그아웃 시 DB에서 리프레시 토큰을 즉각 삭제하고, 쿠키 만료 처리로 보안성 유지

🚨 예외 처리

  • 커스텀 에러 코드 사용
    • 에러 유형을 명확히 정의하고, 일관된 JSON 형식으로 응답하여 프론트엔드의 오류 처리 용이성 향상

🧩 미들웨어 설계

Next.js의 middleware 기능을 활용해 인증이 필요한 페이지를 보호하고 있습니다.

  • JWT 토큰 기반 인증 처리

    • 요청 시 쿠키에서 토큰을 추출하여 유무 확인
    • 토큰이 없고 보호된 경로에 접근할 경우, 로그인 페이지(/login)로 리다이렉트
  • 공통 처리 흐름

    • 인증이 필요 없는 경로는 그대로 통과
    • 인증이 필요한 경로는 토큰 유무로 접근 제어 수행
  • 예외 처리 방향

    • 토큰이 만료되었거나 탈취/누락된 경우를 고려해 사용자 경험을 해치지 않도록 예외 상황 대응
    • 이후 리프레시 토큰 또는 자동 로그아웃 로직 추가 예정

코드 컨벤션

✅ ESLint 설정 (Flat Config)

rules: {
  indent: ["error", 2],                      // 들여쓰기 2칸
  semi: ["error", "always"],                 // 세미콜론 필수
  camelcase: ["error", { properties: "always" }], // 카멜케이스 사용
  "no-var": "error",                         // var 금지
  "prefer-arrow-callback": "error",         // 화살표 함수 권장
  "prefer-template": "error",               // 템플릿 리터럴 사용 권장
  "space-infix-ops": "error"                // 연산자 사이 공백 필수
}



🗓️ FITLOOP 프로젝트 개발 히스토리

본 프로젝트는 애자일 방법론 중 하나인 스크럼(Scrum)을 적용하여 짧은 주기로 기능을 개발하고,
지속적인 논의와 피드백을 통해 점진적으로 완성도를 높이는 방식으로 진행하였습니다.

📅 2024년 12월 개발 히스토리 보기
날짜 작업 내용
12.20 프로젝트 구조 설계 시작, 기능 구상
12.21 프로젝트 기능 기획
12.23 프로젝트 상세 기능 기획
12.24 프로젝트명 확정(FitLoop), 컨벤션 논의
12.26 ERD 논의 시작
12.27 로고 제작, 테이블 구성 논의
12.28 이미지 정책, 구독 서비스, Enum 논의
12.29 상태 이력 테이블 필요성 검토
12.30 ERD 구현 및 관계 설정, 배송지 테이블 추가
12.31 구독형 서비스 논의
📅 2024년 1월 개발 히스토리 보기
날짜 작업 내용
01.02 개발 일정 수립, JWT/SSR/Middleware 정리
01.03 Gradle 설정, 예외 처리 설계
01.04 로고 및 GitHub 라벨 확정
01.05 이슈/PR 템플릿 작성, AWS 및 쿠버네티스 학습
01.06 Ant Design 학습, 피그마 초안
01.07 인증/인가 구조, HttpOnly 쿠키 정리
01.08 JWT와 SSR/CSR 개념 비교
01.09 ESLint 대응, 이미지 최적화 논의
01.10 리프레시 토큰 구조, 삭제 처리 논의
01.11 JWT 로그인 로직 구성, 토큰 저장 전략 수립, 캐시(redis) 대해 논의
01.12 회원 상태(status), @Transactional 처리 논의
01.13 테이블 통합 vs 분리 → 분리 설계 선택
01.14 JWT 기반 코드 구현 시작
01.15 Axios 도입, JSON 전송 방식 결정
01.16 API 명세서 및 버튼 UI 기획
01.17 계정 정보 페이지 개발
01.19 시스템 기능 구현 내용 정리
01.20 공통 에러 코드 및 전역 예외 처리 구성
01.21 사용자 정의 예외 클래스 정리
01.22 Spring Security 필터 설정 논의
01.23 CORS 설정 및 토큰 로직 정리
01.24 RefreshToken 로직 개발 시작
01.25 프론트 상태 관리, 진행률 UI 구성
01.26 회원가입 유효성 검사 추가
01.27 사용자 정의 에러 반환 방식 정리
📅 2024년 2월 개발 히스토리 보기
날짜 작업 내용
02.14 Enum/Boolean 필드 설계, 생일 예외 처리 개선
02.21 로그인 후 개인정보 입력 여부 분기 설계
02.23 JWT 필터 permitAll 이슈 해결 방식 논의
02.24 마이페이지 설계, 로그아웃 필터 개발
02.25 로그아웃 필터 완성, 마이페이지 UI 구성
02.26 상품 도메인 기획 및 등록/목록 페이지 분배
02.28 공통 색상 시스템 구축, 광고 이미지 연동 설계
📅 2024년 3월 개발 히스토리 보기
날짜 작업 내용
03.03 Tailwind 및 스크롤바 스타일 개선
03.04 카테고리 UI 및 페이지 이동 로직 구현, AWS 진행
03.08 상품 등록 시 카테고리 선택 UI 논의
03.11 UserDetails ID 이슈 해결, 개인정보 입력 UI 보완
03.12 S3 광고 이미지 연동 컨트롤러 설계, 마이페이지 구성
03.13 URL 명칭 통일, 회원가입 UX 개선, 사용자 통계 테이블 설계
03.14 상품 등록 URL 구조 논의, 상품 상세 페이지 수정·삭제 버튼 추가, 사용자 및 상품 테이블 설계 논의
03.15 스크롤 구현 방식 공유, 카테고리 ENUM 적용 논의
03.18 버튼 색상 스타일 정의, 카테고리 선택 시 데이터 통신 방식 논의
03.19 기능 리뷰 및 피드백 공유, 상품 저장 로직 논의
03.22 이미지 배열(images)과 파일 배열(imageFiles) 차이점 정리, axios 인스턴스 처리 방식 및 Figma 연동 방식 논의
03.24 Next.js 미들웨어 공식문서 기반 인증 흐름 논의, DB 정규화 이슈 점검
03.25 personalInfo undefined 문제 해결, JWT 저장 위치 재논의, 이미지 전송 방식(JSON vs FormData) 논의
03.26 AWS S3 이미지 업로드 및 조회 구현
03.27 Redis 기반 캐싱 구조 설계, 팀 내 역할 분배
03.28 상품 등록 완료 후 리다이렉트 처리, 불필요한 Content-Type 제거, 이미지 중복 처리 이슈 해결
03.29 Kafka, Redis, WebSocket, RabbitMQ, Spring Batch 관련 아키텍처 비교 및 적용 가능성 논의

About

중고 의류를 거래하고, 나누며, 창의적 활동을 통해 지속 가능한 패션을 실현하는 플랫폼입니다

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages