Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 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 마다 실행.
비공개 / 상업용.