타임캡슐 생성 후 친구들을 초대해 사진과 이야기를 공유하고, 지정된 날짜에 합쳐진 컨텐츠를 모두에게 전송하는 플랫폼
메인 페이지에서 캡슐을 생성할 수 있습니다.
개봉일이 지나지 않은 캡슐에서는 스토리를 추가하여 추억을 저장할 수 있습니다. 캡슐에는 친구를 추가하여 스토리를 나눌 수 있습니다. 단 개봉일 전까지는 자신이 올린 스토리의 내용만 확인 가능합니다.
개봉일이 지난 캡슐에서는 사진 페이지와 비디오 페이지를 선택할 수 있습니다
사진 페이지는 캡슐 생성 때 선택한 테마에서 스토리들을 확인할 수 있습니다.
영상 페이지에서는 스토리의 사진으로 제작된 비디오를 확인할 수 있습니다. 이후에 스토리를 선택하여 추가 비디오 제작이 가능합니다
Area | Tech Stack |
---|---|
Frontend | |
Backend | |
DevOps | |
Monitoring | |
etc |
swagger를 사용하여 API 명세서를 작성 하였습니다.
비교적 시간이 많이 걸리는 비디오 생성 작업은 Celery를 활용하여 비동기 처리됩니다.
Grafana + Prometheus ELK
Prometheus로 Django 매트릭을 수집하여 request,response를 분석하여 시각화 하였고 node exporter를 통해 서버의 메모리, cpu 사용량, network traffic 등을 분석하여 시각화 하였습니다.
또한 ELK를 활용하여 Nginx log를 수집해 요청별 횟수나 응답코드 등을 자세히 모니터링 할 수 있게 구성 하였습니다.
alertmanager 기능을 활용하여 cpu 과부하가 오거나 설정해 놓은 instance가 예상치 못하게 종료될 경우 slack으로 알림을 보내 실시간으로 처리할 수 있게 하였습니다.
비디오 제작에는 OpenCV, NumPy, MoviePy가 사용 됩니다.
캡슐이 개봉되면 유저가 추가한 이미지는 opencv가 다운로드 받습니다. 다운로드 받아진 이미지들은 numpy를 통해 이미지를 균일하게 resize하고, 색상 처리 작업을 진행합니다. 이후 처리 완료된 이미지는 MoviePy를 통해 mp3 파일과 합쳐지면서 영상 제작이 완료 됩니다.
$ git clone https://github.com/2023-Summer-BootCamp-Team-I/MemoryCapsule.git
- 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=
$ docker-compose up --build
Name | 박경은 | 김성훈 | 김윤아 | 정재빈 | 유재윤 | 이민기 |
---|---|---|---|---|---|---|
Profile | ||||||
role | Leader Frontend |
Frontend | Frontend | Backend DevOps |
Backend DevOps |
Backend DevOps |
GitHub | @devGEP | @koreaGorilla | @1-yuna | @JaeBin2019 | @yoojaeyoonGit | @kiminni |