Skip to content

TrueEchoProject/TrueEcho_Main

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

565 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrueEcho

진실된 모습으로 소통하는 앱

KakaoTalk_20240624_212207785 Hits


✨ 프로젝트 소개

비전 및 목표

  • TrueEcho는 사용자가 자신의 진솔한 모습을 공유
  • 네트워킹을 통해 자존감을 높이며 지속적인 성장을 도모할 수 있는 SNS 플랫폼
  • 친구들과 자연스러운 일상을 나누고, 재미있는 콘텐츠를 통해 소통

기술적 목표

프론트엔드

  • React Native를 활용한 사용자 친화적인 UI/UX 개발

백엔드

  • 엔티티 연관관계 & JPA 쿼리 수정으로 성능 66.7/97% 최적화
  • Firebase Cloud Messaging(FCS)를 활용한 실시간 알림 기능 구현
  • 친구 추천 FOF 알고리즘 설계 및 개발
  • Azure Blob Storage 를 통해 이미지 URL 형태로 DB에 저장
  • GitHub Actions을 통해서 AWS EC2 서버에 배포 자동화 구현
  • Spring Boot를 활용한 RESTful API 설계 및 구현

📚 기술 스택

프론트엔드

React Native Badgejavascript BadgeFigma Badge

백엔드

Spring Boot BadgeMariaDB BadgeFirebase BadgeREST API Badge

다운로드

TrueEchoQR

다운로드 링크

Download the file

📑 프로젝트 노션 링크

Notion


🎯 기술적 도전

백엔드

👨‍👩‍👧‍👦 팀원 소개

서희준 박준형 백효영 박신형
Backend Backend Frontend Frontend
@HeeJohn @jun10920 @HyoYoung @HolyMoly

📅 계획

📌 요구 및 CSC, CSU 분석

  • 타 게시물에 대한 호기심
  • 하루에 한 번 무작위 시간에 사진 촬영 알림
  • 현실적인 상황을 컨텐츠로 생성
  • 복잡한 기능이 없는 직관적인 촬영 단계
  • 게시물을 통해서 진행하는 재미 컨텐츠
  • 쉬운 친구 추가 & 삭제

기능 요구사항

요구사항에서 비롯된 CSC

CSC에서 비롯된 CSU

개발 세부 내용(계속 추가)

개발 세부 내용
항목 하위 항목
회원 관리 회원, 회원가입 [시간대 설정], 로그인: one-way 암호화, 로그아웃 (토큰 삭제), 회원 정보 수정, 탈퇴, 차단, 핀 설정 및 삭제 (나중으로 변경)
회원 식별 (토큰) 토큰 생성, 토큰 검증, 토큰 재생성, 예외처리
친구 관리 친구 추가, 친구 삭제, 친구 추천 알고리즘 (전화번호로 찾기, 친구 동기화)
사진 & 촬영 Azure 구축, 이미지 업로드, URL 저장, Post 테이블에 저장
게시물 게시물 출력 (친구, 랜덤 게시물), 정렬, 필터링, 댓글, 좋아요, 게시물에서 친구 추가
투표 투표지 구축, 투표지 유저 출력, 뽑기 알고리즘, 투표 결과 저장
랭킹 주차별 랭킹 정보 최신화 로직 (일요일 8시), 쿼리 1: WHERE week -> vote_id로 group(), 쿼리 2: target_user로 group() -> 카운트 -> 탑 3
알림 무작위 알림 로직, Web socket 구현, 랭크 알림 (일요일 8시), 투표 결과 알림 (투표 받을 시 익명 x), 댓글 알림, 좋아요 알림
설정 기능 알림 권한 설정, 노출 설정, 시간대 수정
에러 처리 & 최적화 에러 처리, 최적화
배포 배포
ORM - 엔티티 각 테이블 연관 관계 점검, 앤티티 정의, 편의 메서드 작성
각 단계별 테스트 유닛 테스트, 통합 테스트 진행

🏛️ 서비스 구성

아키텍처

시스템 흐름도

데이터베이스 ERD

erd

ERD 설명

테이블 1: Users
컬럼 타입 설명
user_id BIGINT Primary Key
connect_by_friend BIT
user_birthday DATE
created_at DATETIME
rank_id BIGINT Foreign Key, references Ranks(rank_id)
user_name VARCHAR(20)
user_nick_name VARCHAR(20)
refresh_token VARCHAR(255)
user_email VARCHAR(255)
user_location VARCHAR(255)
user_password VARCHAR(255)
user_gender ENUM
user_profile_url TEXT
user_role ENUM
fcm_token VARCHAR(255)
notification_setting_id BIGINT Foreign Key, references Notification_setting(notification_setting_id)
x DOUBLE
y DOUBLE
테이블 2: Votes
컬럼 타입 설명
vote_id BIGINT Primary Key
vote_title VARCHAR(255)
vote_category ENUM
테이블 3: Vote_results
컬럼 타입 설명
vote_result_id BIGINT Primary Key
created_at DATETIME
user_id_target BIGINT Foreign Key, references Users(user_id)
user_id_voter BIGINT Foreign Key, references Users(user_id)
vote_id BIGINT Foreign Key, references Votes(vote_id)
테이블 4: Notifications
컬럼 타입 설명
notifications_id BIGINT Primary Key
created_at DATETIME
body VARCHAR(255)
content_id BIGINT
noti_type INT
sender_id BIGINT Foreign Key, references Users(user_id)
title VARCHAR(255)
like_id BIGINT Foreign Key, references Likes(like_id)
comment_id BIGINT Foreign Key, references Comments(comm_id)
rank_id BIGINT Foreign Key, references Ranks(rank_id)
vote_result_id BIGINT Foreign Key, references Vote_results(vote_result_id)
테이블 5: Ranks
컬럼 타입 설명
rank_id BIGINT Primary Key
rank_level INT
rank_week DATE
테이블 6: Likes
컬럼 타입 설명
like_id BIGINT Primary Key
post_id BIGINT Foreign Key, references Posts(post_id)
user_id BIGINT Foreign Key, references Users(user_id)
테이블 7: Posts
컬럼 타입 설명
post_id BIGINT Primary Key
created_at DATETIME
user_id BIGINT Foreign Key, references Users(user_id)
post_title VARCHAR(255)
post_status ENUM
post_url_back TEXT
post_url_front TEXT
테이블 8: Pins
컬럼 타입 설명
pin_id BIGINT Primary Key
created_at DATETIME
post_id BIGINT Foreign Key, references Posts(post_id)
user_id BIGINT Foreign Key, references Users(user_id)
테이블 9: Comments
컬럼 타입 설명
comm_id BIGINT Primary Key
created_at DATETIME
main_comment_id BIGINT
post_id BIGINT Foreign Key, references Posts(post_id)
user_id BIGINT Foreign Key, references Users(user_id)
comment_content TINYTEXT
notifications_id BIGINT Foreign Key, references Notifications(notifications_id)
테이블 10: Notification_setting
컬럼 타입 설명
notification_setting_id BIGINT Primary Key
setting_noti_comment BIT
setting_noti_friend BIT
setting_noti_like BIT
setting_noti_time DATETIME
setting_noti_rank BIT
setting_noti_vote BIT
setting_noti_service BIT
setting_noti_in_rank BIT
setting_noti_new_rank BIT
setting_noti_rival BIT
setting_noti_time_status ENUM
테이블 11: Suspended_users
컬럼 타입 설명
suspended_date DATE
suspended_user_id BIGINT Primary Key, references Users(user_id)
user_id BIGINT Primary Key, references Users(user_id)
테이블 12: Blocks
컬럼 타입 설명
block_id BIGINT Primary Key
block_user_id BIGINT Foreign Key, references Users(user_id)
user_id BIGINT Foreign Key, references Users(user_id)
테이블 13: Friends
컬럼 타입 설명
friend_id BIGINT Primary Key
send_user_id BIGINT Foreign Key, references Users(user_id)
target_user_id BIGINT Foreign Key, references Users(user_id)
friend_status ENUM

⚒️ 주요 기능

🔔 알림

무작위 알림이 발생하면 3분 안에 사진을 찍어야합니다.
다른 알림도 유저들 간에 발생합니다.

기능 설명
무작위 알림 <-> 촬영 시간 비교 (2분)
일반 공지사항 / 댓글 / 좋아요

📷 카메라

커스텀 카메라로 본인과 주변 모습을 담습니다.

기능 설명
전/후면 촬영 현재 자신의 모습과 주변 환경을 담기 위한 촬영
줌 인/아웃 기본적인 줌인/줌아웃 기능 구현
플래쉬 플래쉬 ON/OFF/AUTO 기능 구현

👍 메인 피드

게시물에 좋아요와 댓글을 달아 친구들과 소통할 수 있습니다.

기능 설명
전/후면 스왑 유저의 얼굴 사진과 배경 사진의 자유로운 전환
좋아요 유저끼리의 소통을 위한 좋아요 기능 구현
댓글 유저끼리의 소통을 위한 댓글 기능 구현

🗳️ 커뮤니티

카테고리에 맞게 투표할 수 있는 기능을 제공합니다. 투표 결과에 따라 사용자 랭킹이 결정됩니다.

기능 설명
투표 랜덤한 질문 + 유저 컨텐츠
투표 결과 축적된 투표결과 랭킹화

👥 친구 관리

친구 관리 및 추천 기능을 통해 네트워킹을 강화할 수 있습니다.

기능 설명
친구추천 유저간 친구 관계를 식별하여 친구 추천
친구관리 보낸 친구요청 / 받은 친구요청 확인하여 원활한 친구관리

About

'진실'된 모습을 지향하는 무작위 알림 SNS 플랫폼

Resources

Stars

Watchers

Forks

Contributors

Languages