Skip to content

papercrane55123/HW_SW_Project2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

HW_SW_Project2

image

NomadLog

1팀 - 🦖이동혁, 🐙이경민, 🐋박민성, 🐰박재린, 🐥고라희


📚 Tech Stack 📚

✨ Platforms & Languages ✨




🛠 Tools 🛠



✈️프로젝트 소개

여행의 정보를 얻어가고 정보에 대한 소통이 가능한 블로그 NomadLog!

좋았던 여행지에 대한 기록을 하고,

여행할 지역에 대한 정보를 이미 다녀온 경험자에게 전수받으면서

다양한 사람들과 함께 채팅하며 정보를 공유해봐요 :)

😊팀원 소개

✈️프로젝트 기간

12/18/23~01/17/24

💾프로젝트 개요

🔹아이디어 기획

iOS 이미지

🔹프로젝트 시나리오

🔹프로젝트 설계


소프트웨어 아키텍쳐

🎁 요구사항 정의

요구사항 분석서

작성자 (이 플랫폼을 이용하는 사용자)

  1. 계정 관리: 회원가입을 통해 플랫폼 사용 가능. 회원 정보 수정 가능. 회원 탈퇴 가능.
  2. 카테고리 및 태그 관리: 카테고리명을 정리하고 설정 가능. 게시글에 나라별 태그 설정 가능. 여행 스타일을 게시글에 기록 가능.
  3. 게시글 및 댓글 관리: 게시글 작성, 수정, 삭제 가능. 댓글 작성, 삭제, 수정 가능. 댓글 작성자에 대한 정보 확인 가능. 게시글 작성 시간 확인 가능.
  4. 페이지 및 레이아웃: 페이지 넘버 또는 무한 스크롤로 게시글 표시. 한 페이지에 표시되는 게시글 수 설정 가능. 목록으로 돌아가는 버튼 제공.
  5. 게시글 속성 및 기능: 임시 저장 기능은 미구현. 글씨체 및 크기 선택 기능은 미구현. 이미지 파일 첨부 가능. 조회수 확인 가능. 좋아요 버튼을 통해 게시글 좋아요 가능.

뷰어 (이 플랫폼을 이용하는 방문자)

  1. 게시글 및 댓글 기능: 게시글 및 댓글에 좋아요를 누를 수 있음. 댓글 작성 가능. 댓글 삭제 및 수정 가능. 게시글에 댓글이 삭제된 경우 이를 확인 가능.
  2. 검색 및 뷰어 화면: 검색을 통해 원하는 게시물을 찾을 수 있음. 메인페이지에서 태그별로 선택하여 보여줄 수 있음. 나라/지역 검색 가능. 프로필 정보 확인 가능.
  3. 좋아요 및 뷰어 활동: 좋아요를 누를 수 있음. 좋아요를 누른 게시글들을 모아 볼 수 있음.
  4. 댓글 기능: 댓글을 입력 가능. 댓글 삭제 가능. 댓글 수정 가능.
  5. 프로필 정보: 사용자 프로필 정보 확인 가능.

🔧 DB 모델링

- Entity Relationship Diagram (ER Diagram)

- Entity Relationship Diagram (ERD)

- Data Definition Language (DDL)

유저(member) 테이블 생성
CREATE TABLE `userstbl` (
	`member_code` INT(11) NOT NULL AUTO_INCREMENT,
	`member_id` VARCHAR(15) NOT NULL COLLATE 'utf8mb4_general_ci',
	`member_password` VARCHAR(15) NOT NULL COLLATE 'utf8mb4_general_ci',
	`member_name` VARCHAR(10) NOT NULL COLLATE 'utf8mb4_general_ci',
	`member_email` VARCHAR(30) NOT NULL COLLATE 'utf8mb4_general_ci',
	`member_age` INT(11) NOT NULL,
	PRIMARY KEY (`member_code`) USING BTREE,
	UNIQUE INDEX `member_id` (`member_id`) USING BTREE,
	UNIQUE INDEX `member_email` (`member_email`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=52
;
게시물 테이블 생성
CREATE TABLE `bbs` (
	`bbs_id` INT(50) NOT NULL AUTO_INCREMENT,
	`title` VARCHAR(255) NULL DEFAULT 'bbs' COLLATE 'utf8mb4_general_ci',
	`contents` VARCHAR(1000) NOT NULL COLLATE 'utf8mb4_general_ci',
	`created_at` TIMESTAMP NULL DEFAULT current_timestamp(),
	`modify_at` TIMESTAMP NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
	`view_cnt` INT(50) NULL DEFAULT '0',
	`like_cnt` INT(11) NULL DEFAULT '0',
	`hashtag_id` INT(11) NULL DEFAULT '0',
	`is_deleted` TINYINT(1) NULL DEFAULT '0',
	`member_code` INT(11) NULL DEFAULT '0',
	`country_id` INT(11) NULL DEFAULT '1',
	PRIMARY KEY (`bbs_id`) USING BTREE,
	INDEX `country_id` (`country_id`) USING BTREE,
	CONSTRAINT `country_id` FOREIGN KEY (`country_id`) REFERENCES
		`countries` (`country_id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=174
;
댓글 테이블 생성
CREATE TABLE `comment` (
	`comment_id` INT(50) NOT NULL AUTO_INCREMENT,
	`bbs_id` INT(50) NOT NULL DEFAULT '0',
	`content` VARCHAR(500) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`writer` VARCHAR(50) NOT NULL DEFAULT '0' COLLATE 'utf8mb4_general_ci',
	`reg_date` TIMESTAMP NULL DEFAULT NULL,
	`modify_date` TIMESTAMP NULL DEFAULT NULL,
	PRIMARY KEY (`comment_id`) USING BTREE,
	INDEX `bbs_id` (`bbs_id`) USING BTREE,
	CONSTRAINT `bbs` FOREIGN KEY (`bbs_id`) REFERENCES
		`bbs` (`bbs_id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=94
;
국가 테이블 생성
CREATE TABLE `countries` (
	`country_id` INT(50) NOT NULL AUTO_INCREMENT,
	`country_name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	`continent_name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
	PRIMARY KEY (`country_id`) USING BTREE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=250
;
Hashtag 테이블 생성
CREATE TABLE `hashtag` (
	`hashtag_id` INT(11) NOT NULL AUTO_INCREMENT,
	`bbs_id` INT(11) NULL DEFAULT NULL,
	`content` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb3_bin',
	PRIMARY KEY (`hashtag_id`) USING BTREE,
	INDEX `bbs_id` (`bbs_id`) USING BTREE,
	CONSTRAINT `bbs_id` FOREIGN KEY (`bbs_id`) REFERENCES
		`bbs` (`bbs_id`) ON UPDATE CASCADE ON DELETE CASCADE
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=109
;

✈️ 서비스별 주요 기능 소개

계층 구조 설계

C:.
├─.idea
├─.mvn
│  └─wrapper
└─src
   └─main
      ├─java
      │  └─com
      │      └─encore
      │          └─bbs
      │              ├─board
      │              │  ├─controller
      │              │  ├─dto
      │              │  ├─mapper
      │              │  └─service
      │              ├─chat
      │              │  ├─config
      │              │  ├─controller
      │              │  ├─model
      │              │  ├─repository
      │              │  └─service
      │              ├─comment
      │              │  ├─controller
      │              │  ├─dto
      │              │  ├─mapper
      │              │  └─service
      │              ├─config
      │              └─member
      │                  ├─controller
      │                  ├─dto
      │                  ├─handler
      │                  ├─mapper
      │                  └─service
      └─resources
          ├─mapper
          ├─static
          │  ├─css
          │  ├─images
          │  │  └─main
          │  └─js
          └─templates
              ├─bbs
              ├─chat
              ├─common
              │  ├─fragments
              │  └─layout
              └─member

클래스 간 관계도

스크린샷 2024-01-15 110614

  • member

    회원정보 관리와 로그인 기능을 구현하여, 게시글 접근 권한을 설정
  • Board

    게시글 리스트를 구성해 여러 정보를 확인
    게시글 글쓰기를 비롯해 수정, 삭제 가능
  • Comment

    원하는 게시글에 들어가 댓글 작성 삭제 가능
  • Country&HashTag

    Country : 게시글 내에 자신이 다녀온 여행 국가 선택 시, 대륙과 함께 정보 저장하기
    HashTag : 자신의 게시글에 다양한 키워드로 본인의 게시글 표현하기
  • Chat

    원하는 게시글에 들어가서 여러사람과 대화 가능하도록 채팅방 생성

✈️ QA

image

✈️ 시연영상

nomad.mp4
  • 채팅방 구현 영상

-.Clipchamp.mp4

720p 보기

✈️ 개선사항

기능 내용
아이디 생성 아이디 영어로만 생성가능 설정 건
게시글 게시글 DB에서 게시글 번호 증가 관련 건
TDD 테스트 주도 개발을 통한 코드 작성 건

✈️회고

  • 🦖이동혁 : 게시판이라고 해서 쉽게 봤다간 큰 코 다친다는 생각을 하였다. 간단한 CRUD를 코드로 구현하는 점도 이렇게 어렵구나라는 생각을 하게 되었다. 팀장이라는 부담감이 있었던 탓일까, 전체를 읽으려고 많은 노력을 하였다 덕분에 지식 뿐만 아니라 프로젝트에 대한 전반적인 공부도 많이 되었다. 부족한 점이 많지만, 다음을 위한 디딤발이라고 생각하고 앞으로도 열심히 해야겠다.

  • 🐙이경민 : 한달에 가까운 긴 팀프로젝트를 진행하면서, 아이디어 도출부터 DB 설계, 테이블 제작, 기능 코드 구현, 코드 병합, 에러 수정, 전체 코드 이해 및 발표까지 안해본 파트가 없던 것 같다. 기술적인 측면뿐만 아니라 전체를 보는 시야도 넓어질 수 있었던 팀 프로젝트였기에 만족스럽고, 다음 프로젝트에서는 MSA와 보안까지 고려해 제작해보고 싶다.

  • 🐋박민성 :이번 프로젝트를 하면서 팀원들간의 소통과 문서화의 중요성에 대해 알게 되었다. 회의때 구두로 결정한 사항이 개인마다 다르게 인식하고 있을 경우도 있었기에 자세하고 정확하게 문서화시켜야 한다는것을 알게되었다. 우리 팀은 프로젝트를 3주전부터 기획하고 팀원들끼리 공부하며 진행하였는데, 매일 수업이 끝난후 8시까지 남아서 모르는것을 서로 물어가보며 공부를 한 점이 굉장히 도움이 많이 되었다. 이덕분에 프로젝트 진행에 필요한 역량을 키울 수 있었다. 단순히 자바와 스프링의 이해도 뿐만 아니라 프로젝트를 진행하는 방법, 아이디어를 제시하고 프로젝트를 기획하는 방법, 깃 형상관리법, 팀원들과 소통을 하는 방법 등 전체적인 프로젝트를 진행할 때 굉장히 중요하다고 개인적으로 생각하는 부분에 많은 도움이 되었다. 아쉬운점들도 분명히 존재하지만, 만족했던 프로젝트이고 다음 프로젝트에는 아쉬웠다고 생각한 점들을 보안하여 더 노력해야겠다.

  • 🐰박재린 : 팀 구성 이후부터 지금까지 팀원들과 함께 아이디어 기획, DB설계, 서비스별 기능 코드 생성 및 병합 등의 모든 과정을 진행하면서 개인적으로 많이 성장 할 수 있었고, 협업하는 방법에 대해 많이 생각하는 계기가 되었다. 서로 분담했던 기능의 코드를 하나로 병합하는 과정에서 오류가 생기기도 했지만 팀원들끼리 매일 머리를 맞대고 고민하면서 함께 코드를 수정하여 마감 기한보다 일찍 성공적으로 웹 애플리케이션을 구현해낼 수 있었다. 모든 팀원들에게 그동안 정말 고생했다고 전하고 싶다.

  • 🐥고라희 : 이번 프로젝트를 위해 팀 전체가 3주 전부터 적극적으로 공부에 참여했습니다. 팀원들끼리 공통의 목표를 갖고 서로 도움을 주고 받으며 학습하는 과정이 매우 유익한 시간이었습니다. 프로젝트의 기획부터 DB 테이블 설계, Git 활용, 비즈니스 로직 등 다양한 영역에서 학습하고 적용하는 과정을 통해 자바와 스프링에 대한 실제 경험을 쌓을 수 있었습니다. 학습하고 적용하며 발전하는 과정에서 여러 가지 시행착오들이 있었지만, 팀원들과의 협업을 통해 성공적으로 프로젝트를 마무리할 수 있었습니다. 개인적으로는 프로젝트 진행 중 아쉬웠던 부분들을 보완하여, 앞으로 더 많은 학습을 통해 개선해내어갈 예정입니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published