- 개발자 취준생을 위한 채용 정보 제공
- 최신 채용 정보를 한 곳에서 쉽게 접근할 수 있도록 제공
- 효율적인 취업 준비를 위한 정보 플랫폼 구축
- 웹 개발 기본 소양 습득
- CRUD 기능을 직접 구현하여 웹 개발의 기초 다지기
- 실전 프로젝트를 통해 실무 능력 향상
- 협업 경험 및 실전 프로젝트 수행
- 팀원 간 원활한 협업을 통한 프로젝트 수행 경험 축적
- 실시간 피드백을 통한 문제 해결 및 프로젝트 완성도 향상
- 채용 정보 수집 및 업데이트
- 사람인에서 채용 정보를 자동으로 수집 및 매일 업데이트
- 최신 채용 정보를 사용자에게 제공
- 사용자 관리 및 권한 분리
- 관리자와 일반 사용자의 권한을 구분하여 관리
- 관리자는 게시판과 공지사항을 관리, 일반 사용자는 정보 열람 및 댓글 작성 가능
- 게시판 기능
- 채용 정보를 게시판 형태로 제공
- 사용자 간 정보 공유 및 의견 교환을 위한 댓글 기능 제공
- 공지사항 기능
- 관리자에 의해 게시되는 공지사항 제공
- 중요한 정보 및 업데이트 사항 공지
- 댓글 기능
- 사용자 간의 커뮤니케이션을 위한 댓글 작성 및 조회 기능
- 다양한 의견 교환 및 정보 공유 활성화
- 시큐리티 로직 및 예외처리
- 보안 강화 및 사용자 데이터 보호를 위한 시큐리티 로직 구현
- 다양한 예외 상황에 대한 처리 로직 설계 및 적용
이정석 | 조아라 | 조준호 | 이소정B |
---|---|---|---|
- 발표용으로 만든 서버이기 때문에 현재는 접속할 수 없습니다.
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
userSignUpForm | GET | /user/signup | 일반 회원 가입 폼 요청 | ALL |
userSignUp | POST | /user/signup | 일반 회원 가입 요청 | ALL |
userDelete | PATCH | /user/delete{username} | 회원 탈퇴 요청(RESTful API) | USER |
adminSignUpForm | GET | /admin/signup | 관리자 회원가입 폼 요청 | ALL |
adminSignUp | POST | /admin/signup | 관리자 회원 가입 요청 | ALL |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
userLoginForm | GET | /user/login | 일반 회원 로그인 폼 요청 | ALL |
userLogout | GET | /user/logout | 일반 회원 로그아웃 | USER |
adminLoginForm | GET | /user/login | 관리자 로그인 폼 요청 | ALL |
adminLogout | GET | /user/logout | 관리자 로그아웃 | ADMIN |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
userEditForm | GET | /user/edit | 일반 회원 정보 수정 폼 요청 | USER |
userEdit | PUT | /user/edit | 일반 회원 수정 요청 | USER |
adminEditForm | GET | /admin/edit | 관리자 회원 정보 수정 폼(일반 회원과 동일) 요청 | ADMIN |
adminEdit | PUT | /admin/edit | 관리자 회원 수정(일반 회원과 동일) 요청 | ADMIN |
userList | GET | /admin/users | 회원 정보 리스트 조회 | ADMIN |
userDetails | GET | /admin/users/{username} | 특정 회원 상세 정보 조회(상태, 권한등) | ADMIN |
updateUserRole | POST | /admin/users/edit | 특정 회원 상태 및 권한 정보 수정 | ADMIN |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
listPost | GET | /post/list | 게시글 리스트 조회 | ALL |
createPostForm | GET | /post/form | 게시글 생성 폼 요청 | USER |
createPost | POST | /post/form | 게시글 생성 요청 | USER |
postDetail | GET | /post/detail/{id} | 게시글 상세 정보 조회 | USER(작성자) |
editPostForm | GET | /post/edit/{id} | 게시글 수정 폼 요청 | USER(작성자) |
updatePost | PUT | /post/edit/{id} | 게시글 수정 요청 | USER(작성자) |
deletePost | POST | /post/delete/{id} | 게시글 삭제 요청(soft delete) | USER(작성자) |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
getComments | GET | /api/comment/{postId} | 댓글 리스트 조회 | USER |
addComment | POST | /api/comment/{postId} | 댓글 작성 요청 | USER |
updateComment | PUT | /api/comment/{commentId} | 댓글 수정 요청 | USER(작성자) |
deleteComment | DELETE | /api/comment/{commentId} | 댓글 삭제 요청 | USER(작성자) |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
getAnnouncements | GET | /announcements | 공지사항 리스트 조회 | ADMIN |
createAnnouncementForm | GET | /announcements/form | 공지사항 생성 폼 요청 | ADMIN |
createAnnouncement | POST | /announcements | 공지사항 생성 요청 | ADMIN |
announcementDetail | GET | /announcements/{id} | 공지사항 상세 정보 조회 | ADMIN |
updateAnnouncementForm | GET | /announcements/edit/{id} | 공지사항 수정 폼 요청 | ADMIN |
updateAnnouncement | PATCH | /announcements/{id} | 공지사항 수정 요청 | ADMIN |
deleteAnnouncement | Delete | /announcements/{id} | 공지사항 삭제 요청 | ADMIN |
🏷️ Name | ⚙️ Method | 📎 URL | 📑 Description | 🔨 Authority |
---|---|---|---|---|
recuit | GET | /recuit | 채용 정보 리스트 조회 | ALL |
-
로그인하지 않은 상태에서 접근할 수 있는 페이지
- 일반 사용자
- 로그인 페이지
- 회원가입 페이지
- 공지사항-게시판 목록 조회 페이지, 공지사항-게시판 상세 조회 페이지
- 채용공고 목록 조회 페이지, 채용공고 상세 조회 페이지
- 일반 사용자
-
사용자별 권한 등급
- 관리자
- 공지사항-게시판 CRUD, 채용공고 CRUD, 댓글 CURD
- 일반 사용자
- 게시판 CRUD, 채용공고 R, 댓글 CRUD
- 관리자
-
일반 사용자 회원가입
- 입력값 : 이메일(아이디), PW, 이름, 가입 일시, 수정일시
- 정책 - 생성 (유효성 검사)
- 아이디는 유효성 검사를 진행하고, 회원가입시 중복 체크를 진행
- 입력값이 이메일형태인지 확인, 빈 값이 안된다.
- DB에 해당 아이디가 존재한 상태에서 회원 가입시 ‘이미 존재하는 회원’의 메시지 출력
- 비밀번호는 최소 8 ~ 16자 이하이며, 영문 대/소문자, 숫자, 특수문자로 구성**(2개 이상을 조합해서 가입)**
- 이름은 공백 체크만 한 후 길이만 체크 (최소 2자, 최대 6자)
- 최초 회원가입이 완료되면 가입 일시와 수정 일시 업데이트
- 회원 수정시 수정 일시만 업데이트
- 위 정책을 통과하면 회원가입이 완료되고, 로그인 페이지로 이동한다.
- 최초 회원가입시 일반 사용자의 권한은 ‘일반’이다.
- 아이디는 유효성 검사를 진행하고, 회원가입시 중복 체크를 진행
-
관리자 회원가입
- 입력값 : 이메일(아이디), PW, 이름, 가입 일시, 수정일시
- 정책 - 생성 (유효성 검사)
- 아이디는 유효성 검사를 진행하고, 회원가입시 중복 체크를 진행
- 입력값이 이메일형태인지 확인, 빈 값이 안된다.
- DB에 해당 아이디가 존재한 상태에서 회원 가입시 ‘이미 존재하는 회원’의 메시지 출력
- 비밀번호는 최소 8 ~ 16자 이하이며, 영문 대/소문자, 숫자, 특수문자로 구성**(2개 이상을 조합해서 가입)**
- 이름은 공백 체크만 한 후 길이만 체크 (최소 2자, 최대 6자)
- 최초 회원가입이 완료되면 가입 일시와 수정 일시 업데이트
- 회원 수정시 수정 일시만 업데이트
- 위 정책을 통과하면 회원가입이 완료되고, 로그인 페이지로 이동한다.
- 최초 회원가입시 관리자는 ‘관리자’ 이다.
- 아이디는 유효성 검사를 진행하고, 회원가입시 중복 체크를 진행
-
회원정보 수정
- 일반 사용자
- 회원정보 수정 가능 항목은 비밀번호, 이름만 가능
- ID 값을 제외한 나머지 항목 회원가입과 마찬가지로 정책 및 유효성 검사 동일하게 진행
- 수정이 성공적으로 이뤄지면 해당 유저 데이터의 수정 일시 컬럼을 업데이트
- 회원 탈퇴도 가능
- 관리자
- 회원정보 수정 가능 항목은 비밀번호, 이름만 가능
- ID 값을 제외한 나머지 항목 회원가입과 마찬가지로 정책 및 유효성 검사 동일하게 진행
- 수정이 성공적으로 이뤄지면 해당 유저 데이터의 수정 일시 컬럼을 업데이트
- 일반 사용자에 대한 정보를 수정할 수 있고, 권한 부여도 가능
- 회원들을 권한을 관리할 수 있는 관리자 전용 페이지가 존재한다.
- 일반 사용자
-
로그인
- 일반 사용자 로그인
- 로그인 실패시 “아이디 또는 비밀번호가 일치하지 않는다”의 메시지 출력
- 로그인 성공시 index 페이지로 이동
- 관리자 로그인
- 로그인 실패시 “아이디 또는 비밀번호가 일치하지 않는다”의 메시지 출력
- 로그인 성공시 index 페이지로 이동
- 일반 사용자 로그인
-
공지사항, 게시판, 채용공고
-
공통: 게시글, 공지사항 모두 최근 작성한 날짜로 정렬한다. (생성일자)
-
게시판
- 관리자, 일반 사용자 권을 가진 유저만 게시판 글 목록 보기, 글 상세 보기, 글 수정하기, 글 삭제하기, 글 쓰기 가능
- 게시글 작성, 수정 시 제목과 내용은 공백 혹은 빈칸으로 작성될 수 없음
- 해당 유저가 작성한 게시글만 수정, 삭제 가능
- 상세보기 페이지에서 로그인을 하지 않고 글 작성 버튼을 누르는 경우 로그인 페이지로 이동
- 기본적인 페이징 쿼리, 검색 기능 제공
-
공지사항
- 관리자 권한을 가진 유저만 공지사항 글 목록 보기, 글 상세 보기, 글 수정하기, 글 삭제하기, 글 쓰기 가능
- 공지사항 작성, 수정 시 제목과 내용은 공백 혹은 빈칸으로 작성될 수 없다.
- 관리자 권한을 가진 유저만이 작성한 공지사항을 수정하거나 삭제할 수 있다.
- 공지사항에는 댓글을 작성할 수 없다.
- 게시판 상단에 최신순으로 작성된 공지사항 5개가 노출되어야 한다.
- 정지된 회원은 공지사항만 볼 수 있다.
-
채용공고
- 사람인 API를 호출하여 리스트를 출력해준다.
- 공고 클릭시 해당 공고 지원 페이지로 이동
- 기본적인 페이징 쿼리, 검색 기능 제공
-
-
댓글 작성
- 기본적인 댓글 기능 구현 (일반 사용자, 관리자, 회사)
- 댓글 보기
- 댓글 수정하기
- 댓글 수정하기
- 댓글 작성하기
- 댓글 작성, 수정 시 내용은 공백 혹은 빈칸으로 작성될 수 없음
- 해당 유저만 작성한 댓글에 대해 수정, 삭제 가능
- 댓글을 작성했던 게시글이 삭제될 경우 해당 댓글 데이터도 같이 삭제
- 게시판에만 댓글 기능을 열어둔다
- 기본적인 댓글 기능 구현 (일반 사용자, 관리자, 회사)
- 무중단 배포
- 스프링 시큐리티를 활용한 인증/인가 처리
- Srping Batch를 활용한 매일매일 구인정보 업데이트
📦src
┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂com
┃ ┃ ┃ ┗ 📂est
┃ ┃ ┃ ┃ ┗ 📂cranejob
┃ ┃ ┃ ┃ ┃ ┣ 📂announcement
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Announcement.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAnnouncementRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateAnnouncementRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AnnouncementDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AdminUpdateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂comment
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Comment.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateCommentRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateCommentRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateComment.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateComment.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂post
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Post.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreatePostRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdatePostRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PostAdminDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PostSummaryResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostUserDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreatePost.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdatePost.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂recruit
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Recruit.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitInfo.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HttpURLConnectionEx.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RecruitService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SchedulerService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂security
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂handler
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CustomAuthenticationFailureHandler.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂provider
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FormAuthenticationProvider.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FormUserDetailsService.java
┃ ┃ ┃ ┃ ┃ ┣ 📂user
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserController.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜User.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAdminUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LoginUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpdateAdminUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserContext.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserService.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂util
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BaseEntity.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Role.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserStatus.java
┃ ┃ ┃ ┃ ┃ ┣ 📜CraneJobApplication.java
┃ ┃ ┃ ┃ ┃ ┗ 📜HomeController.java
┃ ┗ 📂resources
┃ ┃ ┣ 📂static
┃ ┃ ┃ ┣ 📂assets
┃ ┃ ┃ ┃ ┣ 📂brand
┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap-logo-white.svg
┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap-logo.svg
┃ ┃ ┃ ┃ ┃ ┗ 📜cranejob-logo-mini.png
┃ ┃ ┃ ┃ ┣ 📂dist
┃ ┃ ┃ ┃ ┃ ┣ 📂css
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap.min.css
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap.min.css.map
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap.rtl.min.css
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap.rtl.min.css.map
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜style.css
┃ ┃ ┃ ┃ ┃ ┗ 📂js
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜bootstrap.bundle.min.js
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜bootstrap.bundle.min.js.map
┃ ┃ ┃ ┃ ┗ 📂js
┃ ┃ ┃ ┃ ┃ ┗ 📜color-modes.js
┃ ┃ ┃ ┗ 📂css
┃ ┃ ┃ ┃ ┣ 📜bootstrap.min.css
┃ ┃ ┃ ┃ ┗ 📜style_userlist.css
┃ ┃ ┣ 📂templates
┃ ┃ ┃ ┣ 📂admin
┃ ┃ ┃ ┃ ┣ 📜edit.html
┃ ┃ ┃ ┃ ┣ 📜login.html
┃ ┃ ┃ ┃ ┣ 📜signup.html
┃ ┃ ┃ ┃ ┣ 📜user-info.html
┃ ┃ ┃ ┃ ┗ 📜user-list.html
┃ ┃ ┃ ┣ 📂announcement
┃ ┃ ┃ ┃ ┣ 📜detail.html
┃ ┃ ┃ ┃ ┣ 📜edit.html
┃ ┃ ┃ ┃ ┣ 📜form.html
┃ ┃ ┃ ┃ ┗ 📜list.html
┃ ┃ ┃ ┣ 📂layout
┃ ┃ ┃ ┃ ┗ 📜header.html
┃ ┃ ┃ ┣ 📂post
┃ ┃ ┃ ┃ ┣ 📜edit.html
┃ ┃ ┃ ┃ ┣ 📜form.html
┃ ┃ ┃ ┃ ┣ 📜list.html
┃ ┃ ┃ ┃ ┗ 📜postDetail.html
┃ ┃ ┃ ┣ 📂recruit
┃ ┃ ┃ ┃ ┗ 📜recruit-list.html
┃ ┃ ┃ ┗ 📂user
┃ ┃ ┃ ┃ ┣ 📜edit.html
┃ ┃ ┃ ┃ ┣ 📜login.html
┃ ┃ ┃ ┃ ┗ 📜signup.html
┃ ┃ ┗ 📜application.yml
┗ 📂test
┃ ┗ 📂java
┃ ┃ ┗ 📂com
┃ ┃ ┃ ┗ 📂est
┃ ┃ ┃ ┃ ┗ 📂cranejob
┃ ┃ ┃ ┃ ┃ ┗ 📜CraneJobApplicationTests.java
- announcement: 공지사항 구현에 필요한 controller, service, repository, domain
┃ ┃ ┃ ┃ ┃ ┣ 📂announcement
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Announcement.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAnnouncementRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateAnnouncementRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AnnouncementDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AdminUpdateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜AnnouncementService.java
- comment: 댓글 구현에 필요한 controller, service, repository, domain
┃ ┃ ┃ ┃ ┃ ┣ 📂comment
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Comment.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateCommentRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateCommentRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CommentDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateComment.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateComment.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CommentService.java
- post: 게시글 구현에 필요한 controller, service, repository, domain
┃ ┃ ┃ ┃ ┃ ┣ 📂post
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Post.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreatePostRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdatePostRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PostAdminDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜PostSummaryResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostUserDetailResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreatePost.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdatePost.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜PostService.java
- recurit: 채용공고 구현에 필요한 controller, service, repository, domain
┃ ┃ ┃ ┃ ┃ ┣ 📂recruit
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Recruit.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitInfo.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜RecruitRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜HttpURLConnectionEx.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜RecruitService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SchedulerService.java
- security: 인증/인가 구현에 필요한 Security 파일
┃ ┃ ┃ ┃ ┃ ┣ 📂security
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AuthConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜SecurityConfig.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂handler
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜CustomAuthenticationFailureHandler.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂provider
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FormAuthenticationProvider.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜FormUserDetailsService.java
- user: 유저 구현에 필요한 controller, service, repository, domain
┃ ┃ ┃ ┃ ┃ ┣ 📂user
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂controller
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserController.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserController.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂domain
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜User.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂dto
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂request
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateAdminUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜CreateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜LoginUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UpdateAdminUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UpdateUserRequest.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂response
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserResponse.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserContext.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂repository
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserRepository.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂service
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜AdminUserService.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserService.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂util
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜BaseEntity.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜Role.java
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserStatus.java
- templates/admin: 관리자용 회원 관리 페이지를 위한 뷰 템플릿
- templates/announcement: 공지사항 페이지를 위한 뷰 템플릿
- templates/layout: 공통 레이아웃 템플릿
- templates/post: 게시물 페이지를 위한 뷰 템플릿
- templates/recurit: 채용공고 페이지를 위한 뷰 템플릿
- templates/user: 일반 회원, 관리자 로그인 회원가입을 위한 뷰 템플릿
- 팀장 : 이정석 (기획, 설계, 유저 도메인 개발)
- BE : 조아라 (채용공고 도메인 개발, 배포 스크립트 작성)
- BE : 조준호 (DB 설계, 게시물, 댓글 도메인 개발)
- BE : 이소정 (각 도메인에 맞는 뷰 템플릿 개발 및 피그마 작성)
- 디자인 : 이소정
- 일반 사용자, 관리자가 보는 페이지는 대부분 동일하기 때문에 필요한 부분만 업로드
- 이 후 화면에 대한 내용은 직접 실행해보면서 확인
메인 | 로그인 |
회원가입 | 정보수정 |
게시판 | 상세보기 및 댓글 |
수정하기 | 작성하기 |
채용공고 게시판 | 공지사항 게시판 |
공지사항 상세보기 | 공지사항 작성하기 |
- mermaid
graph TD
A[사용자] -->|브라우저 요청| Nginx
Nginx -->|트래픽 분산| EC2_1[EC2: 서버 여러대]
subgraph 프론트엔드
B[HTML, CSS, Thymeleaf, JavaScript]
end
EC2_1 -->|Thymeleaf 통신| B
subgraph 백엔드
EC2_1 -->|JPA 통신| RDS[MySQL:RDS]
EC2_1 -->|인증 요청| C[Security]
EC2_1 -->|API 호출| E[배치 작업]
end
- PPT