Skip to content
@2023-Summer-BootCamp-Team-I

2023-Summer-BootCamp-Team-I

💊 MemoryCapsule

타임캡슐 생성 후 친구들을 초대해 사진과 이야기를 공유하고, 지정된 날짜에 합쳐진 컨텐츠를 모두에게 전송하는 플랫폼




Features


Login


Main Page

Create Capsule

메인 페이지에서 캡슐을 생성할 수 있습니다.



Unopened Capsule

개봉일이 지나지 않은 캡슐에서는 스토리를 추가하여 추억을 저장할 수 있습니다. 캡슐에는 친구를 추가하여 스토리를 나눌 수 있습니다. 단 개봉일 전까지는 자신이 올린 스토리의 내용만 확인 가능합니다.

Create Story



Invitation


Opened Capsule

개봉일이 지난 캡슐에서는 사진 페이지와 비디오 페이지를 선택할 수 있습니다

사진 페이지는 캡슐 생성 때 선택한 테마에서 스토리들을 확인할 수 있습니다.
영상 페이지에서는 스토리의 사진으로 제작된 비디오를 확인할 수 있습니다. 이후에 스토리를 선택하여 추가 비디오 제작이 가능합니다




💻 System Architecture

image




💡 Tech Stack

Area Tech Stack
Frontend
Backend
DevOps
Monitoring
etc



💽 ERD

image




📈 API

swagger를 사용하여 API 명세서를 작성 하였습니다.


user

image

capsule

image

story

image

video

image




📚 Asynchronous

비교적 시간이 많이 걸리는 비디오 생성 작업은 Celery를 활용하여 비동기 처리됩니다.

image



📊 Monitoring

Grafana + Prometheus ELK


Prometheus로 Django 매트릭을 수집하여 request,response를 분석하여 시각화 하였고 node exporter를 통해 서버의 메모리, cpu 사용량, network traffic 등을 분석하여 시각화 하였습니다.

또한 ELK를 활용하여 Nginx log를 수집해 요청별 횟수나 응답코드 등을 자세히 모니터링 할 수 있게 구성 하였습니다.

alertmanager 기능을 활용하여 cpu 과부하가 오거나 설정해 놓은 instance가 예상치 못하게 종료될 경우 slack으로 알림을 보내 실시간으로 처리할 수 있게 하였습니다.


Django

image

Node exporter

image

ELK

image




🎥 Video

비디오 제작에는 OpenCV, NumPy, MoviePy가 사용 됩니다.


image


캡슐이 개봉되면 유저가 추가한 이미지는 opencv가 다운로드 받습니다. 다운로드 받아진 이미지들은 numpy를 통해 이미지를 균일하게 resize하고, 색상 처리 작업을 진행합니다. 이후 처리 완료된 이미지는 MoviePy를 통해 mp3 파일과 합쳐지면서 영상 제작이 완료 됩니다.



🏁 How to Start

1. Clone Repository

$ git clone https://github.com/2023-Summer-BootCamp-Team-I/MemoryCapsule.git

2. Env Setting

  • backend/db/.env
MYSQL_DATABASE=
MYSQL_ROOT_USER=
MYSQL_ROOT_PASSWORD=
  • backend/django_back/django_back/.env
SECRET_KEY=
JWT_SECRET_KEY=
ALGORITHM=

DATABASE_NAME=
DATABASE_USER=
DATABASE_PASS=
DATABASE_HOST=
DATABASE_POST=

AWS_REGION=
AWS_STORAGE_BUCKET_NAME=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=

GRAFANA_API_KEY=
  • backend/django_back/api/.env (메세지 전송용)
ACCESS_TOKEN=
REST_API_KEY=
HOST_PHONE_NUMBER=
CAPSULE_IMAGE_ID=
  • backend/django_back/api/lib/config.ini (메세지 전송용)
[AUTH]
api_key = 
api_secret = 

[SERVER]
domain = 
protocol = 
prefix =
  • frontend/.env
VITE_APP_KAKAO_API_KEY=

3. Run Docker

$ docker-compose up --build


👨‍👩‍👧‍👦 Team

Name 박경은 김성훈 김윤아 정재빈 유재윤 이민기
Profile
role Leader
Frontend
Frontend Frontend Backend
DevOps
Backend
DevOps
Backend
DevOps
GitHub @devGEP @koreaGorilla @1-yuna @JaeBin2019 @yoojaeyoonGit @kiminni

Pinned Loading

  1. MemoryCapsule MemoryCapsule Public

    TypeScript 1

Repositories

Showing 4 of 4 repositories
  • .github Public
    2023-Summer-BootCamp-Team-I/.github’s past year of commit activity
    0 0 0 0 Updated Aug 4, 2023
  • MemoryCapsule Public
    2023-Summer-BootCamp-Team-I/MemoryCapsule’s past year of commit activity
    TypeScript 0 1 25 1 Updated Aug 4, 2023
  • frontend Public
    2023-Summer-BootCamp-Team-I/frontend’s past year of commit activity
    CSS 0 0 0 0 Updated Jul 5, 2023
  • backend Public
    2023-Summer-BootCamp-Team-I/backend’s past year of commit activity
    0 0 0 0 Updated Jul 5, 2023

Top languages

Loading…

Most used topics

Loading…