[SNS클론코딩] 1. 프로젝트 생성 및 요구사항 분석

지윤·2021년 8월 20일
1

Spring

목록 보기
6/7

Springboot + JPA + jsp를 사용하여 인스타그램 클론 코딩 프로젝트를 10일동안 만들었다. 배우면서 메모해뒀던 내용을 간단히 정리해보려고 한다.

AWS EC2, RDS를 사용하여 배포를 하면 추후 해당 내용도 정리할 예정...☆

프로젝트 생성

  • Java 11, Maven, IntelliJ, Git 사용

Dependencies(pom.xml)

<dependencies>
	<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <!-- qlrm -->
        <dependency>
            <groupId>org.qlrm</groupId>
            <artifactId>qlrm</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!-- 시큐리티 태그 라이브러리 -->
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
        </dependency>

        <!-- JSP 템플릿 엔진 -->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jasper</artifactId>
            <version>9.0.43</version>
        </dependency>

        <!-- JSTL -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

프로젝트 구조

이번 프로젝트는 템플릿 엔진을 Thymeleaf대신 JSP를 사용하여
webapp/WEB-INF/views 폴더를 생성했다.



요구사항 분석

1. 기능

기능은 크게 아래와 같이 4가지로 나뉘며, 상세한 내용은 개별 게시글에 정리해두려고 한다.

1. 로그인, 회원가입

2. 프로필 페이지

  • 프로필 사진 변경
  • 사진 업로드
  • 회원정보 변경
  • 구독/구독취소
  • 구독리스트

3. 인기 게시물 페이지

  • 좋아요 많은 순의 게시물 나열
  • 해당 사용자 페이지로 이동

4. 스토리 페이지

  • 좋아요/좋아요 취소
  • 댓글 등록/삭제

2. 도메인 모델


도메인 모델은 댓글, 사진, 좋아요, 구독, 사용자 5가지이다.
상세 코드는 Github 참고

3. 페이지(화면)

  1. 로그인

  2. 회원가입

  3. 프로필 페이지
    사용자 정보 및 사용자가 업로드한 게시물을 보여주는 페이지이다.

  4. 구독리스트
    사용자가 구독하고 있는 사람들을 보여준다.

  5. 사진 업로드

  6. 회원정보 변경

  7. 인기 게시물 페이지
    전체 사용자들의 게시물 중에서 인기 게시물(좋아요를 많이 받은 순서)을 보여준다.

  8. 스토리 페이지
    사용자가 구독한 사람들이 올린 게시물을 시간순으로 보여준다. 스크롤을 내려 계속해서 게시글을 볼 수 있다.

profile
헬로🙋‍♀️

0개의 댓글