Code Monkey home page Code Monkey logo

fastcampus-project-board's Introduction

게시판 서비스 - 패스트캠퍼스, 10개 프로젝트로 완성하는 백엔드 웹개발

가장 기본적이고 보편적인 게시판 기능을 둘러볼 수 있는 서비스입니다. 2022년 6월 기준 가장 최신의 스프링 부트와 관련 기술들, 자바 17 기능들, 개발 도구들을 경험할 수 있도록 만들어졌습니다.

이 서비스는 패스트캠퍼스10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring) 초격차 패키지 Online 강의의 강의용 프로젝트로 사용되었습니다.

개발 환경

  • Intellij IDEA Ultimate 2023.2.6
  • Java 17
  • Gradle 8.7
  • Spring Boot 3.2.4

기술 세부 스택

Spring Boot

  • Spring Boot Actuator
  • Spring Web
  • Spring Data JPA
  • Rest Repositories
  • Rest Repositories HAL Explorer
  • Thymeleaf
  • Spring Security
  • H2 Database
  • MySQL Driver
  • Lombok
  • Spring Boot DevTools
  • Spring Configuration Processor

그 외

  • QueryDSL 5.0.0
  • Bootstrap 5.2.3
  • Heroku

데모 페이지

질문, 건의

프로젝트에 관해 궁금하신 점이나 건의 사항이 있으시다면 아래 항목을 이용해 주세요.

  • Issues: 버그 리포트, 제안 사항
  • Discussions: 프로젝트와 관련한 논의와 정보

fastcampus-project-board's People

Contributors

codingnoob12 avatar

Watchers

 avatar

fastcampus-project-board's Issues

게시판 서비스 뷰에 기능 구현하기

게시판 서비스 뷰가 실제로 동작하게 만들기 위해 해야할 일을 정리하고, 실행한다.

  • 뷰 기능 정의
    • 게시판 페이지 기능 테스트 정의
    • 게시글 페이지 기능 테스트 정의
    • 로그인 페이지 기능 테스트 정의
  • 뷰 기능 구현
    • 게시판 페이지 기능 구현
    • 게시글 페이지 기능 구현
    • 로그인 페이지 기능 구현
  • 테스트

게시판 페이징 구현

게시판 서비스에 필요한 페이징 기능을 구현한다.

  • 게시판 페이지 (이전, 숫자, 이후)
  • 게시글 페이지 (이전, 이후)

헤로쿠에 배포하기

드디어 완성한 게시판 서비스 프로젝트!
클라우드에 배포하여 사용해보자.

도메인 설계

게시판 서비스를 만들기 위한 기본 도메인을 설계해보자.

  • 도메인 ERD 다이어그램 그려보기
  • 자바 클래스로 도메인 표현해보기

MVC 테스트 코드 수정

Spring Security 를 적용한 뒤, Spring Data REST의 MVC 테스트에서
POST, PUT, PATCH, DELETE 메소드로 요청을 보내면 403 오류가 발생하게 되었다.

이를 해결하기 위해, CSRF토큰을 발급받아 요청하도록 수정해야 한다.

회원 도메인 추가

로그인 기능 추가를 위해, 회원 도메인을 추가한다.

  • 회원 도메인을 ERD 다이어그램에 반영하기
  • 자바 클래스로 도메인 표현하기

깃헙 릴리즈하기

게시판 서비스의 첫번째 버전이 완성되었다.
깃헙에 릴리즈하자.

게시글 댓글 구현

게시글에 댓글을 다는 기는을 구현한다.

  • 게시글 페이지에서 댓글을 등록하기
  • 게시글 페이지에서 댓글을 골라 삭제하기
  • 게시글 페이지에서 댓글을 골라 편집하기
  • 테스트

게시판 검색 구현

게시판에서 게시글을 검색하는 기능을 구현한다.

  • 구현
    • 검색 대상 필드로 기본 검색 기능 구현
    • 기본 게시판 페이지의 검색바 기능 구현
    • 제목, 본문, 이름 검색 페이지
    • 해시태그 검색 페이지
  • 테스트

게시글 뷰 기능 구현

수업 시간에 보여주지 않았떤 게시판 뷰, 게시글 뷰의 게시글 등록, 수정, 삭제 기능을 구현한다.
#18 의 연장선

  • 게시판 뷰 - 글쓰기
  • 게시글 뷰 - 수정, 삭제

깃헙 프로젝트와 이슈 정리하기

깃헙 프로젝트를 세팅하고, 카드를 만들어 정리하자.

  • 프로젝트 베타 만들기
  • 카드 목록 만들기 - 강의 커리큘럼 참고
  • 이슈로 적절히 바꾸기

인증 기능 구현

인증 기능을 구현한다.

  • 인증 설정하기
    • 인증이 필요 없는 영역
      • 루트 페이지 보기
      • 게시판 보기
    • 인증이 필요한 영역
      • 게시글 (+ 댓글) 보기
      • 자기 게시글 쓰기, 수정, 삭제
      • 자기 댓글 쓰기, 수정, 삭제
  • 인증 기능에 필요한 부분 구현
  • 회원 가입 페이지
  • 테스트

잘못된 도메인 정보 바로잡기

#28 기능을 구현하다가 도메인 코드 설계가 일부 잘못되어 있는 것을 발견.
UserAccount 회원 계정의 userId는 회원 id 이므로 유니크해야 하는데,
해당 속성이 빠져있었다.
erd 문서에는 email의 유니크 키가 표현되지 않음
바로잡기로 한다.

  • user_id에 유니크키 추가
  • email erd 업데이트

게시판 정렬 버그 수정

게시판 페이지네이션에서 정렬 옵션을 적용한 뒤,
페이지를 변경하면 정렬 옵션이 해제되는 버그를 발견함

이를 항상 sort 파라미터를 넘기도록 하여 수정해보자.

게시판 정렬 구현

게시판 정렬 기능을 구현한다.
정렬 기능은 게시판 페이지에서 각 컬럼(제목, 해시태그, 작성자, 작성일)의 제목을 누르면
해당 값으로 오름차순, 내림차순 정렬이 되게끔 동작하게 만드는데 쓴다.

  • 정렬 기능 구현
  • 뷰에 적용
  • 테스트

데이터베이스 접근 로직 테스트 정의

도메인 설계 내용(#8)을 바탕으로 DB 와 연동하기 위한 방법을 구상하고, 세팅을 하고, 테스트를 먼저 작성해본다.

  • DB 기술 선택하기
  • DB 에 접근할 수 있는 상태로 환경 세팅하기
  • 테스트 작성하기

게시판 서비스 뷰 만들기

게시판 서비스 뷰를 만들기 위해 해야할 일을 정리하고, 실행한다.

  • 뷰 엔드포인트 테스트 정의
  • 뷰 구현
    • 게시판 페이지 만들기
    • 게시글 페이지 만들기
    • 로그인 페이지 만들기
    • 뷰에 디자인 붙이기
  • 테스트

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.