API 서버 (선택)
팀마다 배포 칸이 두 개입니다.
| 칸 | 주소 | 언제 |
|---|---|---|
| 메인 | teamNN.hack26.act.club |
항상 |
| API 서버 | teamNN-api.hack26.act.club |
백엔드를 분리할 때만 |
프론트만 있으면 메인 하나로 충분합니다. 안 쓰는 팀은 그냥 두면 됩니다 — 비워둬도 아무 문제 없습니다.
알아둘 것
섹션 제목: “알아둘 것”- 두 앱은 완전히 분리된 서버입니다. 파일도 메모리도 공유하지 않습니다.
- 각각 따로 zip 을 올립니다. 업로드 간격(2분)도 칸마다 따로 셉니다.
- 데이터베이스는 두 앱이 같은 것을 공유합니다.
CORS 를 열어야 합니다
섹션 제목: “CORS 를 열어야 합니다”도메인이 다르므로 브라우저가 기본적으로 요청을 막습니다. API 쪽에서 메인 도메인을 허용해야 합니다.
app.use((req, res, next) => { res.setHeader('Access-Control-Allow-Origin', 'https://teamNN.hack26.act.club'); res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); if (req.method === 'OPTIONS') return res.sendStatus(204); next();});from fastapi.middleware.cors import CORSMiddleware
app.add_middleware( CORSMiddleware, allow_origins=["https://teamNN.hack26.act.club"], allow_methods=["*"], allow_headers=["*"],)프론트에서 부를 때
섹션 제목: “프론트에서 부를 때”const API = 'https://teamNN-api.hack26.act.club';const res = await fetch(`${API}/items`);주소를 코드에 직접 박기보다 환경변수로 빼두면 로컬 개발과 배포를 같이 쓰기 편합니다.