Giter Club home page Giter Club logo

kid-safer's Introduction

🧒내 아이의 안전한 등하원을 위해, kid-safer

  • 부모와 아이의 등원 또는 하원을 돕는 등하원 도우미를 연결해주는 서비스를 제공합니다.
  • 부모는 등하원 도우미를 신청하는 게시글을 작성할 수 있으며, 도우미는 게시된 글을 토대로 지원할 수 있습니다.

📌프로젝트 목표

  • 객체지향 기본 원리를 적용하여 Spring IoC/DI, AOP, PSA 활용과 의미 있는 코드를 작성하는 것이 목표입니다.
  • 라이브러리 및 애노테이션 적용시 의미를 이해하고 사용 목적을 고려하여 작성합니다.
  • 단순히 기능 구현을 하는 것이 아니라 대용량 트래픽 처리까지 고려한 기능을 구현하는 것이 목표입니다.
  • Jenkins를 이용한 CI/CD 환경 구축합니다.

📌사용 기술

  • Spring boot
  • Gradle
  • Java8

(TBD)

📌Git Flow

브랜치 전략

Git Flow전략을 사용하여 브랜치를 관리합니다.
기능 개발은 feature 브랜치에서 진행하며, Pull Request에 리뷰를 진행한 후 merge를 진행합니다.

현재 개발 진척사항을 확인하고 싶다면 PR를 확인해주세요.

kid-safer PR 내역 : https://github.com/f-lab-edu/kid-safer/pulls

  • main : 배포시 사용하는 브랜치
  • develop : 다음 출시 버전을 개발하는 브랜치
    • 다음 릴리즈를 위해 언제든 배포될 수 있는 상태
  • feature : 기능을 개발하는 브랜치
    • 기능을 완성할 때 까지 유지하며, 완성시 develop브랜치로 merge
    • feature는 이슈번호를 기준으로 생성
  • release : 릴리즈를 준비하는 브랜치(QA)
  • hotfix : 배포 버전에서 생긴 문제로 긴급한 트러블 슈팅이 필요할 때 개발이 진행되는 브랜치

참고 문헌

Commit 메세지 규칙

  • <타입>: <제목>의 형식으로 입력하며, 제목은 최대 50글자까지만 입력한다.
  • 제목 첫 글자를 대문자로 입력한다.
  • 제목은 명령문으로 작성한다.
  • 제목 끝에는 마침표(.)를 입력하지 않는다.
  • 제목과 본문을 한 줄 띄워 분리한다.
  • 본문은 "어떻게"보다 "무엇을", "왜"를 설명한다.
  • 본문에 여러 줄의 메시지를 작성할 땐 "-"로 구분한다.

타입

  • feat : 기능(새로운 기능)
  • fix : 버그 ( 버그 수정)
  • refactor : 리팩토링
  • style : 스타일(코드 형식, 세미콜론 추가 등 비즈니스 로직에 영향이 없는 부분)
  • docs : 문서 (문서 추가, 수정, 삭제)
  • test : 테스트 ( 테스트 코드 추가, 수정, 삭제 등 비즈니스 로직에 영향이 없는 부분)
  • chore : 기타 변경 사항(빌드 스크립트 수정 등)

참고 문헌

kid-safer's People

Contributors

f-lab-michael avatar oksusutea avatar reversalspring avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

saintyun qqq-tech

kid-safer's Issues

Email Auth

  • 회원가입 완료 후 등록한 이메일로 인증 링크를 발송한다.
  • 인증이 완료 되면 로그인을 할 수 있다.

.gitignore 파일 적용

  • 불필요한 클래스파일 및 빌드파일 commit 방지를 위한 gitignore 파일 적용

Request

  • 등하원 도우미가 보호자가 작성한 게시글 중 원하는 것을 골라 신청 할 수 있다.
  • 포스트 정보, 신청자(등하원 도우미) 정보, 요청일시, 코멘트를 등록할 수 있다.

develop build 실패 현상 해결

  • CI 진행시 develop 브랜치 통합 실패로 인한 이슈 해결
    console output :
> Task :compileJava
/var/lib/jenkins/workspace/kid-safer/src/main/java/com/flab/kidsafer/error/exception/KidNotFoundException.java:8: error: cannot find symbol
        super(ErrorCode.KID_NOT_FOUND);
                       ^
  symbol:   variable KID_NOT_FOUND
  location: class ErrorCode
/var/lib/jenkins/workspace/kid-safer/src/main/java/com/flab/kidsafer/error/exception/KidParentNotMatchException.java:8: error: cannot find symbol
        super(ErrorCode.KID_PARENT_NOT_MATCH);
                       ^
  symbol:   variable KID_PARENT_NOT_MATCH
  location: class ErrorCode
2 errors

> Task :compileJava FAILED

의존성 라이브러리 추가

추가 적용한 라이브러리

  • mysql-connector-java : MySQL DB를 연결해주는 JDBC 드라이버입니다.
  • mybatis-spring-boot-starter : 스프링부트에 MyBatis를 빠르게 빌드해줄 수 있도록 도와주는 라이브러리입니다.
  • spring-boot-starter-log4j2 : 가장 최근에 만들어진 로깅 프레임워크입니다. 멀티쓰레드 환경에서 비동기 로거를 사용할 경우 처리량이 훨씬 많고, 대기시간이 짧아 해당 라이브러리로 적용해보았습니다.

Sign Up

  • 회원가입시 이메일 형태의 아이디, 닉네임, 비밀번호, 휴대폰 번호, 주요 활동 지역을 입력받는다.
  • 아이디와 닉네임은 중복검사 기능이 필요하다.
  • 회원은 등하원 도우미, 보호자, 관리자로 구분된다.
  • 탈퇴는 현재로썬 불가능

Sign In

  • 로그인, 로그아웃을 할 수 있다.
  • 메인 페이지를 빼 놓고 로그인을 체크하여 로그인 페이지로 이동 한다.
  • 일정 시간이 지나면 자동 로그인 유지가 풀린다.

Admin

  • 등하원 도우미, 보호자는 관리자에 의해 차단 당할 수 있다.

CD 적용

  • 네이버 클라우드 플랫폼에서 Jenkins를 이용한 CD 적용

Sign Out

로그아웃 기능 추가

  • 로그인이 되어있을 경우에만 로그아웃 처리 적용

Like

  • 사용자는 보호자가 작성한 게시글 중 마음에 드는 글을 '좋아요'할 수 있다.
  • '좋아요'등록 후 취소 가능하다.

로그인 여부 필터 추가

컨트롤러단마다 중복적으로 처리되는 로그인 여부를 필터를 통해 일괄 체크하도록 기능 추가 적용

NGrinder 연동

부하테스트를 위한 nGrinder 서버 생성 및 셋팅

Post - 추가 기능 구현

  • Post와 아이 연계
  • 부모일 경우에만 Post 등록 가능
  • 검색조건별 필터링 및 정렬 기능 추가
    • 지역코드 기준으로 필터링
    • 마감되지 않은 게시글만 필터링
    • 비용 높은/낮은 순으로 정렬
  • post 조회 페이징 처리

Connection Pool 적용

  • 기존 DB연결시마다 커넥션을 생성하는 방식에서 hikari CP Connection Pool을 사용하도록 개선

Review

  • 보호자가 등하원 도우미에 대해 별점, 코멘트로 후기를 남길 수 있어야 한다.
    • 해당 정보를 조회가 가능해야 한다.

Alarm

  • 보호자는 새로운 등하원 도우미가 신청버튼을 누루면 알람을 받을 수 있어야 한다.
  • 등하원 도우미는 본인의 신청 결과에 대해 알람을 받을 수 있어야 한다.
  • 비관리자는 본인이 차단/차단해제가 되었을 경우 알람을 받을 수 있어야 한다.

Child

  • 아이정보는 보호자가 등록할 수 있으며, 여러 아이를 등록 할 수 있다.
  • 한 명의 아이는 한 명의 보호자에게만 등록 가능하다
  • 아이의 성별, 나이, 학교, 특이사항 정보가 담겨져 있다.

Score

누가 언제 몇점을 주었는가 history를 남길수 있어야 한다.

History

  • 등하원 도우미는 본인의 과거 내역을 조회 할 수 있다.

    • 신청했던 Post 내역, 완료한 Post 내역
  • 보호자는 본인이 신청한 내역을 조회 할 수 있다.

MyPage

  • 본인의 회원정보를 수정할 수 있다.

Post

  • 등원 요청시 게시 마감일, 시작일, 종료일, 지역, 시작시간, 종료시간, 비용, 코멘트 입력 가능
  • 보호자는 게시마감이 지나면 신청자 중 한 명을 선택 가능
  • 같은 주거지역, 겹치는 일정이 없는 사람 만 신청 가능

CI 적용

  • 네이버 클라우드 플랫폼을 통해 클라우드 환경에서 CI 적용

Comment

  • 사용자는 보호자가 작성한 게시글 중, 마감이 되지 않는 게시글에 한해 코멘트를 등록 할 수 있다.
  • 보호자(포스트 자성자)는 댓글의 대댓글을 작성 할 수 있다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.