Installation
명령어 한 줄로 프로젝트를 만들고 로컬에서 실행합니다.
새 프로젝트라면 아래 Create a project 두 단계면 충분합니다. 기존 프로젝트에 붙이려면 Existing project를 보세요.
Requirements
| 도구 | 버전 | 확인 명령 |
|---|---|---|
| Node.js | 20 이상 | node -v |
| Python | 3.12 이상 | python3 --version |
| uv | 최신 | uv --version |
| Docker | 실행 중이어야 함 | docker info |
Create a project
폴더 구조만 생성합니다. 이 단계에서는 설치나 실행을 하지 않습니다.
npx create-meerkit my-app프로젝트 안으로 이동해 세팅을 실행합니다. 의존성 설치, 환경 변수 생성, DB 실행, 마이그레이션, 서버 실행까지 한 번에 진행됩니다.
bash
cd my-app
npx @snackcup/meerkit setupWhat setup does
- Node, Python, uv, Docker가 있는지 확인합니다. 없으면 설치 안내 후 멈춥니다.
frontend에서npm install을 실행합니다.backend에서uv sync를 실행합니다..env.example을.env로 복사하고 JWT 비밀키를 생성합니다. 이미 있으면 덮어쓰지 않습니다.docker compose up -d --wait로 로컬 DB를 띄웁니다.- Alembic 마이그레이션을 적용하고 시드 관리자 계정을 만듭니다.
- 백엔드와 프론트엔드 서버를 시작하고 접속 주소를 출력합니다.
각 단계는 한 줄로 진행 상황을 보여 주고, 전체 로그는 meerkit-setup.log에 저장됩니다. 다시 실행해도 안전합니다(이미 끝난 단계는 건너뜁니다).
Local URLs
| 서비스 | 주소 |
|---|---|
| Frontend | http://localhost:3000 |
| Backend API 문서 | http://localhost:8000/docs |
| PostgreSQL | localhost:5432 |
Environment variables
프론트엔드 frontend/.env에서 설정합니다. 운영 환경에 올릴 때의 값은 Deployment 페이지를 보세요.
| 변수 | 기본값 | 설명 |
|---|---|---|
NEXT_PUBLIC_API_BASE_URL | /api | 브라우저가 호출할 API 경로. next.config의 프록시가 백엔드로 전달합니다. |
API_PROXY_TARGET | http://localhost:8000 | 프록시가 전달할 백엔드 주소. |
NEXT_PUBLIC_DOCS_URL | /docs | 웰컴 페이지 Docs 링크(새 창). 문서를 따로 배포했다면 그 주소. |
NEXT_PUBLIC_GITHUB_URL | 저장소 주소 | 문서 상단 GitHub 버튼. |
NEXT_PUBLIC_SHOW_DOCS_PAGE | true | 이 문서(/docs) 라우트를 열지 여부. 운영에서는 false로 닫는 것을 권장합니다. |
Existing project
이미 있는 Next.js 프로젝트에 킷의 프론트 부분만 가져오려면 다음 순서로 진행합니다.
- Tailwind v4와 shadcn/ui를 설정합니다.
components.json의hooks별칭은@/meerkit/auth로 둡니다. - 필요한 패키지를 설치합니다.
src/meerkit/과src/components/ui/를 복사합니다.- 루트 레이아웃을
<MeerkitProvider>로 감쌉니다. - 토큰 파일을
globals.css에서 불러옵니다.
bash
npm install zustand @tanstack/react-query axios radix-ui \
class-variance-authority clsx tailwind-merge lucide-react sonnerapp/layout.tsx
import { MeerkitProvider } from "@/meerkit";
export default function RootLayout({ children }) {
return (
<html lang="ko">
<body>
<MeerkitProvider>{children}</MeerkitProvider>
</body>
</html>
);
}app/globals.css
@import "tailwindcss";
@import "../meerkit/styles/tokens.css";Troubleshooting
| 증상 | 원인 | 해결 |
|---|---|---|
| Docker에 연결할 수 없음 | Docker Desktop이 꺼져 있음 | Docker를 실행한 뒤 setup을 다시 실행 |
| 포트 충돌 (3000/8000/5432) | 다른 프로세스가 사용 중 | 해당 프로세스를 종료하거나 포트를 변경 |
| Node 버전 부족 | Node 20 미만 | Node를 업그레이드 |
| uv 명령 없음 | uv 미설치 | uv를 설치한 뒤 다시 실행 |
| DB 연결 실패 | 컨테이너가 아직 준비 중 | 잠시 뒤 setup을 다시 실행 |
