React + TypeScript + Vite 기반의 용병 매칭 프론트엔드입니다.
지도 기반으로 경기 모집글을 조회하고, 로그인 후 모집글 작성, 참가 신청, 신청자 관리, 마이페이지 기반 내 게시글 관리를 할 수 있습니다.
- Node.js 18 이상 권장
- npm 사용
npm installnpm run dev기본 개발 주소:
http://localhost:5173npm run lintnpm run build프론트는 아래 백엔드 API를 기준으로 동작합니다.
POST /api/auth/kakaoPOST /api/auth/dev-loginGET /api/matches/nearbyPOST /api/matchesGET /api/matches/{matchId}POST /api/matches/{matchId}/applyGET /api/matches/{matchId}/application/meGET /api/matches/{matchId}/applicationsPATCH /api/matches/{matchId}/applications/{applicationId}GET /api/matches/my
인증 응답 규약:
{
"code": "SUCCESS",
"message": "로그인 성공",
"data": {
"accessToken": "jwt-token",
"memberId": 1,
"nickname": "mercenary-user"
}
}개발용 로그인 엔드포인트는 환경변수로 변경할 수 있습니다.
VITE_DEV_LOGIN_ENDPOINT=/api/auth/dev-login배포 환경에서는 프론트가 직접 호출할 API 베이스 주소를 지정할 수 있습니다.
VITE_API_BASE_URL=https://api.example.com
VITE_DEV_LOGIN_ENDPOINT=/api/auth/dev-login개발 환경에서 Vite 프록시 대상을 바꾸려면 아래 값을 사용할 수 있습니다.
VITE_API_PROXY_TARGET=http://127.0.0.1:8080- 현재 위치 또는 검색 지역 기준 주변 경기 조회
- 지도 마커 및 목록 형태로 모집글 확인
- 모집글 상세 모달 진입
관련 코드:
- 카카오 OAuth 로그인 콜백 처리
- 개발 환경용 테스트 로그인 지원
- 로그인 상태를
localStorage+ auth change 이벤트로 동기화
관련 코드:
- 제목, 내용, 시간, 모집 인원 입력
- 카카오 지도/검색 기반 장소 선택
관련 코드:
- 로그인 사용자의 참가 신청
- 작성자의 신청자 목록 조회
- 승인/거절 처리
관련 코드:
- 로그인 사용자가 작성한 모집글 목록 조회
- 게시글별 신청자 목록 펼침
- 마이페이지 안에서 신청 승인/거절 처리
관련 코드:
src/
components/
MatchCreateForm.css
MatchDetail.tsx
MatchDetailModal.tsx
MatchList.tsx
MatchMap.tsx
pages/
Login.tsx
LoginCallback.tsx
MainBoard.tsx
MatchCreateForm.tsx
MyMatchesPage.tsx
utils/
auth.ts
matchApi.ts
App.tsx
main.tsx
index.css
- API 응답의
data필드를 우선 기준으로 파싱합니다. - 인증 토큰 저장/삭제는
src/utils/auth.ts를 통해 처리합니다. - 마이페이지는
GET /api/matches/my를 기준으로 동작합니다. - 신청자 관련 포맷팅 및 응답 파싱은
src/utils/matchApi.ts를 재사용합니다. - 대규모 포맷 변경보다 필요한 범위만 수정하는 방향을 우선합니다.
PowerShell 실행 정책 때문에 npm.ps1이 막히면 아래처럼 npm.cmd를 사용합니다.
npm.cmd run lint
npx.cmd tsc -b- 브라우저
localStorage에accessToken저장 여부 확인 /api/auth/kakao,/api/auth/dev-login응답이data.accessToken형태인지 확인/api/matches/my호출 시401/403/500상태코드 확인
- 백엔드가
GET /api/matches/my에서200 + []를 반환하는지 확인 - 작성자 기준 조회가 로그인 사용자
memberId와 정확히 매핑되는지 확인
- 로컬 환경 또는 보안 정책에서 Vite/rolldown의 프로세스 실행이 막힐 수 있습니다.
- 이 경우 먼저 아래 명령으로 타입 체크를 분리해서 확인합니다.
npx.cmd tsc -b현재 README는 실제 프로젝트 구조와 최근 추가된 마이페이지/인증 흐름을 기준으로 작성되었습니다.