Lalabase
티켓·문서·근무시간·고객대화를 한 곳에 모아 KI로 검색, 소프트웨어 기업 고객 프로젝트용, 오픈소스로 자체 서버·독일 클라우드에 배포
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
반려동물 해외 이동 검역 사업의 별도 두 앱: • 펫무브워크 (apps/admin) — 동물병원·에이전시 스태프용 B2B SaaS 웹앱. 현재 prod 운영 중. • 펫무브 / PETMOVE (apps/portal) — 보호자(고객)용 B2C 유료 모바일 앱. 웹(petmove.co.kr) + iOS/Android 네이티브(Capacitor remote URL). 베타 출시 직전. DB·인증·도메인 규칙만 공유. UI·server actions·도메인 모델은 분리. 한 앱의 코드를 다른 앱에서 직접 import 하지 않는다. 폴더별 작업 룰은 apps/admin/CLAUDE.md / apps/portal/CLAUDE.md. .env.local 3개 필요 (gitignored): • apps/admin/.env.local • apps/portal/.env.local • (없으면 dev 서버 부팅 시 Supabase env 누락 에러) apps/ /.env.example 참고. Supabase 공개 키 + service role 필요.README 전문 보기 ↗
반려동물 해외 이동 검역 사업의 별도 두 앱:
apps/admin) — 동물병원·에이전시 스태프용 B2B SaaS 웹앱. 현재 prod 운영 중.apps/portal) — 보호자(고객)용 B2C 유료 모바일 앱. 웹(petmove.co.kr) + iOS/Android 네이티브(Capacitor remote URL). 베타 출시 직전.DB·인증·도메인 규칙만 공유. UI·server actions·도메인 모델은 분리. 한 앱의 코드를 다른 앱에서 직접 import 하지 않는다. 폴더별 작업 룰은 apps/admin/CLAUDE.md / apps/portal/CLAUDE.md.
petmove/
├── apps/
│ ├── admin/ Next.js 16 — B2B 스태프 콘솔 (현재 prod)
│ └── portal/ Next.js 16 + Capacitor — B2C 보호자 앱
│ · 웹: https://petmove.co.kr (예정)
│ · iOS/Android: 앱스토어 (com.petmove.portal)
├── packages/
│ ├── auth/ @petmove/auth — Supabase browser/server/admin 클라이언트
│ │ · 서브패스: `.` (브라우저+admin), `./server` (next/headers 의존)
│ ├── domain/ @petmove/domain — 도메인 로직·타입·데이터
│ │ · procedure-checks, destination-config, fields, share-*
│ │ · /data/*.json (breeds, colors, destinations)
│ └── ui/ @petmove/ui — 공용 UI primitives
│ · PageShell, ListRow, PillButton, DateTextField, Calendar, ...
├── supabase/migrations/ 93개 SQL 마이그 — Seoul 프로젝트 (ugywxiyivfzflqkcnqvu)
├── scripts/
│ ├── lint-rls.mjs RLS 무한 재귀 (42P17) 사전 검출
│ ├── lint-all.mjs turbo lint + lint-rls 통합
│ └── backfill-case-customer-links.mjs 기존 케이스 ↔ 보호자 이메일 매칭 백필
├── docs/
│ ├── portal-plan.md Phase 11.0 portal 개발 계획 단일 출처
│ ├── portal-deploy-checklist.md Vercel + Capacitor + App Store/Play 배포 매뉴얼
│ ├── saas-migration.md 전체 SaaS 전환 로드맵
│ ├── design-system.md Editorial 디자인 토큰
│ └── legal/{terms,privacy}.md 약관·개인정보처리방침 (1차 초안)
└── .github/workflows/ci.yml push/PR 마다 lint (eslint + RLS) + tsc 자동
git clone https://github.com/off2030/petmove.git
cd petmove
pnpm install
pnpm db:link # Supabase Seoul 프로젝트 연결
.env.local 3개 필요 (gitignored):
apps/admin/.env.localapps/portal/.env.localapps/<app>/.env.example 참고. Supabase 공개 키 + service role 필요.
pnpm --filter @petmove/admin dev # admin → localhost:3001
pnpm --filter @petmove/portal dev # portal → localhost:3002
pnpm build # turbo build (admin + portal)
pnpm lint # turbo lint (eslint) + lint:rls 둘 다 항상 실행
pnpm lint:rls # RLS 재귀 정적 분석 단독 실행
pnpm exec tsc --noEmit -p apps/admin # 패키지별 타입체크
pnpm db:diff # 로컬 ↔ 원격 스키마 차이 미리보기
pnpm db:push # 마이그 적용 (운영 DB)
pnpm db:reset # 로컬 supabase 만 — 원격 영향 X
cd apps/portal
pnpm cap:sync # 웹 → native 동기화
pnpm cap:open:android # Android Studio 열림
pnpm cap:open:ios # macOS 에서만 — Xcode 열림
pnpm backfill:case-links # dry-run (변경 X)
pnpm backfill:case-links:apply # 실제 INSERT
com.petmove.portal (등록 전 임시. Apple Dev 가입 후 등록 시도)pnpm exec cap add ios 한 번 실행 필요@petmove/auth 서브패스 분리client component 가 @petmove/auth 만 import 해도 Next 가 server.ts (next/headers
의존) 를 client bundle 에 끌고 가서 build 실패. exports 를 두 개로 분리:
@petmove/auth — browser + admin 클라이언트@petmove/auth/server — createClient (서버 전용, next/headers)자세히: packages/auth/README.md.
정책 본문에 inline from public.<other_table> subquery 가 있고 그 테이블 정책도
원래 테이블을 같은 패턴으로 참조하면 Postgres 가 무한 평가 → SSR 500.
해결: 교차 테이블 체크를 SECURITY DEFINER 함수로 우회 (is_org_member,
is_case_customer 등 패턴). 사례:
supabase/migrations/20260511000001_fix_cases_customer_rls_recursion.sql.
예방: pnpm lint:rls 가 양방향 사이클 자동 검출. CI 가 push 마다 실행.
비공개 / 상업용.