Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
easy code file
翻訳待ち
Loading the full README. The saved excerpt is shown below.
• 견적서 → 주문서 → 거래명세서: 무료, 이전 문서 내용을 그대로 불러와 다음 문서를 만듭니다("변환" 버튼). • 세금계산서 발행(팝빌 연동): 선불로 충전한 포인트 지갑에서 건당 포인트가 차감됩니다. • 여러 도소매업체가 각자 가입해서 쓰는 구조(멀티테넌트)이며, 업체별 데이터는 Supabase RLS로 격리됩니다. • 포인트 충전은 무통장입금 신청 → 관리자 승인 방식입니다 (PG 카드결제 연동 전 기본 흐름). 팝빌 SecretKey는 브라우저에 노출되면 안 되므로, 세금계산서 발행만 backend를 거칩니다. 그 외 모든 데이터(회사정보/거래처/품목/문서/포인트지갑)는 프론트엔드가 Supabase에 직접 접근합니다(RLS로 보호). 1. https://supabase.com 에서 새 프로젝트 생성 2. 프로젝트의 SQL Editor에서 supabase/schema.sql 전체 내용을 붙여넣고 실행 3. Project Settings → API 에서 다음 값을 복사해둡니다 • Project URL • anon public 키 (프론트엔드용) • service_role 키 (백엔드 전용, 절대 프론트엔드에 넣지 마세요)Read the full README ↗
도소매업 사업자를 위한 견적서 · 주문서 · 거래명세서 · 세금계산서 발급 서비스.
BirdieBill/
├─ frontend/ React(Vite) + Tailwind + Supabase Auth/DB
├─ backend/ Node/Express, 팝빌 SecretKey를 들고 있는 유일한 서버
└─ supabase/schema.sql DB 스키마 + RLS + 지갑 관련 함수
팝빌 SecretKey는 브라우저에 노출되면 안 되므로, 세금계산서 발행만 backend를 거칩니다. 그 외 모든 데이터(회사정보/거래처/품목/문서/포인트지갑)는 프론트엔드가 Supabase에 직접 접근합니다(RLS로 보호).
supabase/schema.sql 전체 내용을 붙여넣고 실행Project URLanon public 키 (프론트엔드용)service_role 키 (백엔드 전용, 절대 프론트엔드에 넣지 마세요)User UID를 복사update public.profiles set is_admin = true where id = '복사한-UID';
cd backend
cp .env.example .env # 이미 .env 파일이 있다면 값만 채우면 됩니다
.env에 다음을 채웁니다:
| 변수 | 설명 |
|---|---|
POPBILL_LINK_ID, POPBILL_SECRET_KEY | 팝빌 연동 계정 정보 (이미 입력되어 있음) |
POPBILL_CORP_NUM | 필수 — 팝빌에 연동회원으로 가입된 우리 회사(공급자)의 사업자등록번호(하이픈 제외 10자리). 이게 없으면 발행이 되지 않습니다. |
POPBILL_IS_TEST | 테스트: true, 실제 발행(과금 발생): false |
POPBILL_ISSUE_PRICE | 세금계산서 1건 발행마다 입점업체 포인트 지갑에서 차감할 금액(원). 기본 200 |
SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY | 위 1단계에서 복사한 값 |
PORT | 기본 3002 (이 PC에서 3001을 다른 프로세스가 이미 쓰고 있어 3002로 지정했습니다) |
실행:
npm install # 최초 1회
npm run dev
http://localhost:3002/api/health 가 {"ok":true} 를 반환하면 정상입니다.
cd frontend
cp .env.example .env
.env에 Supabase Project URL / anon public 키를 채웁니다.
실행:
npm install # 최초 1회
npm run dev
http://localhost:5173 접속.
POPBILL_CORP_NUM에 테스트용 사업자번호를 넣고 POPBILL_IS_TEST=true로 발행 테스트를 해보세요.POPBILL_IS_TEST=false 로 변경합니다.wallets.balance는 우리 서비스가 입점 업체에게 받는 이용요금입니다.기존 Birdie-Bill-Restored-Final.html(단일 파일 프로토타입)에서 "사업자등록증 PDF 업로드해도 칸이 안 채워지는" 문제의 원인은 PDF 텍스트 추출 시 줄바꿈 정보 없이 페이지 전체를 한 줄로 이어붙여서, 상호/대표자/주소 등을 줄 단위로 구분하는 정규식이 전부 실패했기 때문입니다.
frontend/src/lib/bizCardExtract.ts에서 각 텍스트 조각의 y좌표로 줄을 복원하도록 고쳤고, 라벨 뒤 값 추출 정규식의 교대(alternation) 우선순위 버그도 함께 고쳤습니다.
taxinvoiceService.sendEmail)은 아직 연결하지 않았습니다.