내 인생 성장곡선 사이트 - Surf. 🏄🏻♂️

인생은 surfing 을 타는 것처럼 즐겁지만, suffering 또한 피할 수 없다.
피할 수 없다면 기록하고 공유하자! Surf 를 통해 🌊🏄♀️🏄🏄🏻♂️
Surf.의 백엔드 레포입니다 😊
👨💻팀원 소개
(사진) | ㅤ | ㅤ | ㅤ |
팀장, 개발자 | 스크럼 마스터, 개발자 | 개발자 | 개발자 |
📍프로젝트 목표 및 상세 설명
열심히 달려온 나 자신! 열심히는 하고 있는데 내가 얼마나 발전했는지 기록하는 공간은 없을까? 그냥 일기는 메모장에라도 적을 수 있고, 블로그는 이미 무수히 존재하고, 색다른 방법으로 동기부여 받고 기록하고 공유하는 그런 공간이 필요해! 🙆♀️
- 성장곡선으로 한눈에 내 인생을 돌아보기
- 남들의 성장곡선을 보며 동기부여도 받기
- 곡선의 특정 구간마다 기록도 남기기
- 곡선이 아닌 기록들만 모아서 보기
- 필요하다면 포트폴리오로도 사용 가능하기
🛠️개발 언어 및 활용 기술
개발 환경
- Springboot 로 웹 어플리케이션 서버를 구축했어요.
- 빌드도구는 Gradle을 사용했어요.
- 다양한 기능과 안정성을 위해 LTS 버전인 Java 17 버전을 사용했어요.
- Spring Data JPA(Hibernate) 로 객체 지향 데이터 로직을 작성했어요.
- QueryDSL 로 컴파일 시점에 SQL 오류를 감지해요. JPA 인터페이스로 해결하기 힘든 동적이고 복잡한 query를 보완하고 더 가독성 높은 코드를 작성할 수 있어요.
- 데이터베이스는 MySQL을 사용했어요.
Infrastructure
- AWS EC2를 사용해 서버를 구축했어요.
- S3 로 파일을 업로드하고 보관해요.
협업 관리
- Github Issue 으로 이슈를 관리해요.
- Git-flow 전략을 사용하여 브랜치를 관리해요.
- Slack / Gather / Notion 으로 소통해요.
- Postman 으로 작성한 API 문서를 통해 클라이언트와 소통해요.
CI/CD
- Github Actions 로 코드 퀄리티와 테스트를 검사해요.
- Jenkins 로 백엔드 코드의 지속적인 배포를 진행해요.
- Codacy 로 지속적인 코드 퀄리티 개선을 진행해요.
- JACOCO 로 테스트 커버리지를 검사해요.
Security
- Spring Security 를 사용했어요.
- 로그인 시에는 JWT 토큰을 발행하여 서버의 별도 저장소 없이 로그인을 유지할 수 있어요.
- CertBot 으로 Let’s Encrypt SSL 인증서를 발급받았어요.
- Nginx 가 프록시로 8080 포트를 바라보게 설정했어요.
⚙시스템 아키텍처

🏗️설계
ERD 설계

설계 문서
🤳데모 화면
로그인 | 메인 화면 - Surf 첫 페이지 | 메인 화면 - 특정 category 선택 |
(gif) | ㅤ | ㅤ |
게시글 작성 | 무한 스크롤 | 마이 페이지 - 내 정보 수정 |
(gif) | ㅤ | ㅤ |
ㅤ | ㅤ | ㅤ |
대시보드 | 카드 페이지 | 카드 페이지 - 해당 월별 기록 페이지 |
(gif) | ㅤ | ㅤ |
마이 페이지에서 이동 | 연도별 필터링, 해당 달의 작성 일수 확인 가능 | 카드 선택 시 |