마이플레이컴퍼니의 플랩풋볼 서비스를 모티브로 한 축구 매칭 플랫폼 클론 프로젝트입니다. 이 프로젝트는 백엔드 개발자 포트폴리오 목적으로 개발됩니다.
- 백엔드: Python, Django REST Framework
- 프론트엔드: Vue.js 3, Vuex, Vue Router
- 데이터베이스: PostgreSQL
- 인프라: Docker, AWS (EC2, RDS, ECR)
- CI/CD: GitHub Actions
- 축구 매칭 서비스의 핵심 기능 정의
- 사용자 스토리 작성
- MVP 범위 설정
- 백엔드, 프론트엔드, 인프라 기술 스택 결정
- 개발 환경 설계
- ERD 작성
- 테이블 관계 정의
- 인덱스 설계
forplab/
├── backend/ # Django 프로젝트
├── frontend/ # Vue.js 프로젝트
├── docker-compose.yml # 개발 환경 설정
├── .github/ # GitHub Actions
└── README.md
- 백엔드 Dockerfile
- 프론트엔드 Dockerfile
- docker-compose.yml
- Django 프로젝트 생성
- Vue.js 프로젝트 생성
- 버전 관리 설정
- users 앱: 사용자 관리
- matches 앱: 매치 관리
- venues 앱: 구장 관리
- teams 앱: 팀 관리
- 사용자 모델 (User)
- 매치 모델 (Match)
- 구장 모델 (Venue)
- 팀 모델 (Team)
- 참가 모델 (Participation)
- 사용자 인증 API (JWT 기반)
- 매치 CRUD API
- 구장 정보 API
- 매치 참가 API
- 팀 관리 API
- 매칭 알고리즘
- 레이팅 시스템
- 예약 시스템
- 컴포넌트 설계
- Vuex 스토어 설정
- 라우팅 설정
- 로그인/회원가입
- 매치 목록/상세
- 구장 목록/상세
- 프로필 관리
- 매치 참가 신청
- Axios를 사용한 백엔드 API 연동
- 인증 토큰 관리
- 멀티스테이지 빌드 설정
- 보안 강화
- ECR 레포지토리 생성
- ECS/Fargate 설정
- RDS 데이터베이스 설정
- GitHub Actions 워크플로우 설정
- 자동 테스트 및 배포
- 단위 테스트
- 통합 테스트
- API 문서 (Swagger)
- README 작성
- 아키텍처 다이어그램
- 기술적 도전과 해결책
- 배운 점과 개선할 점
- 주요 기능 시연
- 기술적 특징 설명
- 회원가입/로그인
- 프로필 관리
- 레이팅 시스템
- 매치 생성/조회/수정/삭제
- 매치 참가 신청
- 매치 결과 등록
- 구장 정보 조회
- 구장 예약 시스템
- 팀 생성/조회/수정/삭제
- 팀원 관리
- 팀 매치 관리
- Docker & Docker Compose
- Git
# 레포지토리 클론
git clone <repository-url>
cd forplab
# Docker 컨테이너 실행
docker-compose up -d
# 백엔드 마이그레이션
docker-compose exec backend python manage.py migrate
# 개발 서버 접속
# 백엔드: http://localhost:8000
# 프론트엔드: http://localhost:8080- AWS IAM 사용자 생성 (ECR, ECS 권한)
- GitHub Secrets 설정
- ECR 레포지토리 생성
- ECS 클러스터 및 서비스 설정
# main 브랜치에 푸시하면 자동 배포
git push origin main- main: 배포 브랜치
- develop: 개발 브랜치
- feature/*: 기능 개발 브랜치
- GitHub Issues 활용
- 작업 단위로 이슈 생성
- PR과 이슈 연결