위치 기반 관심사 매칭 소셜 네트워크 서비스 기술 개요

서비스 개요

본 프로젝트는 사용자의 지리적 근접성과 공유된 관심사를 기반으로 연결을 형성하는 소셜 매칭 플랫폼입니다. 사용자가 설정한 지역 범위 내에서 공통적인 취미나 목적을 가진 잠재적 파트너, 친구, 또는 협력자를 탐색할 수 있도록 설계되었습니다. 주요 타겟은 동등한 수준의 상호작용을 원하는 젊은 세대이며, 특정 모임이나 행사 장소에서의 인맥 형성을 지원합니다.

핵심 기능

  • 다중 인증 지원: 이메일, 오픈 소스 라이브러리 및 대중적인 OAuth2 공급자 (예: Google) 를 통한 유연한 접근 제어.
  • 지리 공간 데이터 처리: PostGIS 확장을 활용하여 사용자의 현재 위치와 대상 간의 거리를 정밀하게 계산하고 순위를 매깁니다.
  • 태그 관리: django-taggit 을 기반으로 하는 사용자 정의 태그 시스템으로 세분화된 관심사 분류를 가능하게 합니다.
  • 안전한 소통: 초기 접촉 시 개인 연락처 정보를 직접 노출하지 않는 중간 보호 계층을 통해 안전한 정보 교환 프로세스를 제공합니다.
  • 모바일 최적화: 반응형 웹 디자인을 적용하여 다양한 디바이스에서 최적의 사용자 경험을 보장합니다.

시스템 구성 요소

사용자 데이터 lifecycle 을 관리하기 위한 모듈형 구조로 설계되었으며, 다음과 같은 주요 하위 기능을 포함합니다:

  • 프로파일 관리: 단계별 등록 워크플로우와 자료 검증 절차, 공개 상태 제어 기능이 포함되어 있습니다.
  • 연락망 확장: 실시간 알림뿐만 아니라 외부 SNS 연동을 통해 사용자 유지를 강화합니다.
  • 보안 정책: 일일 요청 빈도 제한과 신고 시스템을 통한 커뮤니티 안전성이 확보되어 있습니다.

기술 스택

영역기술명
백엔드 프레임워크Django 4.2
데이터베이스PostgreSQL (PostGIS 확장)
인증 시스템django-allauth
메시징キューCelery + Redis
프론트엔드 UIBootstrap 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;

배포 프로세스

  1. 데이터베이스 마이그레이션 적용: python manage.py migrate
  2. 관리자 계정 생성: python manage.py createsuperuser
  3. 테스트 서버 실행: python manage.py runserver
  4. 비동기 태스크 워커 가동 (별도 터미널): celery -A project_name worker -l info
  5. 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 토큰 등이 필요하며, 선택 사항으로 소셜 로그인 키가 포함될 수 있습니다.

태그: Django PostgreSQL PostGIS celery Redis

9월 12일 01:59에 게시됨