perfect-matching / perfectmatching-backend

Side Project Member Matching Platform

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Project - Side Project Member Matching Platform

사용자가 원하는대로 사이드 프로젝트를 함께할 팀원들을 모집할 수 있고 또는 사용자가 원하는 사이드 프로젝트에 참여하기 위해서 프로젝트를 찾을 수 있는 매칭 플랫폼 프로젝트.

개발환경

도구 버전
Framework Spring Boot 2.1.6
OS Windows 10, Ubuntu 18.04
IDE IntelliJ IDEA Ultimate
JDK JDK 1.8
DataBase MySQL Server 5.7
Build Tool Gradle 5.2.1

Modeling

  • Entity 모델링 명세 확인

  • Entity Relation Diagram 확인

개발 방법

세부정보
  • 개발과 관련된 모든 이야기는 Issues에서 진행합니다.

    • 급한 용무는 우선 순위에 따라서 카카오톡 또는 슬랙과 같은 메신저를 이용합니다.
  • API 및 모델링 명세를 주기적으로 최신화하면서 README.md를 잘 관리합니다.

  • Fork를 통한 PR을 지향합니다.

  • 아래와 같은 Git Workflow를 지향하며 지키려고 노력합니다. (참고)

실행 방법

세부정보
  • 준비사항.

    • Gradle or IntelliJ IDEA

    • JDK (>= 1.8)

    • Spring Boot (>= 2.x)

  • 저장소를 clone

    $ git clone https://github.com/perfect-matching/perfectmatching-backend.git
  • 프로젝트 내 Project-Matching\src\main\java\com\matching\config 경로에 HttpConfig.java 삭제 또는 내용 주석처리.

  • DB는 MySQL을 쓴다고 가정.

    • 다른 DB를 사용한다면, 그 DB에 맞게 설정을 해야함.
  • 프로젝트 내 Project-Matching\src\main\resources 경로에 application.yml 생성.

    • 밑의 양식대로 내용을 채운 뒤, application.yml에 삽입.

    spring:
        datasource:
            url: jdbc:mysql://localhost:3306/본인_DB?serverTimezone=UTC
            username: 본인_DB_User
            password: 본인_DB_User_Password
            driver-class-name: com.mysql.jdbc.Driver
        jpa:
            hibernate:
                ddl-auto: create
    
        data:
            web:
                pageable:
                    page-parameter: offset
        servlet:
           multipart:
                enabled: true
                max-file-size: 200MB
                max-request-size: 215MB
    
    file:
        upload-dir: ./uploads
  • IntelliJ IDEA(>= 2018.3)에서 해당 프로젝트를 Open

    • 또는 터미널을 열어서 프로젝트 경로에 진입해서 다음 명령어를 실행.

    • Windows 10

      $ gradlew bootRun
    • Ubuntu 18.04

      $ ./gradlew bootRun
      

REST API URL

세부정보
  • GET

    URI(자원) HTTP(행위) 기능(표현)
    /api/projects GET DB에 있는 Project를 가져오기 위한 api
    /api/projects?offset={num} GET offset에 따른 Project들을 가져오기 위한 api
    /api/projects?location={name} GET location에 따른 Project들을 가져오기 위한 api
    /api/projects?location={name}&offset={num} GET location과 offset에 따른 Project들을 가져오기 위한 api
    /api/projects?position={name} GET position에 따른 Project들을 가져오기 위한 api
    /api/projects?position={name}&offset={num} GET position과 offset에 따른 Project들을 가져오기 위한 api
    /api/projects?position={name}&location={name} GET position과 location에 따른 Project들을 가져오기 위한 api
    /api/projects?location={name}&position&offset={num} GET location과 postion 그리고 offset에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name} GET tag name에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&offset={num} GET tag name과 offset 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&location={name} GET tag name와 location에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&location={name}&offset={num} GET tag name과 location과 offset에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&position={name} GET tag name과 position에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&postion={name}&offset={num} GET tag name과 postion과 offset에 따른 Project들을 가져오기 위한 api
    /api/projects?tag={name}&location={name}&postion={name}&offset={num} GET tag name과 postion, location, offset에 따른 Project들을 가져오기 위한 api
    /api/project/{idx} GET idx에 따른 Project의 정보를 가져오기 위한 api
    /api/project/{idx}/comments GET Project에 따른 Comment들을 가져오기 위한 api
    /api/project/{idx}/members GET Project에 참여중인 맴버들의 정보를 가져오기 위한 api
    /api/project/{idx}/tags GET Project에 포함된 태그들의 정보를 가져오기 위한 api
    /api/profile/{idx} GET idx에 따른 User의 프로필 정보를 가져오기 위한 api
    /api/profile/{idx}/skills GET idx에 따른 User의 프로필 정보 중 스킬 정보를 가져오기 위한 api
    /api/profile/{idx}/projects GET idx에 따른 User의 진행중인 프로젝트 정보를 가져오기 위한 api
    /api/profile/{idx}/doneprojects GET idx에 따른 User의 진행했던 프로젝트 정보를 가져오기 위한 api
    /api/comment/{idx} GET idx에 따른 Comment의 정보를 가져오기 위한 api
    /api/doneproject/{idx} GET idx에 따른 DoneProject를 가져오기 위한 api
    /api/doneproject/{idx}/usedskills GET DoneProject에 포함된 태그들의 정보를 가져오기 위한 api
    /api/tag/{idx} GET idx에 따른 Tag를 가져오기 위한 api
    /api/userskill/{idx} GET idx에 따른 UserSkill을 가져오기 위한 api
    /api/usedskill/{idx} GET idx에 따른 UsedSkill을 가져오기 위한 api
    /api/tags GET DB에 등록되어 있는 Tag들을 가져오기 위한 api
    /api/userskills GET DB에 등록되어 있는 UserSkill들을 가져오기 위한 api
    /api/usedskills GET DB에 등록되어 있는 UsedSkill들을 가져오기 위한 api
    /api/image/{fileName} GET 서버에 업로드되어 있는 이미지 파일을 가져오기 위한 api
    /api/profile/{idx}/myprojects GET 유저가 개설한 프로젝트를 가져오기 위한 api
    /api/profile/{idx}/applyprojects GET 유저가 지원한 프로젝트를 가져오기 위한 api
    /api/project/{idx}/joinmembers GET 프로젝트의 지원자 목록을 가져오기 위한 api
  • POST

    URI(자원) HTTP(행위) 기능(표현)
    /api/project POST Project를 생성하기 위한 요청 api
    /api/login POST 서버에 로그인을 요청하기 위한 api
    /api/logout POST 서버에 로그아웃을 요청하기 위한 api
    /api/register POST User 생성을 위해서 회원가입을 요청하는 api
    /api/register/nickcheck POST User 생성을 위해 회원가입시 닉네임 중복 체크를 요청하는 api
    /api/register/emailcheck POST User 생성을 위해 회원가입시 이메일 중복 체크를 요청하는 api
    /api/comment POST Comment를 생성하기 위해 요청하는 api
    /api/project/apply POST 유저가 프로젝트에 지원하기 위해 요청하는 api
    /api/doneproject POST DoneProject를 생성하기 위해 요청하는 api
    /api/modify/nickcheck POST User 정보 수정시에 닉네임 중복 체크를 요청하는 api
  • PUT

    URI(자원) HTTP(행위) 기능(표현)
    /api/project/{idx} PUT Project의 idx에 따라 Project를 수정하기 위한 api
    /api/comment/{idx} PUT Comment의 idx에 따라 Comment를 수정하기 위한 api
    /api/image PUT 유저의 프로필 사진을 변경하기 위한 api
    /api/project/{idx}/status?status={name} PUT Project의 Status를 name에 따라 변경하기 위한 api
    /api/project/matching PUT Project 개설자가 지원자를 매칭 또는 거절을 요청하기 위한 api
    /api/doneproject/{idx} PUT DoneProject의 idx에 따라 DoneProject를 수정하기 위한 api
    /api/profile/{idx} PUT User의 idx에 따라 Profile을 수정하기 위한 api
  • DELETE

    URI(자원) HTTP(행위) 기능(표현)
    /api/project/{idx} DELETE Project의 idx에 따라 Projet를 삭제하기 위한 api
    /api/comment/{idx} DELETE Comment의 idx에 따라 Comment를 삭제하기 위한 api
    /api/image DELETE User의 기존 프로필 이미지를 삭제하고 기본 이미지로 변경하기 위한 api
    /api/project/cancel/{idx} DELETE Project의 Idx에 따라 지원취소를 요청하기 위한 api
    /api/doneproject/{idx} DELETE DoneProject의 idx에 따라 DoneProject를 삭제하기 위한 api

About

Side Project Member Matching Platform

License:MIT License


Languages

Language:Java 100.0%