배포 주소 : https://heartmark.duckdns.org/
마음자국은 하루하루의 순간을 사진 · 감정 · 장소 세 가지 축으로 기록하는 위치 기반 다이어리 서비스입니다. 지도 위에 남긴 기록은 나만의 감정 지도가 되고, 원하는 기록만 골라 친구에게 마음 편지처럼 전할 수 있습니다.
| 기능 | 설명 | 담당 앱 |
|---|---|---|
| 감정 기록 | 사진과 함께 장소·감정을 기록하고 상세 조회·수정·삭제 | records |
| 지도 탐색 | Kakao Maps 기반 장소 검색 및 지도 위 기록 확인 | locations |
| 다이어리 · 캘린더 | 월별 캘린더와 목록으로 내 기록 모아보기 | diary |
| 배경음악 | 기록마다 분위기에 맞는 BGM 연결 | bgm |
| 친구 | 초대 링크로 친구 추가, 요청 수락/거절, 친구 목록 관리 | friendships |
| 마음 편지 | 친구에게 기록 공유, 장소 공개 여부 선택, 공유 기록에 댓글 | record_sharing |
| 소셜 허브 | 친구 관리, 공유받은 기록, 보낸 기록을 한 곳에서 확인 | social_hub |
| 계정 | 이메일 가입/로그인, Google · Naver · Kakao 소셜 로그인, 캐릭터 온보딩, 탈퇴 | accounts |
| 마이페이지 | 프로필 확인 및 관리 | mypage |
| Backend | |
| Frontend | |
| Database | |
| Map / Auth | |
| Infra |
flowchart LR
User(["사용자"]) -->|HTTPS| Nginx["Nginx\n(리버스 프록시 · 정적/미디어 서빙)"]
Nginx -->|proxy_pass| Gunicorn["Gunicorn\n(WSGI, systemd 관리)"]
Gunicorn --> Django["Django App\n(HeartMark)"]
Django --> DB[("SQLite")]
Django -->|OAuth| Social["Google · Naver · Kakao"]
Django -->|지도 API| KakaoMap["Kakao Maps"]
운영 서버 배포 절차 보기
source venv/bin/activate
python manage.py migrate
python manage.py collectstatic --noinput
python manage.py check --deploy
sudo systemctl restart heartmark- Python 3.11+
- pip, venv
# 1. 가상환경 생성 및 활성화
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS / Linux
# 2. 의존성 설치
pip install -r requirements.txt
# 3. 환경 변수 설정
copy .env.example .env # Windows
# cp .env.example .env # macOS / Linux
# .env 파일을 열어 값 채우기
# 4. 마이그레이션 및 서버 실행
python manage.py migrate
python manage.py runserver서버 실행 후 http://127.0.0.1:8000/으로 접속합니다.
.env.example을 복사해 .env를 만들고 아래 값을 채웁니다.
| 변수 | 설명 |
|---|---|
SITE_DOMAIN |
서비스 도메인 (로컬은 127.0.0.1:8000) |
SITE_NAME |
사이트 표시 이름 |
DJANGO_DEBUG |
디버그 모드 (운영 환경에서는 반드시 False) |
DJANGO_SECRET_KEY |
Django 시크릿 키 |
DJANGO_ALLOWED_HOSTS |
허용 호스트 목록 (콤마 구분) |
DJANGO_CSRF_TRUSTED_ORIGINS |
CSRF 신뢰 오리진 (운영 도메인 등록) |
DJANGO_SECURE_COOKIES |
HTTPS 환경 여부에 따른 쿠키 보안 설정 |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET |
Google 소셜 로그인 키 |
NAVER_CLIENT_ID / NAVER_CLIENT_SECRET |
Naver 소셜 로그인 키 |
KAKAO_CLIENT_ID / KAKAO_CLIENT_SECRET |
Kakao 소셜 로그인 키 |
KAKAO_REST_KEY |
Kakao REST API 키 (서버용) |
KAKAO_JS_KEY |
Kakao Maps JavaScript 키 (클라이언트용) |
HeartMark/
├── config/ # Django 프로젝트 설정
├── common/ # 공통 기능
├── accounts/ # 회원 · 인증 · 소셜 로그인 · 캐릭터 · 온보딩
├── mypage/ # 마이페이지
├── locations/ # 지도 및 장소 탐색
├── records/ # 기록 작성 · 상세 · 수정 · 삭제
├── diary/ # 다이어리 목록 및 캘린더 조회
├── bgm/ # 기록별 배경음악
├── friendships/ # 친구 초대 · 요청 · 목록
├── record_sharing/ # 기록 공유(마음 편지) · 댓글
├── social_hub/ # 친구 / 공유 기록 통합 화면
├── deploy/ # EC2 배포 템플릿 (systemd, nginx)
├── docs/ # 팀 협업 문서
├── templates/ # 공통 레이아웃
├── manage.py
└── requirements.txt
각 앱의 정적 파일은 <app>/static/<app>/css/, <app>/static/<app>/js/에 둡니다.
| 문서 | 내용 |
|---|---|
docs/INTEGRATION.md |
개발 협업 규칙 |
friendships/README.md |
친구 기능 백엔드 가이드 |
deploy/README.md |
배포 가이드 |
- 서울 자치구 지도: Kurykh, Wikimedia Commons, CC BY-SA 3.0 — 수정하여 사용함
Made by Team HeartMark



