본문 바로가기
프로젝트/HappyHouse

[HappyHouse] Project 최종 결과 (FrontEnd+BackEnd+DataBase)

by 29살아저씨 2021. 12. 3.
반응형

1. 기획배경 및 목표

- 이사를 하고자 할 동네에서 원하는 주택을 찾아낼 목적으로 
  매매/전,월세 따른 아파트/연립다세대별 거래 정보를 볼 수 있다.

- 공공 데이터에 가져온 주택 거래 정보 xml 파일을 Parsing하여

  아파트/다세대 주택 별, 매매/전,월세 별 검색 기능을 제공

 

2. 개발인원 

- 2명

 

3. 일정 계획표

 

4. 개발환경 및 주요 사용 기술

 

FrontEnd

- Vue

  기존의 MPA 방식에서 중복되는 데이터를 받아오는 문제를 해결하기 위해 SPA방식을 사용하여 갱신이 필요한 특정

  부분만 데이터를 가져와 바인딩 하는 방식을 사용.

- VueRouter

  Vue를 이용하여 SPA웹을 구축하기 위해, 라우팅 제어를 위해 사용.

  HappyHouse의 모든 페이지 이동은 Router를 이용하여 이동

- Vuecli

  Vuecli를 통해 생성된 기본 골격을 토대로 프로젝트를 구현.

- Vuex

  각 컴포넌트 간 데이터 공유 및 관리를 위해 state관리 라이브러리인 Vuex를 사용.

Vuex 구조

  각 기능별 구현을 편히라게 하기위해 modules로 나눠서 관리

 

BackEnd

- MVC Pattern

  BackEnd는 MVC 패턴을 이용하여 비즈니스 처리로직, 사용자 인터페이스 요소를 분리시켜

  서로 영향없이 개발하기 수월하도록 하기위해 사용.

BackEnd 구조

5. 개발 결과

FrontEnd - Home

- css 텍스트 효과를 이용하여 깔끔하지만 생동감있는 글자를 만들어주었다.

- vue-argon-template를 이용하여 디자인 하였다.

FrontEnd - NavBar

로그인 전 NavBar                                                                             로그인 후 NavBar

 

FrontEnd - 회원가입, 로그인 화면

회원가입                                                                                           로그인

 

FrontEnd - 회원정보

 

FrontEnd - 회원정보 수정

- 아이디는 read-only처리를 하여 수정하지 못하게 하였고, 이름, 이메일, 비밀번호만 수정 가능하게 하였다.

회원정보수정 페이지                                                                  이메일 변경 후 회원정보

 

FrontEnd - 전체 회원목록

- 전체 회원정보는 admin계정만 접근 가능하게 구현

 

FrontEnd - 유효성 검사

- 전체 유효성 검사

  기본적으로 각 입력란에 빈칸이 존재하면 경고창을 통해 빈칸임을 알려주고, 

  이메일 인증 시 인증을 하지 않고 회원가입을 클릭할 시 인증을 하라는 경고창이 뜬다.

 

- 아이디 중복검사

  이미 등록된 아이디이면 "이미 사용중인 아이디입니다." 라는 경고창이 뜨고

  사용할 수 있는 아이디이면 "사용할 수 있는 아이디입니다." 라는 경고창이 뜬다.

이미 사용중인 아이디                                                                     사용할 수 있는 아이디

 

- 이메일 인증

  이메일을 입력하고 인증번호 발송을 클릭하면 인증번호 입력란이 뜬다.

  일치하지 않는 인증번호를 입력하면 "인증번호가 일치하지 않습니다." 라는 경고창이 뜨고

  인증번호가 일치하면 인증번호 입력란이 사라진 뒤 회원가입이 가능하다.

이메일 인증란                                                                            인증번호 불일치
인증 후 회원가입 성공

 

FrontEnd - 이메일 인증

- 인증번호 발송을 클릭하면 BackEnd에서 8자리의 임의의 인증코드를 생성하여 입력된 이메일로 전송한다.

 

FrontEnd - 아파트 검색 메인

- selectbox를 통해 시도, 구군을 선택할 수 있다.

- vuex를 통해 시도를 선택하면 그 정보를 state에 저장하고 시도에 맞는 구군을 출력해준다.

 

FrontEnd - 아파트 검색 및 페이징

- 원하는 시도, 구군을 선택하면 그에 맞는 아파트 정보를 공공데이터포털의 '국토교통부_아파트매매 실거래 상세 자료' 

  정보를 통해 지정된 개수만큼 불러와 10개씩 페이징처리를 하여 사용자에게 보여준다.

아파트 시도 구군 선택                                                             아파트 검색 결과 페이징 처리

 

FrontEnd - 아파트 선택 지도 marker 설정

- 카카오맵 API를 이용하여 지도를 읽어왔고,

  목록의 아파트 이름을 클릭하면 공공데이터 파일에 있는 구군, 도로명, 도로번호 정보를 이용하여

  위 경도로 변환 후 지도에 marker를 찍어주었다.

 

FrontEnd - QnA 페이지

 

FrontEnd - QnA 답변등록

 

FrontEnd - QnA  글 수정, 삭제

- 작성자만 게시글을 수정, 삭제 할 수 있도록 구현하였다.

 

FrontEnd - 공지사항

- 공지사항은 관리자 계정으로 로그인 하였을 때에만 글쓰기, 수정, 삭제가 가능하고

  일반 회원들은 글 읽기만 가능하다.

관리자 계정 로그인                                                                          일반 계정 로그인

 

 

UseCaseDiagram

- 관리자와 사용자의 이용 가능한 기능들은 아래와 같다.

 

BackEnd - Class Diagram

 

DataBase - ER Diagram

- 회원정보를 관리하는 user 테이블

- 공지사항을 관리하는 board 테이블

- QnA를 관리하는 qna 테이블

- 아파트 정보를 관리하는 house관련 테이블

 

 

6. 기대효과

- 이사를 하고자 할 동네에서 원하는 주택을 찾아낼 목적으로 
  매매/전,월세 따른 아파트/연립다세대별 거래 정보를 볼 수 있다.

- 공공 데이터를 이용하여 아파트/다세대 주택 별, 매매/전,월세 별 검색 기능을

  제공하기 때문에 정확한 정보를 제공할 수 있다.

- 사이트 이용 시 궁금한 점이 생기면 QnA 게시판을 통해 질문, 답변을 받을 수 있다.

- 아파트 위치를 볼 수 있는 지도를 통해 주변 교통과, 상권 정보를 같이 볼 수 있다.

 

7. 개발 후기

이번 프로젝트를 통해 한학기 동안 배웠던 웹에 대한 부분들을 직접 적용해 볼 수 있어서 좋았다.
프론트엔드, 백엔드, DB를 이용하여 하나의 결과물을 낼 수 있어서 기능이 부족한 부분도 많고, 

추가로 더 하지 못했다는 아쉬움이 더 크지만 팀원과 함께 역할을 나눠 개발을 하면서 하나의 결과물이 나올 때 마다 

뿌듯했고, 이번 프로젝트를 통해 내가 어떤 부분에 흥미가 있고, 관심을 가지게 된 계기가 된 것 같아 뿌듯했다.

 

 

 

* 기타 개발하면서 참고한 사이트

- node-sass 는 node.js 버전에 맞춰줘야함
https://juntcom.tistory.com/167
- node.js ver.14.16.1설치
https://nodejs.org/download/release/v14.16.1/
- node-sass node.js 14버전에 맞춰서 설치 (Node Sass version 6.0.0 is incompatible with ^4.0.0 || ^5.0.0.)
npm install node-sass@4.14.1 
- vue template argon
https://www.creative-tim.com/product/vue-argon-design-system#
- vue 무료 템플릿 라이브러리
https://ordinary-code.tistory.com/9
-css 배경 패턴
http://rwdb.kr/css_pattern/
-css 아이콘 사이즈 조절
https://stackoverflow.com/questions/14482249/setting-size-for-icon-in-css/22810530
-navbar 상단고정(position:fixed)
https://www.daleseo.com/css-position-fixed-navigation/
- navbar 맨 앞으로 나오게 고정(z-index)
https://wonit.tistory.com/315 
- css 마우스 가져다댔을 때 손모양
https://ming-jee.tistory.com/65
- 웹사이트 css 텍스트 효과
https://www.creativosonline.org/ko/efectos-css-texto.html#Texto_en_sombra

반응형

댓글