Skip to content

API Server For NearBuy(Neighborhood Trading Web Service)

Notifications You must be signed in to change notification settings

Dcom-KHU/nearbuy-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

header

'NearBuy' 프로젝트의 백엔드 서버에 사용되는 레포지토리입니다.

👉 연계 Frontend Repo

https://github.com/Dcom-KHU/nearbuy-frontend

👉 사용된 API 확인하기 (SSL 인증서 발급 필수, 서버 구동 후 확인 가능)

https://localhost:8443/swagger-ui.html


프로젝트 소개

'NearBuy'는 1인 가구, 자취생들을 위한 동네 거래 플랫폼입니다. 공동구매 기능을 중심으로 기존의 중고 거래 플랫폼에서 제공하는 다양한 형태의 거래를 제공합니다.

개발 동기 및 개발 목적

현재 1인 가구의 비율은 전체 가구의 약 33%로, 2000년 약 15%에 비해 2배 이상 늘었습니다.

1인 가구 증가에 따라 가족과 단절되고 사회적 고립감이 심해지고 있고, 이에 따른 여러 가지 부작용이 발생하고 있습니다.

또한 1인 가구를 위한 많은 1인용 상품들이 출시되고있지만, 소포장되는 경우가 대부분이라 기존 품들보다 같은 양 대비 비싼 경우가 많습니다.

'NearBuy'는 1인 가구, 자취생들을 위한 혼자 먹고 쓰기에는 많은 양의 상품들의 공동구매 기능을 중심으로, 판매, 교환, 나눔, 경매 기능을 통해 1인 가구, 자취생들끼리 서로 필요한 물품을 구매하고 판매할 수 있게끔 제공합니다. 또한 거래를 위한 사람간의 대면을 통해 1인 가구의 사회적 고립감을 해결할 수 있게끔 하였습니다.

개발 환경 및 사용 기술

  • FrontEnd : React, Next.js, TypeScript, Redux, Styled-Component, Tailwind CSS, Formik
  • BackEnd : Spring Boot, MySQL, MongoDB, Docker, EC2, Route53, CertBot
  • 공통 : Git, Postman
  • 협업툴 : Notion, GitHub, Figma

페이지별 기능

로그인 페이지

아이디와 비밀번호를 입력받는 일반 로그인과 소셜 로그인을 지원합니다.

회원가입 페이지

아이디(이메일), 이름(닉네임), 비밀번호를 입력 받아 회원가입을 진행합니다.

유저 페이지

사용자의 정보와 게시한 글, 참여중인 글, 찜한 글, 거래 후기를 조회할 수 있습니다.

유저 프로필을 수정할 수 있으며, 일반 로그인 사용자에 한해 비밀번호 변경이 가능합니다.

게시판 페이지

해당 종류의 게시글을 조회하며, 최신순, 높은 가격순, 낮은 가격순으로 정렬할 수 있습니다.

또한 우측 상단 돋보기 버튼을 클릭해 검색어를 입력하면 제목, 내용, 태그에 검색어가 포함된 게시글을 조회합니다.

우측의 연필 버튼을 클릭하면 게시글을 작성할 수 있는데, 판매/교환/나눔, 경매, 공구 게시글 작성화면이 나뉘어져 있습니다.

판매/교환/나눔 게시글 페이지

제목, 내용, 태그, 주소, 사진을 등록할 수 있으며, 판매 게시글은 가격, 교환 게시글은 희망 교환 물품을 추가로 등록할 수 있습니다.

주소는 지도에서 지역을 입력하고 해당하는 마크를 클릭하여 등록합니다.

게시글 작성자의 경우 게시글 수정과 삭제 아이콘이 활성화되며, 작성자가 아닌 경우 게시글 찜과 신고 아이콘이 활성화됩니다.

채팅하기 버튼을 누르면 게시글 작성자와 1대1 채팅방이 개설됩니다.

경매 게시글 페이지

제목, 내용, 태그, 주소, 사진을 등록할 수 있으며, 추가로 경매 시작 가격과 경매 가격 단위, 경매 만료일을 지정할 수 있습니다.

참여하기 버튼을 누르면 경매에 참여할 수 있고, 희망하는 가격으로 경매를 참여할 수 있습니다.

게시글 작성자는 경매 참여자를 조회할 수 있으며, 망치 버튼을 눌러 경매 낙찰을 진행할 수 있습니다.

경매 낙찰이 진행되면 더 이상 경매 참여가 불가하며, 게시글 작성자와 경매 낙찰자의 1대1 채팅방이 자동으로 개설됩니다.

공구(공동구매) 게시글 페이지

제목, 내용, 태그, 주소, 사진을 등록할 수 있으며, 추가로 물품 가격, 공구 인원, 공구 일자, 공구 방법을 지정할 수 있습니다.

참여하기 버튼을 누르면 공구에 참여할 수 있습니다.

게시글 작성자는 공구 참여자를 조회할 수 있으며, 단체 채팅 버튼을 누르면 현재 공구 참여자들과 단체 채팅방을 개설합니다.

채팅방 목록 페이지

개설된 채팅방 목록과 채팅방별 채팅 목록을 확인할 수 있으며, 채팅을 할 수 있습니다.

기대 효과

  • 1인용 상품을 사는 것보다 저렴하게 상품을 구할 수 있어 효율적인 소비가 가능할 것으로 기대됩니다.
  • 거래를 위한 사람간의 대면을 통해 1인 가구가 가지는 사회적 고립감을 해소할 수 있을 것으로 기대됩니다.
  • 1인 가구, 자취생 간 중고 거래를 통해 재활용이 증가함에 따라 환경보호 효과를 가져올 것으로 기대됩니다.

백엔드 개발환경

  • IDE: Intellij IDEA Ultimate

  • OS: MacOS Ventura 13.3.1

  • Language: Java SE 11

  • SDK: Java SE Devlopment Kit 11

  • Application: SpringBoot 2.7.8 (Gradle)

  • Database: MySQL 8.0.32, MongoDB 6.0.1

  • Infrastructure: Docker 23.0.6

  • AWS EC2 AMI: Ubuntu 20.04.5 LTS

AWS EC2 배포 방법(실행 전)

sudo apt-get update
sudo apt install docker.io

sudo apt install docker-compose

sudo usermod -aG docker ${USER}

sudo reboot
sudo apt install openjdk-11-jdk

nano ~/.bashrc

export JAVA_HOME= $(dirname $(dirname $(readlink -f $(which java))))
export PATH=$PATH:$JAVA_HOME/bin

source ~/.bashrc
// CA 인증 X (로컬 실행시)
keytool -genkey -alias nearbuy -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12
// CA 인증 O
sudo apt install certbot

sudo certbot certonly --standalone

sudo chmod 755 /etc/letsencrypt/live

cd /etc/letsencrypt/live/{DOMAIN_URL}

sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name nearbuy -CAfile chain.pem -caname root

sudo mv keystore.p12 ~/

cd ~

실행

git clone https://github.com/Dcom-KHU/nearbuy-backend.git

sudo mv keystore.p12 ./nearbuy-backend

cd ./nearbuy-backend

[Write down "MYSQL_ROOT_PASSWORD", "MONGO_INITDB_ROOT_PASSWORD" in docker-compose.yml]

docker-compose up -d

[Write down "spring.mail.password", "server.ssl.key-store-password" in /src/main/resources/application.yml]

[Write down "spring.datasource.password", "spring.data.mongodb.password" in /src/main/resources/application-db.yml] 

[Write down {NAVER CLIENT_ID + SECRET} / {KAKAO CLIENT_ID + SECRET} / {JWT SECRET KEY} in /src/main/resources/application-oauth.yml] 

sudo chmod 755 ./gradlew

sudo chmod 755 ./keystore.p12

./gradlew build

java -jar build/libs/nearbuy-backend-0.0.1-SNAPSHOT.jar

About

API Server For NearBuy(Neighborhood Trading Web Service)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages