Skip to content

S3기반의 공유앨범 서비스 - SSAFY 자율프로젝트

Notifications You must be signed in to change notification settings

twoConstant/ukkikki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation





Ukkikki 📸

우리끼리, 사진 공유 SNS

2024. 04. 12 ~ 2024. 06. 20



🔗 목차



📃 서비스 개요

세상에서 가장 편한 이미지 공유 서비스, Ukkikki🍌!

번거로움은 Skip, 촬영만 해도 자동으로 업로딩
사진 정리는 AI가 알아서 척척
추억은 공유해야 제맛. 메모와 피드, 채팅까지.
물론 이 모든 내용은, 쉿! '우리끼리만' 확인!


👨‍👩‍👧‍👦 팀원 소개

Front-End Back-End Full-Stack
👑 박병조 (Leader) 📊 이해진 🎥 박지훈 💾 최용수 🤖 이상수 📸 양성규
PM
로그인 및 유저 정보 관리 UI/UX
Axios 인터셉터 처리
파티 관련 UI/UX
게시판 관련 UI/UX
2차 로그인 UI/UX
카메라 UI/UX
이미지 그룹 앨범 UI/UX
디자인 총괄
디렉토리 관리 UI/UX
파일 관리 UI/UX
실시간 알람 UI/UX
실시간 채팅 UI/UX
암호화 S3 이미지 조회
AI 인물 분류 서버 개발
S3 암호화 로직 구현
S3 파일 업로드 다운로드 API 개발
그룹화 목록 / 상세 API 개발
그룹 관리 API
게시판 API
실시간 알람 API
실시간 채팅 API
디렉토리 관리 API
파일 관리 API
ERD 설계 및 구현
OpenAI 연동
Oauth2 로그인
회원 관리 API
댓글, 대댓글 UI/UX
댓글, 대댓글 API
댓글 언급 UI/UX
커스텀 메시지 큐 서버 개발


🛠 기술 스택

🎨 FrontEnd



💾 BackEnd


🤖 AI

💻 Infra

💬 Cooperation



💎 주요 기능

분류 기능 내용
사진업로드 S3 객체 암호화 SSE-C 객체 암호화로 사용자 업로드 사진 정보 암호화
AI 분류 GPT OpenAI를 이용하여 사용자가 업로드한 사진을 사물별로 그룹화합니다.
인물분류 AI Face_recognition 라이브러리와 flask 서버를 활용한 인물분류 서버 구현. 사용자가 사진을 업로드 할 때마다 실시간 인물분류 정보 업데이트
사진 다운로드 다운로드 프리픽스 다운로드시 파일명 프리픽스 지정
카메라/사진 AI분류 그룹화 OpenAI를 이용하여 사용자가 업로드한 사진을 사물별로 그룹화합니다.
UI 사용자는 기존 디바이스에서 사용하던 카메라와 유사한 사용감을 가질수 있다.
자동업로드 사용자는 본인이 설정한 자동업로드 파티가 있다면 촬영한 사진이 자동으로 해당 파티앨범에 업로드 된다.
메모 사진 메모 등록, 수정, 삭제 기능을 지원합니다.
좋아요 사진 좋아요 등록, 취소 기능을 지원합니다.
그룹 그룹 링크 그룹 링크를 이용하여 사용자는 파티에 가입할 수 있습니다.
자동업로드 그룹 설정 사용자는 사용자가 속한 파티들의 목록을 확인할 수 있고, 손쉽게 자동업로드 될 파티를 지정할 수 있다.
참여 사용자는 본인이 속한 파티에서만 이용할 프로필사진과 이름을 설정할 수 있다.
파티 정보 관리 호스트 사용자는 본인이 개설한 파티의 썸네일사진과 이름을 변경할 수 있다
암호체크 그룹 고유 암호
게스트 모드 사진 다운로드를 위한 게스트 모드를 지원합니다.
권한 설정 권한 부여를 이용한 기능 사용 제어
파티원 차단/추방 파티장은 파티원을 차단/추방할 수 있습니다.
차단된 파티원은 다시 파티에 들어올 수 없습니다.
실시간 채팅 Web Socket을 이용하여 파티원끼리 채팅 대화를 할 수 있습니다.
알람 바로이동 알람을 클릭하면 컨텐츠로 바로 이동할 수 있습니다.
게시판 댓글/대댓글 사용자는 게시판에 자신의 댓글을 작성할 수 있습니다.
기존 댓글에 대댓글을 작성할 수 있습니다.
태그 댓글에 태그를 이용하여 원하는 파티원을 호출할 수 있습니다.
디렉토리 폴더 생성/이동 폴더를 만들고 이동하여 사용자가 직접 그룹화를 가능하게 하도록 구현하였습니다.
사진 복사/이동 사진 원본을 이동시키거나 사진을 복사하여 다른 디렉토리에 생성할 수 있습니다.
쓰레기통 사진/폴더 복구 후위 순회 BFS 탐색을 통해서 삭제 폴더 내부의 모든 파일에 대해 전체 경로를 탐색하여 휴지통 table에 전체 경로를 저장하여 어떤 경우에도 완전 복 원이 가능하도록 하였습니다.
사진/폴더 삭제 파일 보관 기간을 2주로 설정하여 해당 기간이 지나면 파일이 삭제 되도록 하였습니다..
멤버 소셜 로그인 사용자는 카카오톡을 이용하여 서비스에 가입할 수 있습니다.
간편 비밀번호 4자리 숫자로 이루어진 간편비밀번호를 통해 본인이 속한 그룹 키들을 손쉽게 관리할 수 있다.
JWT 토큰 토큰을 이용한 DB의존성을 제거한 인증방식
SSE KEY 관리 대부분의 이미지(카카오톡 프로필을 제외한 모든 이미지)는 S3서버에 암호화된 키를 거쳐 저장되고, 해당 키를 모르면 사진을 볼 수 없다. 해당 키는 상단의 간편비밀번호를 통해 로그인 시에 사용자가 속한 모든 그룹키를 받아온다.
보안 암호화 파티키를 이용하여 파티내 컨텐츠를 암호화하여 저장 합니다.


📚 명세서



💡 시스템 아키텍처



📐 ERD



💝 서비스 실사용 화면

🧡 로그인 회원가임

  • 카카오 로그인 API를 이용하여 로그인.
    최초 가입시 간단비밀번호 설정.
    이후 로그인 시 카카오 로그인과 간편 비밀번호 입력으로 로그인
로그인

🧡 카메라, 디폴트 업로딩 그룹 설정

  • 모바일 기기의 카메라를 통해 촬영시,
    디폴트 업로딩 그룹으로 사진이 자동 업로드 됩니다.
  • 업로딩 그룹은 그룹 목록과 설정에서 변경 가능합니다.
카메라 촬영 업로딩 그룹 설정

💛 그룹 생성

  • 그룹 이미지와 그룹명을 입력, 그룹 비밀번호 설정을 완료하여 그룹을 생성합니다.
  • 그룹 링크 생성을 통하여 그룹원을 초대할 수 있습니다.
그룹 생성 그룹 링크 생성

💚 그룹 참여

  • 파티 링크를 통해 그룹에 참여할 수 있습니다.
  • 파티 링크는 4시간 동안만 유지됩니다.
  • 그룹 비밀번호를 입력한 후 로그인 참여와 게스트 참여를 선택하여 그룹에 참여할 수 있습니다.
  • 게스트 참여의 경우 사진 조회 및 다운로드 외의 접근이 제한됩니다.
파티 비밀번호 입력 참여 방식 선택

💙 멤버 관리

  • 그룹의 호스트는 참여 멤버에 대한 관리 권한을 갖습니다.
  • 멤버는 뷰어와 에디터로 나눠지며 에디트 승급은 그룹 호스트만 지정 가능합니다.
  • 호스트는 멤버를 추방하거나 차단할 수 있습니다.
  • 호스트의 권한을 다른 유저에게 위임할 수 있습니다.
권한 설정 멤버 추방 멤버 차단 호스트 위임

💙 그룹 관리

  • 그룹의 호스트는 그룹 이미치 및 그룹 이름을 변경할 수 있습니다.
  • 그룹의 호스트는 그룹의 비밀번호를 변경할 수 있습니다.
그룹명, 사진 변경 그룹 비밀번호 변경

💙 그룹 유저 프로필 변경

  • 유저는 그룹마다 별도의 프로필을 생성할 수 있습니다.
유저 프로필 변경

💙 자동 분류

  • AI를 통한 20가지 기준 자동 사진 분류 기능을 제공합니다.
  • 해당 화면에서 사용자가 좋아요 누른 사진의 모음도 확인할 수 있습니다.
자동 분류 목록 및 상세

💙 그룹 앨범

  • 업로드된 사진의 목록을 확인할 수 있습니다.
  • 그룹의 사진을 다운로드 할 수 있습니다.
  • 사진 다운로드와 좋아요 여부를 확인할 수 있습니다.
  • 사진이나 폴더를 휴지통으로 보낼 수 있습니다.
  • 폴더 구조의 파일 관리 시스템으로 사진 데이터를 관리할 수 있습니다.
그룹 앨범 사진 다운로드 사진 다운로드 이력 사진 삭제
폴더 생성 사진 이동 사진 복제 폴더 삭제

💙 사진 상세 조회

  • 큰 이미지를 조회할 수 있습니다.
  • 사진에 메모를 남길 수 있습니다.
  • 사진에 좋아요를 남길 수 있습니다.
사진 상세 조회 사진 메모 사진 좋아요

💙 피드

  • 게시글을 생성하고 조회할 수 있습니다.
  • 게시글 작성시 디바이스 사진과 그룹앨범 사진을 첨부할 수 있습니다.
피드 게시글 작성

💙 게시글 상세

  • 게시글 컨텐츠를 확인할 수 있습니다.
  • 댓글을 남길 수 있습니다.
  • 댓글에 언급 기능을 통해 특정 대상에게 알람을 보낼 수 있습니다.
게시글 상세 및 댓글

💙 채팅

  • 그룹원 간에 실시간 채팅 기능을 제공합니다.
채팅

💙 휴지통

  • 휴지통의 파일은 2주간 보관 후 자동 삭제 처리됩니다.
  • 파일 및 폴더을 완전 삭제할 수 있습니다.
  • 파일 및 폴더를 복원할 수 있습니다.
완전 삭제 복원

💙 알람

  • 게시글에 댓글 작성시 게시글 작성자에게 알람이 전송됩니다.
  • 게시글 댓글에 대댓글 작성시 댓글 작성자에게 알람이 전송됩니다.
  • 파티 비밀번호 변경시 모든 파티원에게 알람이 전송됩니다.
  • 게시글 댓글에서 언급시 언급 대상에게 알람이 전송됩니다.
  • 알람을 클릭하여 알람이 발생한 위치로 바로 이동할 수 있습니다.
알람 수신 / 바로가기

💙 앱 설정

  • 디폴트 업로드 그룹을 설정할 수 있습니다.
  • 홈 화면을 설정할 수 있습니다.
홈 화면 설정

SequenceDiagram

그룹 비밀번호 설정

그룹 참여

로그인 키그룹 조회

이미지 업로드

이미지 조회

사진 휴지통에서 영구 삭제


About

S3기반의 공유앨범 서비스 - SSAFY 자율프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published