서비스 개요
본 프로젝트는 사용자의 지리적 근접성과 공유된 관심사를 기반으로 연결을 형성하는 소셜 매칭 플랫폼입니다. 사용자가 설정한 지역 범위 내에서 공통적인 취미나 목적을 가진 잠재적 파트너, 친구, 또는 협력자를 탐색할 수 있도록 설계되었습니다. 주요 타겟은 동등한 수준의 상호작용을 원하는 젊은 세대이며, 특정 모임이나 행사 장소에서의 인맥 형성을 지원합니다.
핵심 기능
- 다중 인증 지원: 이메일, 오픈 소스 라이브러리 및 대중적인 OAuth2 공급자 (예: Google) 를 통한 유연한 접근 제어.
- 지리 공간 데이터 처리: PostGIS 확장을 활용하여 사용자의 현재 위치와 대상 간의 거리를 정밀하게 계산하고 순위를 매깁니다.
- 태그 관리: django-taggit 을 기반으로 하는 사용자 정의 태그 시스템으로 세분화된 관심사 분류를 가능하게 합니다.
- 안전한 소통: 초기 접촉 시 개인 연락처 정보를 직접 노출하지 않는 중간 보호 계층을 통해 안전한 정보 교환 프로세스를 제공합니다.
- 모바일 최적화: 반응형 웹 디자인을 적용하여 다양한 디바이스에서 최적의 사용자 경험을 보장합니다.
시스템 구성 요소
사용자 데이터 lifecycle 을 관리하기 위한 모듈형 구조로 설계되었으며, 다음과 같은 주요 하위 기능을 포함합니다:
- 프로파일 관리: 단계별 등록 워크플로우와 자료 검증 절차, 공개 상태 제어 기능이 포함되어 있습니다.
- 연락망 확장: 실시간 알림뿐만 아니라 외부 SNS 연동을 통해 사용자 유지를 강화합니다.
- 보안 정책: 일일 요청 빈도 제한과 신고 시스템을 통한 커뮤니티 안전성이 확보되어 있습니다.
기술 스택
| 영역 | 기술명 |
|---|---|
| 백엔드 프레임워크 | Django 4.2 |
| 데이터베이스 | PostgreSQL (PostGIS 확장) |
| 인증 시스템 | django-allauth |
| 메시징キュー | Celery + Redis |
| 프론트엔드 UI | Bootstrap 5, Tagify.js |
| 지도 서비스 | 지도 API (Google/Mapbox 등) |
환경 구축 및 설치
서버를 성공적으로 시작하기 위해서는 적절한 런타임과 인프라가 필요합니다. 최소 요구 사항인 Python 3.8 이상과 PostgreSQL 12 이상을 사전에 준비해야 하며, Redis 서버 또한 별도 구동이 필요합니다.
# 1. 저장소 복제
git clone https://github.com/org-social/platform.git
cd platform
# 2. 가상 환경 생성 및 활성화
python -m venv .venv
source .venv/bin/activate
# 3. 의존성 패키지 설치
pip install -r requirements.txt
# 4. 환경 변수 설정 복사
cp .env.example .env
# 여기에서 민감한 설정 값을 수정하세요
데이터베이스 설정
지리적 좌표계를 지원하려면 PostgreSQL 数据库 내에 PostGIS 모듈을 활성화해야 합니다.
-- 새 데이터베이스 생성
CREATE DATABASE social_match_db;
-- 해당 데이터베이스로 접속 후 PostGIS 확장 활성화
\c social_match_db;
CREATE EXTENSION postgis;
배포 프로세스
- 데이터베이스 마이그레이션 적용:
python manage.py migrate - 관리자 계정 생성:
python manage.py createsuperuser - 테스트 서버 실행:
python manage.py runserver - 비동기 태스크 워커 가동 (별도 터미널):
celery -A project_name worker -l info - Redis 서비스 백그라운드 실행:
redis-server
디렉토리 구조
platform/
├── core_config/ # 메인 설정 파일
├── users_app/ # 인증 및 권한 관리
├── profile_app/ # 사용자 프로필 로직
├── notify_system/ # 알림 메시지 전송 모듈
├── report_module/ # 콘텐츠 신고 처리
├── templates/ # HTML 템플릿
├── static_files/ # CSS 및 JS 리소스
└── media_storage/ # 업로드된 미디어 파일
설치 및 배포 주의사항
실전 환경 배포 시에는 보안 설정이 필수적입니다. 개발 모드인 DEBUG=False 를 설정하고 허용되는 호스트 목록 (ALLOWED_HOSTS) 을 엄격히 제한해야 합니다. HTTPS 연결을 강제하며, 로그 기록을 위해 적절한 로거를 구성하는 것이 좋습니다. 컨테이너 기반 배포를 원할 경우 도커 이미지를 빌드 후 컴포즈 파일로 실행할 수 있습니다.
# docker-compose.yml 예시
services:
web:
image: social-platform:latest
command: gunicorn project.wsgi:application --bind 0.0.0.0:8000
redis:
image: redis:alpine
본 프로젝트는 오픈소스 라이선스인 GPLv3 에 따라 배포됩니다. 관련 설정 값으로는 시크릿 키, 데이터베이스 커넥션 문자열, 메일 서버 정보, 그리고 외부 맵 API 토큰 등이 필요하며, 선택 사항으로 소셜 로그인 키가 포함될 수 있습니다.