광주소프트웨어마이스터고 VM 신청·관리 플랫폼의 백엔드.
- FastAPI
- SQLAlchemy
- PostgreSQL / SQLite
- Pydantic Settings
- JWT 인증
- Proxmox API / Paramiko
api/routes/API 라우트 모음core/설정, DB, 보안, 공통 초기화models/SQLAlchemy 모델schemas/요청·응답 스키마services/VM, 네트워크, 메일, 외부 서비스 로직tests/테스트 코드main.pyFastAPI 앱 진입점start.ps1/start.bat로컬 실행 스크립트
이 백엔드는 GSMSV/frontend 와 함께 동작합니다.
프론트엔드는 /api/* 요청을 이 백엔드로 프록시하고, 백엔드는 로그인 시 access_token, refresh_token 을 httpOnly 쿠키로 내려줍니다. 따라서 로컬에서는 백엔드를 http://localhost:8000, 프론트엔드를 http://localhost:3000 기준으로 맞춰 두면 바로 연동할 수 있습니다.
기본 관련 환경 변수:
CORS_ORIGINS=["http://localhost:3000"]FRONTEND_URL=http://localhost:3000OAUTH_REDIRECT_URI=http://localhost:3000/api/v1/oauth/callback
.env.example 을 .env 로 복사한 뒤 필수 값을 채웁니다.
Copy-Item .env.example .env필수값이 비어 있으면 서버가 시작되지 않습니다.
SECRET_KEYGATEWAY_IPGATEWAY_USERSMTP_USERSMTP_PASSWORDDATAGSM_API_KEY
SECRET_KEY 예시:
python -c "import secrets; print(secrets.token_urlsafe(64))"가장 간단한 방식:
.\start.bat또는
powershell -ExecutionPolicy Bypass -File .\start.ps1수동 실행:
python -m venv .venv
.\.venv\Scripts\python -m pip install -r requirements.txt
.\.venv\Scripts\python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000실행 후 주소:
- API: http://localhost:8000
- Swagger: http://localhost:8000/docs
- 프론트 로그인 요청이
/api/v1/auth/login으로 들어옵니다. - 백엔드가 사용자 검증 후
access_token과refresh_token쿠키를 설정합니다. - 프론트는
/api/v1/auth/me로 현재 사용자 정보를 조회합니다. - Access token 이 만료되면
/api/v1/auth/refresh로 재발급합니다. - 로그아웃 시 인증 쿠키를 제거합니다.
OAuth 로그인 흐름은 api/routes/oauth.py 에서 처리하며, DataGSM OAuth 와 임시 코드 교환 방식으로 연결됩니다.
커밋 메시지:
type: 한국어 설명- 예:
feat: 로그인 응답 쿠키 처리 수정 - 타입 예시:
feat,fix,update,add,docs,style,refactor,test,perf,merge
브랜치 흐름:
develop에서 작업 브랜치 분기- 작업 후 PR 을 통해
develop으로 병합 main직접 push 금지
로컬 개발 서버:
.\start.bat도커 빌드:
docker build -t gsmsv-backend .테스트:
.\.venv\Scripts\python -m pytest