[1] 프로젝트 개요
[2] 주요 기능
[3] 프로젝트 구조
[4] 기술 스택
[5] API 명세서
[6] 팀원
- 프로젝트명: 루플(Loople)
- 프로젝트 기간: 2025.07.09 ~ 2025.08.13
- 프로젝트 소개:
순환(Loop)과 사람(People) 그리고 즐거움(Play)이 결합된 지속 가능한 순환의 삶을 돕는 플랫폼
단순한 정보 제공을 넘어 퀴즈, 아바타 키우기 등 재미 요소를 더한 다양한 활동을 통해 지역과 사람들을 연결하며, 함께 순환의 가치를 실현할 수 있도록 돕는 공간
로그인 시 사용자에게 퀴즈를 출제한다.
퀴즈 문제는 매월 1일 00:00:00에 OpenAI API를 통해 한 달 치 문제가 자동으로 생성된다.
공지사항, 자유 게시글, 중고 게시글을 확인할 수 있다.
중고 게시글은 판매가 아닌 나눔을 기반으로 한다.
사용하지 않지만 버리기 아까운 물건을 나눔하는 것이 목적이다.
사용자 지역 기반의 게시글과 전체 게시글을 선택적으로 확인할 수 있다.
쓰레기 처리 요령을 챗봇 형식으로 간단하게 안내한다.
지역별 수거 정보도 빠르게 확인 가능하다.
추가 질문이 있는 경우, OpenAI API를 활용한 자유 질문/응답이 가능하다.
사용자 간 1:1 실시간 채팅 기능을 제공한다.
특히 중고 나눔 거래 시 소통 수단으로 활용된다.
챗봇 기능과 별도로 더 상세한 쓰레기 분리수거 및 처리 규칙을 제공한다.
이 기능은 전국 단위 정보를 바탕으로 하며, 사용자 지역과 무관하게 조회할 수 있다.
FRONTEND/
├── node_modules/
├── public/
├── src/
│ ├── apis/
│ ├── assets/
│ ├── components/
│ │ ├── atoms/
│ │ ├── common/
│ │ ├── modals/
│ │ ├── organisms/
│ │ ├── pages/
│ │ └── templates/
│ ├── constants/
│ ├── context/
│ ├── hooks/
│ ├── routes/
│ ├── services/
│ ├── store/
│ ├── styles/
│ ├── utils/
│ ├── App.jsx
│ └── main.jsx
├── .env
├── .gitignore
├── eslint.config.js
├── index.html
├── package-lock.json
├── package.json
├── README.md
├── uno.config.mjs
├── vite.config.js
└── yarn.lock
src/apis: API 요청 관련 모듈src/assets: 이미지, 폰트 등 정적 자원src/components: UI 컴포넌트 모음 (atoms, modals, templates 등으로 분리)src/constants: 상수 정의 파일src/context: 전역 상태 관리를 위한 React Contextsrc/hooks: 커스텀 훅 정의src/routes: 라우팅 관련 설정 파일src/services: 도메인별 서비스 로직src/store: 전역 상태관리 (예: Redux, Zustand 등)src/styles: 전역 스타일, 테마 등 스타일 정의src/utils: 공통 유틸리티 함수src/App.jsx: 전체 앱을 구성하는 루트 컴포넌트src/main.jsx: 앱 진입점, React 앱을 DOM에 마운트index.html: 앱의 HTML 템플릿vite.config.js: Vite 번들러 설정 파일.env: 환경변수 설정 파일package.json: 프로젝트 의존성과 스크립트 정의
backend/
├── .gradle/
├── .idea/
├── build/
├── gradle/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/loople/backend/
│ │ │ ├── v1/
│ │ │ └── v2/
│ │ │ ├── domain/
│ │ │ │ ├── auth/
│ │ │ │ ├── avatarItem/
│ │ │ │ ├── badgeCatalog/
│ │ │ │ ├── beopjeongdong/
│ │ │ │ ├── chat/
│ │ │ │ ├── community/
│ │ │ │ ├── loopingCatalog/
│ │ │ │ ├── myAvatar/
│ │ │ │ ├── myAvatarItem/
│ │ │ │ ├── myBadge/
│ │ │ │ ├── myLoopling/
│ │ │ │ ├── myRoom/
│ │ │ │ ├── myRoomItem/
│ │ │ │ ├── myVillage/
│ │ │ │ ├── quiz/
│ │ │ │ ├── regionalRule/
│ │ │ │ ├── roomItem/
│ │ │ │ ├── userNotification/
│ │ │ │ ├── users/
│ │ │ │ └── villageStatus/
│ │ │ └── global/
│ │ │ ├── api/
│ │ │ ├── config/
│ │ │ ├── exception/
│ │ │ ├── getUserId/
│ │ │ ├── jwt/
│ │ │ └── s3/
│ │ └── resources/
│ │ └── application.yml
│ └── test/
├── .gitattributes
├── .gitignore
├── build.gradle
├── gradlew
├── gradlew.bat
├── HELP.md
└── settings.gradle
src/main/java/com/loople/backend/v2/domain: 도메인별 세부 모듈들 (auth, chat, community 등)src/main/java/com/loople/backend/v2/global: 공통 기능 (api, config, exception 등)src/main/resources/application.yml: 설정 파일build.gradle,gradlew등 : Gradle 빌드 관련 파일
| 이름 | 역할 | GitHub | 담당 기능 |
|---|---|---|---|
| 백진선 | FE, BE | blrlk | 퀴즈, 게시판, 챗봇, 채팅, 지역별 규칙 |
| 장민솔 | FE, BE | min5ol | 회원가입, 로그인(소셜로그인), 알림, 마을, 아바타 및 개인 아이템 |



























